??
字號:
標準化考試(效果如圖4.28所示)
ttt.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import ="java.io.*" %>
<%@ page import ="java.util.*" %>
<%!
String answer=null;//存放答案用的字符串。
//對字符串進行回壓流處理的方法:
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個字符放入字符數組b。
{ String s=new String(b);
if(s.equals("<")) //回壓的條件
{ push.unread('&');
push.read(b,0,1); //push讀出被回壓的字符字節,放入數組b.
stringbuffer.append(new String(b));
push.unread('L');
push.read(b,0,1); //push讀出被回壓的字符字節,放入數組b.
stringbuffer.append(new String(b));
push.unread('T');
push.read(b,0,1); //push讀出被回壓的字符字節,放入數組b.
stringbuffer.append(new String(b));
}
else if(s.equals(">")) //回壓的條件
{ push.unread('&');
push.read(b,0,1); //push讀出被回壓的字符字節,放入數組b.
stringbuffer.append(new String(b));
push.unread('G');
push.read(b,0,1); //push讀出被回壓的字符字節,放入數組b.
stringbuffer.append(new String(b));
push.unread('T');
push.read(b,0,1); //push讀出被回壓的字符字節,放入數組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("不能讀取內容");
}
}
%>
<% String s=request.getParameter("g"); //獲取客戶提交的信息(是否重新讀取文件)
if(s==null)
{s="";
}
byte b[]=s.getBytes("ISO-8859-1");
s=new String(b);
File f=null;
FileReader in=null;
BufferedReader buffer=null;
Integer number=new Integer(0); //初始題號。
Integer score=new Integer(0);//初始分數。
if(session.getCreationTime()-session.getLastAccessedTime()==0) //當第一次請求該頁面時,建立和文件的輸入流連接。
{ f=new File("f:/2000","English.txt");
in=new FileReader(f);
buffer=new BufferedReader(in);
//讀入文件的第1行:答案
answer=buffer.readLine().trim();;
//將上述f、in、buffer對象保存到用戶的session 對象中:
session.setAttribute("file",f);
session.setAttribute("in",in);
session.setAttribute("buffer",buffer);
//再將初始題號保存到session對象中:
session.setAttribute("number",number);
//再將用戶的初始得分保存到session對象中:
session.setAttribute("score",score);
}
if(s.equals("重新練習")) //當請求重新讀取文件時,建立和文件的輸入流連接。
{ f=new File("f:/2000","English.txt");
in=new FileReader(f);
buffer=new BufferedReader(in);
//讀入文件的第1行:答案
answer=buffer.readLine().trim();
//將上述f、in、buffer對象保存到用戶的session 對象中:
session.setAttribute("file",f);
session.setAttribute("in",in);
session.setAttribute("buffer",buffer);
//再將初始題號保存到session對象中:
session.setAttribute("number",number);
//再將用戶的初始得分保存到session對象中:
session.setAttribute("score",score);
}
//讀取試題:
try{ String str=null;
f=(File)session.getAttribute("file");
in=(FileReader)session.getAttribute("in");
buffer=(BufferedReader)session.getAttribute("buffer");
while((str=buffer.readLine())!=null)
{ //為了能顯示原始的HTML文件或JSP文件需使用回壓流技術。
str=getString(str);
if(str.startsWith("**")) //每個試題的結束標志。
{break;
}
out.print("<BR>"+str);
}
}
catch(IOException e)
{ out.print(""+e);
}
%>
<%String code=response.encodeURL("ttt.jsp");
%>
<HTML>
<BODY><Font size=1>
<P><BR>請選擇答案:
<FORM action="<%=code%>" method="post" name=form>
<Input type=radio name="r" value="A">A
<Input type=radio name="r" value="B">B
<Input type=radio name="r" value="C">C
<Input type=radio name="r" value="D">D
<Input type=submit name="submit" value="提交答案">
</FORM>
<% //當用戶提交表單時,獲取提交的答案:
//判斷用戶是否提交了答案表單:
String select=request.getParameter("submit"); //獲取客戶提交的答案選擇表單
if(select==null)
{select="";
}
byte c[]=select.getBytes("ISO-8859-1");
select=new String(c);
if(select.equals("提交答案"))
{ String userAnswer=request.getParameter("r");
if(userAnswer==null)
{ userAnswer="#";
}
//將提交的答案與正確答案進行比較:
//首先獲取題號:
Integer num=(Integer)session.getAttribute("number");
int tihao=num.intValue();
//獲取相應題號的標準答案:
char correctAnswer='\0';
try{ correctAnswer=answer.charAt(tihao);
}
catch(StringIndexOutOfBoundsException ee)
{ tihao=0;
}
//然后再將題號重新存入session對象:
tihao=tihao+1;
Integer newNumber=new Integer(tihao);
session.setAttribute("number",newNumber);
//將用戶提交的答案與標準答案比較
char user=userAnswer.charAt(0);
if(user==correctAnswer)
{ //給用戶增加分值:
Integer newScore=(Integer)session.getAttribute("score");
int fenshu=newScore.intValue();
fenshu=fenshu+1;
newScore=new Integer(fenshu);
session.setAttribute("score",newScore);
out.print("您答對了,您現在的得分是:");
out.print(""+fenshu);
}
else
{ out.print("您沒有答對,繼續努力!");
out.print("您現在的得分是:"+session.getAttribute("score"));
}
}
%>
<P><BR>點擊按鈕重新練習:
<FORM action="" method="post" name=form>
<Input type=submit name="g" value="重新練習">
</FORM>
</FONT>
</BODY>
</HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -