1. ホーム
  2. Web プログラミング
  3. JSP プログラミング

JSP技術を使って簡単なオンラインテストシステムを実装する例 詳細へ

2022-01-16 15:45:53

1. ログインインターフェイス

画像

実装する。

このインターフェースは、Footer.jsp, Index.jsp, Header.jspの3つの部分から構成されています。

ヘッダー.jsp

<center>
	<h2> Online testing system</h2>
	<p>
		<a href="Index.jsp" rel="external nofollow" >login</a>
		|a
		<a href="test.jsp" rel="external nofollow" >Online test</a>
		|trials
		<a href="scorelist.jsp" rel="external nofollow" >scoreboard</a>
	</p>
</center>

この部分は主にメインインターフェイスのヘッダ情報を実装しており、ログインインターフェイス、オンラインテストインターフェイス、スコアリストインターフェイスにそれぞれジャンプするための3つのリンクが表示されます。

 フッタ.jsp

<%!int pageCount = 0;%>
<% pageCount++; %>
<center>
 <p>Copyright @ 2018 | Visits:<%=pageCount%></p>
</center>

このセクションは、ログインページの下部にある情報を表示します。つまり、アクセス数などの他の情報を表示します。

 インデックス.jsp

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<jsp:include page="Header.jsp" />
<center>
<form action="check.jsp" method="get">
username<input type="text" name="username" />
<br>
password<input type="password" name="psd" />
<br><br>
<button type="submit">login</button>
<button type="reset">Refill</button>
</center>
<jsp:include page="Footer.jsp" />
</form>
</body>
</html>

ここでは主に、ユーザーがユーザー名とパスワードを入力してシステムにログインするためのログイン画面の中間のインターフェイスが表示されます

2. ログイン検出

ユーザーがログインボタンをクリックすると、システムのバックグラウンドで、ユーザーが入力したユーザー名とパスワードを取得し、あらかじめ設定されているものと比較します。

<%!
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("welcome"+username);
	out.print("<a href='test.jsp'>StartTesting</a>");
}
else{
	out.print("Login failed, log back in after 3 seconds");
	response.setHeader("refresh", "3;url='Index.jsp'");
}
 
%>

ユーザーが入力したユーザー名とパスワードが正しい場合、ユーザー名とジャンプリンクを表示し、セッションを使用してユーザー名を保存し、パスワードが正しくない場合は3秒後にログイン画面に戻るようにしました。

 3. テストページ

ユーザーはユーザー名とパスワードを入力し、テストページに入ります。テストページの最初の行には、ユーザー名とタイトル情報が表示されます。

<%
String username=(String)session.getAttribute("username"); 
if(username==null){
	out.print("Not logged in, log back in after 3 seconds");
	response.setHeader("refresh", "3;url='Index.jsp'");
}
else{
	%>
	
	Candidate:<%=session.getAttribute("username") %>
 
<h3> Online test questions</h3>
<form action="submit.jsp" onsubmit="return confirm('Sure to submit?') ">
		Question 1: Hubei Province would be
		<input type="text" name="q1" />
		<br><br>
		Question 2: The founding emperor of the Song Dynasty was
		<br>
		<input type="radio" value="Zhao Kuangyin" name="q2">
		Zhao Kuangyin
		<input type="radio" value="Zhu Yuanzhang" name="q2">
		Zhu Yuanzhang
		<input type="radio" value="Li Yuan" name="q2">
		Li Yuan
		<br><br>
		Question 3: The four great books are
		<br>
		<input type="checkbox" value="Dream of the Red Chamber" name="q3">
		Dream of the Red Chamber
		<input type="checkbox" value="水浒传" name="q3">
		Water Margin
		<input type="checkbox" value="J2EE programming technologies" name="q3">
		J2EE programming technologies
		<br><br>
		<button type="submit"> submit</button>
</form>
	
<%}%>

ページに入る前に、ユーザーがログインしているかどうかを再度確認し、他の経路からアクセスすることを防ぎます。

送信をクリックすると、送信するかどうかが表示されます。OKをクリックすると、システムはバックグラウンドで2つのことを行います。一つはセッションからログアウトすること、もう一つは答えから対応するスコアを取得し、ユーザ名とスコアを保存することです。

4. 投稿ページ

ユーザーが質問を終え、送信をクリックすると、システムはユーザーの回答を取得し、標準回答と比較して対応するスコアを取得し、アプリケーションを使用してユーザー名とスコアを保存し、各ユーザーのスコア情報をスコアリストに表示できるようにします。

<%!
Map<String, Integer> score_list = new HashMap<String, Integer>(); //hold username + score 
%>
<%
int score=0;
String q1=request.getParameter("q1");
String q2=request.getParameter("q2");
String[] q3=request.getParameterValues("q3");
 
if(q1!=null&&q1.equals("Wuhan")){ score+=10; }
if(q2!=null&&q2.equals("Zhao Kuang Yin"){ score+=10; }
if(q3!=null&&q3.length==2&&q3[0].equals("Dream of the Red Chamber")&&q3[1].equals("Water Margin"){
	score+=10; }
//out.print("<h2>Your score=" + score + "</h2>");
 
score_list.put((String)session.getAttribute("username"), score);
application.setAttribute("scorelist", score_list);
response.sendRedirect("logout.jsp");
%>

 5. 実績一覧

結果一覧は、アプリケーション経由でログインした全ユーザーのユーザー名と結果を表示し、その結果でソートします''。

<h1>Results list</h1>
<%!
// descending sort
public <K, V extends Comparable<? super V>> 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> no results</h3>");
}
else{ // iterate through to show all scores (Map traversal)
	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>");
	}	
}
%>

6. 完了プロセス

シンプルなオンラインテストシステムの例を達成するためにJSP技術の使用に関するこの記事は、これに導入され、より多くの関連するJSP技術は、シンプルなオンラインテストシステムのコンテンツを達成するために以前の記事のスクリプトのホームを検索してくださいまたは次の関連記事を閲覧し続けることは、スクリプトの家をよりサポートすることを願って!この記事では、JSP技術の使用に関する情報を提供します。