?? 第6章(2).txt
字號:
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){}
}
public void setKeyword(String s)
{keyword=s;
try{byte b[]=keyword.getBytes("ISO-8859-1");
keyword=new String(b);
}
catch(Exception e)
{ }
}
public StringBuffer byKeywordInquire()
{ String number,xingming;
Connection con=null;
Statement sql=null;
ResultSet rs=null;
StringBuffer buffer=new StringBuffer();
int math,english,physics;
try{ con=DriverManager.getConnection("jdbc:odbc:sun","sa","");
sql=con.createStatement();
String condition="SELECT * FROM students WHERE 學號 = "+"'"+keyword+"'";
rs=sql.executeQuery(condition);
buffer.append("<Table Border>");
buffer.append("<TR>");
buffer.append("<TH width=100>"+"學號");
buffer.append("<TH width=100>"+"姓名");
buffer.append("<TH width=50>"+"數(shù)學成績");
buffer.append("<TH width=50>"+"英語成績");
buffer.append("<TH width=50>"+"物理成績");
buffer.append("</TR>");
while(rs.next())
{ buffer.append("<TR>");
number=rs.getString(1);
buffer.append("<TD >"+number+"</TD>");
xingming=rs.getString(2);
buffer.append("<TD >"+xingming+"</TD>");
math=rs.getInt("數(shù)學成績");
buffer.append("<TD >"+math+"</TD>");
english=rs.getInt("英語成績");
buffer.append("<TD >"+english+"</TD>");
physics=rs.getInt("物理成績");
buffer.append("<TD >"+physics+"</TD>");
buffer.append("</TR>") ;
}
buffer.append("</Table>");
con.close();
return buffer;
}
catch(SQLException e)
{return new StringBuffer("無法建立查詢");
}
}
}
通過主關(guān)鍵字查詢記錄的頁面(效果如圖6.28所示)
byKeyword.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="DataBaseInquire" %>
<HTML>
<BODY ><Font size=1>
<Font size=1>
<FORM action="byKeyword.jsp" Method="post" 1>
<P>成績查詢
<P>輸入學號:
<Input type=text name="keyword">
<Input type=submit name="g" value="提交">
</Form>
<jsp:useBean id="database" class="DataBaseInquire" scope="request" >
</jsp:useBean>
<jsp:setProperty name= "database" property="keyword" param="keyword" />
<P>查詢到記錄:<BR>
<% StringBuffer b=database.byKeywordInquire();
%>
<%=b%>
</Body>
</HTML>
GuessNumber.java:
public class GuessNumber
{ int answer=0, //實際答案。
guessNumber=0, //客戶猜測的數(shù)。
guessCount=0; //客戶猜到正確答案之前所用的次數(shù)。
String result=null;
public void setAnswer(int n)
{ answer=n;
guessCount=0;
}
public int getAnswer()
{return answer;
}
public void setGuessNumber(int n)
{ guessNumber=n;
guessCount++;
if(guessNumber==answer)
result="恭喜,猜對了";
else if(guessNumber>answer)
result="猜大了";
else if(guessNumber<answer)
result="猜小了";
}
public int getGuessNumber()
{return guessNumber;
}
public int getGuessCount()
{return guessCount;
}
public String getResult()
{return result;
}
}
獲取一個隨機數(shù)頁面(效果如圖6.29所示)
getNumber.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="GuessNumber" %>
<HTML>
<BODY>
<% int n=(int)(Math.random()*100)+1;%>
<jsp:useBean id="guess" class="GuessNumber" scope="session" >
</jsp:useBean>
<jsp:setProperty name= "guess" property="answer" value="<%=n%>" />
<p>隨機給你一個1到100之間的數(shù),請猜測這個數(shù)是多少?
<% String str=response.encodeRedirectURL("guess.jsp");
%>
<Form action="<%=str%>" method=post >
<BR>輸入你的猜測 <Input type=text name="guessNumber">
<Input type=submit value="提交">
</FORM>
</BODy>
猜數(shù)頁面(效果如圖6.30所示)
guess.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="GuessNumber" %>
<HTML>
<BODY>
<jsp:useBean id="guess" class="GuessNumber" scope="session" >
</jsp:useBean>
<jsp:setProperty name= "guess" property="guessNumber" param="guessNumber" />
<BR>
<jsp:getProperty name= "guess" property="result" />
<br>這是第
<jsp:getProperty name= "guess" property="guessCount" />
猜
<BR>你給出的數(shù)是
<jsp:getProperty name= "guess" property="guessNumber" />
<% String str=response.encodeRedirectURL("guess.jsp");
%>
<Form action="<%=str%>" method=post >
<BR>再輸入你的猜測 <Input type=text name="guessNumber">
<Input type=submit value="提交">
</FORM>
<% String str1=response.encodeRedirectURL("getNumber.jsp");
%>
<BR><FORM action="<%=str1%>" method="post" name="f">
<Input type="submit" value="重新玩">
</FORM>
</BODy>
</HTML>
Test.java:
import java.io.*;
public class Test
{ String filename="", //存放考題文件名字的字符串。
correctAnswer="", //存放正確答案的字符串。
//存放試題和客戶提交的答案的字符串:
testContent="" ,
selection="" ;
int score=0; //考試者的得分。
File f=null;
FileReader in=null;
BufferedReader buffer=null;
public void setFilename(String name)
{ filename=name;
//當選擇了新的考題文件后,將用戶的答案字符串清空,
//將分數(shù)設為0:
score=0;
selection="";
//讀取試題文件的第一行:標準答案
try { f=new File("F:/2000",filename);
in=new FileReader(f);
buffer=new BufferedReader(in);
correctAnswer=(buffer.readLine()).trim();//讀取一行,去掉前后空格。
}
catch(Exception e)
{testContent="沒有選擇試題";
}
}
public String getFilename()
{ return filename;
}
public String getTestContent() //獲取試題的內(nèi)容
{ try { String s=null;
StringBuffer temp=new StringBuffer();
if(buffer!=null) //如果客戶選擇了試題文件,buffer就不是空對象。
{while((s=buffer.readLine())!=null) //繼續(xù)取某個試題。
{ if(s.startsWith("**")) //試題結(jié)束標志。
break;
//為了能顯示原始的HTML或JSP文件考題內(nèi)容需使用回壓流技術(shù):
s=getString(s+"\n");
temp.append(s);
if(s.startsWith("endend")) //試題文件結(jié)束標志。
{ in.close(); //關(guān)閉和文件的連接。
buffer.close();
}
testContent=new String(temp);
}
}
else
{ testContent=new String("沒有選擇試題");
}
}
catch(Exception e)
{ testContent="試題無內(nèi)容,考試結(jié)束了!!";
}
return testContent;
}
public void setSelection(String s)
{
selection=selection+s; //將用戶提交的答案依次尾加到selection。
}
public int getScore()
{ int i=selection.length()-1; //客戶提交的第i題答案在selection中的位置。
int m=correctAnswer.length();
if(i<=m-1)
{ try{ //判定分數(shù):
if(selection.charAt(i)==correctAnswer.charAt(i))
score++;
}
catch(StringIndexOutOfBoundsException e)
{ i=0;
}
}
return score;
}
//對字符串進行處理的方法:
public String getString(String content)
{try{ StringReader in=new StringReader(content) ;//指向字符串的字符流。
PushbackReader push=new PushbackReader(in); //回壓流
StringBuffer stringbuffer=new StringBuffer(); //緩沖字符串對象。
int c;
char b[]=new char[1];
while ( (c=push.read(b,0,1))!=-1)//讀取1個字符放入字符數(shù)組b。
{ String s=new String(b);
if(s.equals("<")) //回壓的條件
{ push.unread('&');
push.read(b,0,1); //push讀出被回壓的字符字節(jié),放入數(shù)組b.
stringbuffer.append(new String(b));
push.unread('L');
push.read(b,0,1); //push讀出被回壓的字符字節(jié),放入數(shù)組b.
stringbuffer.append(new String(b));
push.unread('T');
push.read(b,0,1); //push讀出被回壓的字符字節(jié),放入數(shù)組b.
stringbuffer.append(new String(b));
}
else if(s.equals(">")) //回壓的條件
{ push.unread('&');
push.read(b,0,1); //push讀出被回壓的字符字節(jié),放入數(shù)組b.
stringbuffer.append(new String(b));
push.unread('G');
push.read(b,0,1); //push讀出被回壓的字符字節(jié),放入數(shù)組b.
stringbuffer.append(new String(b));
push.unread('T');
push.read(b,0,1); //push讀出被回壓的字符字節(jié),放入數(shù)組b.
stringbuffer.append(new String(b));
}
else if(s.equals("\n"))
{ stringbuffer.append("<BR>");
}
else
{ stringbuffer.append(s);
}
}
push.close();
in.close();
return new String(stringbuffer); //返回處理后的字符串。
}
catch(IOException e)
{return content=new String("不能讀取內(nèi)容");
}
}
}
考試頁面(效果如圖6.32所示)
standardTest.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="Test" %>
<HTML>
<BODY bgcolor=cyan> <Font size=1 >
<jsp:useBean id="test" class="Test" scope="session" >
</jsp:useBean>
<P>選擇試題文件
<% String str=response.encodeRedirectURL("standardTest.jsp");
%>
<Form action="<%=str%>" method="post">
<Select name="filename" value="A.txt">
<Option value="A.txt" > A.txt
<Option value="B.txt"> B.txt
<Option value="C.txt"> C.txt
<Option value="D.txt"> D.txt
<Option value="E.txt"> E.txt
</Select>
<Input type="submit" name="sub" value="確定">
</FORM>
<%-- 過beans設置文件的名字 ,下面的標簽只有提交了相應的表單才被執(zhí)行:--%>
<jsp:setProperty name="test" property="filename" param="filename"/>
<P>你選擇的試題是:
<jsp:getProperty name= "test" property="filename" />
<%-- 通過beans獲取試題的內(nèi)容--%>
<BR>
<jsp:getProperty name="test" property="testContent" />
<BR>請選擇:
<BR><Form action="<%=str%>" method="post">
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -