使用JSP技術(shù)實現(xiàn)一個簡單的在線測試系統(tǒng)的實例詳解

1、登陸界面

實現(xiàn):

本界面由三部分構(gòu)成,footer.jsp,index.jsp,header.jsp

header.jsp

<center> 	<h2>在線測試系統(tǒng)</h2>
	<p>
		登錄 		|
		在線測試 		|
		成績榜 	</p>
</center>

該部分主要實現(xiàn)主界面的頭部信息,顯示三個鏈接,分別可以跳轉(zhuǎn)到登陸界面,在線測試界面,以及成績榜界面

 footer.jsp

<%!int pagecount = 0;%>
<% pagecount++; %><center>  <p>copyright @ 2018 | 訪問次數(shù):<%=pagecount%></p>
</center>

該部分顯示登錄頁面的底部信息,即顯示訪問次數(shù)等其他信息

 index.jsp

 <meta charset="utf-8"> <title>insert title here</title> <jsp:include page="header.jsp"> <center> <form action="check.jsp" method="get"> 用戶名<input type="text" name="username" /> 密碼<input type="password" name="psd" /> <button type="submit">登錄</button> <button type="reset">重填</button> </form></center> <jsp:include page="footer.jsp"> </jsp:include></jsp:include>

該部分主要顯示登陸界面的中間界面,用戶可以輸入用戶名和密碼實現(xiàn)登陸系統(tǒng)

 2、登陸檢測

當(dāng)用戶點擊登陸按鈕,系統(tǒng)后臺會獲取用戶輸入的用戶名以及密碼,并與預(yù)設(shè)的進行比對,由于本例沒有使用數(shù)據(jù)庫,所以使用map存儲用戶名及密碼

<%!
map<string,string> userlist= new hashmap<string,string>();
%>
 
<%
userlist.put("qq", "11");
userlist.put("ww","22");
userlist.put("ee","33");
%>
 
<%!
boolean check(string username,string psd){
	if(userlist.containskey(username)){
		if(userlist.get(username).equals(psd)){
			return true;
		}
	}
	
	return false;
}
 
%>
 
 
<%
string username=request.getparameter("username");
string psd=request.getparameter("psd");
if(check(username,psd)){
	session.setattribute("username", username);
	
	out.print("歡迎"+username);
	out.print("開始測試");
}
else{
	out.print("登陸失敗,3秒鐘后重新登錄");
	response.setheader("refresh", "3;url='index.jsp'");
}
 
%></string,string></string,string>

當(dāng)用戶輸入的用戶名及密碼正確時,系統(tǒng)會顯示用戶姓名,以及跳轉(zhuǎn)鏈接,同時使用session保存用戶名,密碼不正確時,3秒后返回登陸界面,

 3、測試頁面

用戶輸入用戶名及密碼后便進入測試頁面,測試頁面的第一行顯示用戶名,之后顯示題目信息。

<%
string username=(string)session.getattribute("username"); 
if(username==null){
	out.print("未登陸,3秒鐘后重新登錄");
	response.setheader("refresh", "3;url='index.jsp'");
}
else{
	%>
	
	考生:<%=session.getattribute("username") %>
 <h3>在線測試題</h3>
<form action="submit.jsp" onsubmit="return confirm('確定提交嗎?')"> 		第1題:湖北省會是
		<input type="text" name="q1" /> 		


		第2題:宋朝開國皇帝是
		

		<input type="radio" value="趙匡胤" name="q2" /> 		趙匡胤
		<input type="radio" value="朱元璋" name="q2" /> 		朱元璋
		<input type="radio" value="李淵" name="q2" /> 		李淵
		


		第3題:四大名著有
		

		<input type="checkbox" value="紅樓夢" name="q3" /> 		紅樓夢
		<input type="checkbox" value="水滸傳" name="q3" /> 		水滸傳
		<input type="checkbox" value="j2ee編程技術(shù)" name="q3" /> 		j2ee編程技術(shù)
		


		<button type="submit">提交</button> </form> 	
<%}%>

進入頁面之前,會再次檢測用戶是否登錄,以防止用戶通過其他路徑訪問到該頁面。

點擊提交時,系統(tǒng)會提示是否提交,點擊確定后,系統(tǒng)后臺要做兩件事,第一件事就是注銷session,另一件事就是通過答案獲取相應(yīng)的分數(shù),并且將用戶名和分數(shù)保存。

4、提交頁面

用戶完成題目點擊提交后,系統(tǒng)會獲取用戶的答案,并與標準答案對比,獲取相應(yīng)的分數(shù),同時使用application保存用戶名和成績,這樣就可以在成績榜中顯示每個用戶的成績信息

<%!
map<string, integer=""> score_list = new hashmap<string, integer="">(); //存放用戶名+成績 
%>
<%
int score=0;
string q1=request.getparameter("q1");
string q2=request.getparameter("q2");
string[] q3=request.getparametervalues("q3");
 
if(q1!=null&&q1.equals("武漢")){	score+=10;	}
if(q2!=null&&q2.equals("趙匡胤")){	score+=10;	}
if(q3!=null&&q3.length==2&&q3[0].equals("紅樓夢")&&q3[1].equals("水滸傳")){
	score+=10;	}
//out.print("<h2>你的成績=" + score + "</h2>
");
 
score_list.put((string)session.getattribute("username"), score);
application.setattribute("scorelist", score_list);
response.sendredirect("logout.jsp");
%></string,></string,>

 5、成績榜

成績榜通過application顯示所有登陸用戶的用戶名及成績,并按照成績進行排序‘'

<h1>成績榜</h1>
<%!
//降序排序
public <k, v="" extends="" comparable<?="" super="">> map<k, v=""> sortbyvaluedescending(map<k, v=""> map)
 {
  list<map.entry<k, v="">> list = new linkedlist<map.entry<k, v="">>(map.entryset());
  collections.sort(list, new comparator<map.entry<k, v="">>()
  {
   
   public int compare(map.entry<k, v=""> o1, map.entry<k, v=""> o2)
   {
    int compare = (o1.getvalue()).compareto(o2.getvalue());
    return -compare;
   }
  });
 
  map<k, v=""> result = new linkedhashmap<k, v="">();
  for (map.entry<k, v=""> entry : list) {
   result.put(entry.getkey(), entry.getvalue());
  }
  return result;
 }
%>
<%
if(application.getattribute("scorelist")==null){
	out.print("<h3>沒有成績</h3>
");
}
else{ //遍歷顯示所有成績(map遍歷)
	map<string, integer=""> score_list= (map<string, integer="">)application.getattribute("scorelist");
	score_list=sortbyvaluedescending(score_list);
	set s=score_list.keyset();
	iterator it=s.iterator();
	while(it.hasnext()){
		string username=(string)it.next();
		int score=score_list.get(username);
		out.print("<h3>"+username+":"+score+"</h3>
");
	}	
}
%></string,></string,></k,></k,></k,></k,></k,></k,></k,></k,></k,></k,></k,>

 6、完整流程

到此這篇關(guān)于使用jsp技術(shù)實現(xiàn)一個簡單的在線測試系統(tǒng)的實例詳解的文章就介紹到這了。

相關(guān)文章
亚洲国产精品第一区二区,久久免费视频77,99V久久综合狠狠综合久久,国产免费久久九九免费视频