??????? 試題是模仿GRE考試,在這實例中,編了一套"中文GRE測試"總共有十道題,讀者可自行增加.
??????? 注:實例中的試題,可選答案,正確答案封裝在文件exam.java 中.用index.jsp文件來實現對問題的調用.核對,顯示結果.所以要先編譯exam.java成exam.class ,之后index.jsp才能調用.
少說費話--直入主題:
1.在Tomcat目錄下的webapps目錄下新建book文件夾,
1.5 在Tomcat目錄下的conf/Catalina/localhost目錄下新建一個book.xml (這一步很重要!!)
?寫入:
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="E:/Program Files/Apache Software Foundation/Tomcat 5.0/webapps/book" path="/book" reloadable="true">
</Context>
2.在book文件夾下新建WEB-INF文件夾.
2.5 在WEB-INF目錄下新建web.xml 寫入:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
?xmlns="http://java.sun.com/xml/ns/j2ee"
?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
?xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
?http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
</web-app>
3.在WEB-INF文件夾下新建classes文件夾.
4.把index.jsp? exam.java 放到book目錄下.
5.用javac? exam.java? 編譯exam.java成exam.jsp? (可在命令行中運行此步)
6.exam.jsp 放到WEB-INF/classes/exam目錄下.
7.啟動tomcat.
8.輸入地址: http://localhost:8080/book???? 回車 OK !!!!
附index.jsp代碼:
<html>
<head>
<META http-equiv=Content-Type content="text/html; charset=GB2312">
<title>網上測試</title>
</head>
<body>
<%@ page language="java" contentType="text/html;charset=GB2312" buffer="none"%>
<jsp:useBean id="exam" scope="session" class="exam.exam"/>
<FONT SIZE="+2"><B>
<%=exam.getExamName()%>
</B></FONT>
<br><br>
<%
int current=exam.getCurrent();
String reset=null;
reset=request.getParameter("Reset");
if(reset==null){
?reset="";
}
if(reset.equals("1"))
{
?exam.reset();
}
int iqn=0;
String questionNum=null;
questionNum=request.getParameter("QuestionNum");
if(questionNum==null)
{
?iqn=0;
}
else
{
?Integer tmpInt=new Integer(questionNum);
?iqn=tmpInt.intValue();
}
if(iqn!=0)
{
?current++;
?exam.setCurrent(current);
}
?String answer=null;
?answer=request.getParameter("Answer");
?
if(answer==null)
{
?answer="";
}
if(exam.getCurrent()>exam.getCount())
{
?if(exam.getCorrect()>=6)
?{
%>
??恭喜!你以<%=exam.getCorrect()*10 %>分的成績通過了測試!<BR>
<%
?}
?else
?{
%>
??對不起,你需要60分以上的成績才能通過測試!<BR>
??你可以按<A HREF="exam.jsp?Reset=1">這里</A>重新進行測試。<BR>
<%
?}
}
else
{
?if(iqn==0)
?{
??if(answer. equals(exam.getCorrectAnswer(exam.getCurrent()-1)))
??{
???exam.setCorrect(exam.getCorrect()+1);
??}
?}
?else
?{
??if(answer.equals(exam.getCorrectAnswer(exam.getCurrent()-2)))
??{
???exam.setCorrect(exam.getCorrect()+1);
??}
?}
%>
?<FORM action="exam.jsp" method="post">
?<input type="hidden" name="QuestionNum" value="<%=current%>">
<P>
?總共<%=exam.getCount()%>個問題,現在是第<%=exam.getCurrent()%>個問題
</P>
<br>
<b>
?<%=current%>
</b>
<%
out.println(exam.getExamQuestion(current-1));
%>
<br>
<input type="radio" name="Answer" value="A">
<%
out.println(exam.getExamAnswer(current-1,0));
%>
<br>
<input type="radio" name="Answer" value="B">
<%
out.println(exam.getExamAnswer(current-1,1));
%>
<br>
<input type="radio" name="Answer" value="C">
<%
out.println(exam.getExamAnswer(current-1,2));
%>
<br>
<input type="radio" name="Answer" value="D">
<%
out.println(exam.getExamAnswer(current-1,3));
%>
<br>
<input type="submit" value="確定">
</form>
<%
}
%>
</body>
</html>
exam.java代碼:
package exam;
public class exam
{
?int count;
?int current;
?int correct;
?String examName;
//?String answer;
?String[] examQuestion=
?{//存放所有的問題
??"1.科學常識:下列有關科學家的敘述,何者正確?",
??"2.牛頓三大運動定律的第一定律是:",
??"3.兩個報名參加海軍的年輕人被問道:\"你們會游泳嗎?\"他倆愣住了。過了一會兒,其中一個人回答說:\"怎么回事,難道船不夠用嗎?\"這篇文章的主題是什么",
??"4.接上題。考官為什么要問這兩個人游泳的事?",
??"5.男:看那個妹妹,好靚哦!女:看你個大頭鬼!問:這個女的是什么意思?",
??"6.男:今天天氣不錯。女:可不是咋得!問:這個女的什么意思?",
??"7.男:我把撿來的錢包交給警察了。男:我KAO!",
??"8.女:您好,您撥叫的用戶沒有開機,要留言請留言,不留言請掛機。問:這是發生在什么時候?",
??"9.ABCD四教授申請中科院院士,如果以下事實為真,誰最有資格入選",
??"10.以下是摘自電影《大話西游》中唐僧的一句臺詞,選項中可能正確的是人和妖精都是媽生的,不同的人是人他媽的,妖是妖他媽的,妖要有了仁慈之心,就不是妖了,而是人妖"
?};
?String[][] examAnswer=
?{//問題可選的答案
??{"(A)天文學家常常到天體營去研究天文的奧秘","(B)地質學家常常到地牢去研究地層結構","(C)大氣科學家常常坐熱氣球到天空研究臺風","(D)以上都不對"},
??{"(A)靜如處子 動于脫兔","(B)靜中有動 動中有靜","(C)運動絕對 靜止相對","(D)靜者恒靜 動者恒動"},
??{"(A)參軍","(B)打魚","(C)游泳","(D)造船"},
??{"(A)他想讓他們教他游泳","(B)他想知道這兩個人會不會被淹死","(C)他擔心船不夠用","(D)他想舉行游泳比賽"},
??{"(A) 這個男的頭有病","(B)這個男的頭比較大","(C)這個男的看見的是鬼","(D)這個女的有點吃醋"},
??{"(A)今天天氣不好","(B)今天天氣很好","(C)這女的沒聽清","(D)這女的不知道"},
??{"(A)他很驚訝","(B)他丟了錢包","(C)他想揍第一個人","(D)他累了想找個地方靠靠"},
??{"(A)打電話","(B) 開飛機","(C) 發EMAIL","(D)坐飛機"},
??{"(A)是中國改革開放以后第一個公費留德的四十歲以下的女性的在微電子領域的花了少于三年畢業的毅然回國的博士","(B)是在使用黑白膠卷照出彩照這一國際前沿領域做出突破貢獻的科學家","(C)畢業于我國著名的海南熱帶作物學院,學慣東西,差一點就復制出了恐龍。而且率先提出,中國人才沒有斷層,只是待遇和職稱斷層","(D)經常陪李嵐清打敲三家和拱豬,對高校合并做出突出貢獻"},
??{"(A)人妖是指:媽媽還健在就去做了和尚的妖精","(B)人和妖精沒有本質區別,因為他們都是同一位女士生的","(C)唐僧為了超度一只妖精,不惜和妖精一起罵人","(D)唐僧暗示自己的母親原來就是一只妖精變的"}
?};
?
?String[] correctAnswer=
?{//正確的答案
??"D","C","A","B","D","B","A","A","B","C"
?};
?String message;
?
?public exam()
?{//重設測試
??reset();
?}
?public void reset()
?{//重設測試
??count=10;
??current=1;
??correct=0;
??examName="中文GRE考試樣題";
?}
?public void setCount(int c)
?{
??count=c;
?}
?public int getCount()
?{
??return count;
?}
?public void setCurrent(int c)
?{
??current=c;
?}
?public int getCurrent()
?{
??return current;
?}
?public void setCorrect(int c)
?{
??correct=c;
?}
?public int getCorrect()
?{
??return correct;
?}
?public void setExamName(String name)
?{
??examName=name;
?}
?public String getExamName()
?{
??return examName;
?}
?public void setCorrectAnswer(String[] answer)
?{
??correctAnswer=answer;
?}
?public void setCorrectAnswer(int i,String answer)
?{
??correctAnswer[i]=answer;
?}
?public String getCorrectAnswer(int i)
?{
??return correctAnswer[i];
?}
?public String[] getCorrectAnswer()
?{
??return correctAnswer;
?}
?public void setExamQuestion(String[] question)
?{
??examQuestion=question;
?}
?public void setExamQuestion(int i,String question)
?{
??examQuestion[i]=question;
?}
?public String[] getExamQuestion()
?{
??return examQuestion;
?}
?public String getExamQuestion(int i)
?{
??return examQuestion[i];
?}
?public void setExamAnswer(String[][] answer)
?{
??examAnswer=answer;
?}
?public void setExamAnswer(int i,String[] answer)
?{
??examAnswer[i]=answer;
?}
?public void setExamAnswer(int i ,int j,String answer)
?{
??examAnswer[i][j]=answer;
?}
?
?public String[][] getExamAnswer()
?{
??return examAnswer;
?}
?public String[] getExamAnswer(int i)
?{
??return examAnswer[i];
?}
?public String getExamAnswer(int i,int j)
?{
??return examAnswer[i][j];
?}
}