使用JSP技术实现一个简单的在线测试系统的实例详解
1、登陆界面

实现:
本界面由三部分构成,footer.jsp,index.jsp,header.jsp
header.jsp
<center> <h2>在线测试系统</h2> <p> 登录 | 在线测试 | 成绩榜 </p> </center>
该部分主要实现主界面的头部信息,显示三个链接,分别可以跳转到登陆界面,在线测试界面,以及成绩榜界面
footer.jsp
<%!int pagecount = 0;%> <% pagecount++; %><center> <p>copyright @ 2018 | 访问次数:<%=pagecount%></p> </center>
该部分显示登录页面的底部信息,即显示访问次数等其他信息
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>
该部分主要显示登陆界面的中间界面,用户可以输入用户名和密码实现登陆系统
2、登陆检测
当用户点击登陆按钮,系统后台会获取用户输入的用户名以及密码,并与预设的进行比对,由于本例没有使用数据库,所以使用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> 当用户输入的用户名及密码正确时,系统会显示用户姓名,以及跳转链接,同时使用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编程技术" name="q3" /> j2ee编程技术
<button type="submit">提交</button> </form>
<%}%> 进入页面之前,会再次检测用户是否登录,以防止用户通过其他路径访问到该页面。
点击提交时,系统会提示是否提交,点击确定后,系统后台要做两件事,第一件事就是注销session,另一件事就是通过答案获取相应的分数,并且将用户名和分数保存。
4、提交页面
用户完成题目点击提交后,系统会获取用户的答案,并与标准答案对比,获取相应的分数,同时使用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、完整流程




到此这篇关于使用jsp技术实现一个简单的在线测试系统的实例详解的文章就介绍到这了。
相关文章
- Java之JSP教程九大内置对象详解(中篇)
- Java之JSP教程九大内置对象详解(上篇)
- jsp实现登录界面
- 解决request.getParameter取值后的if判断为NULL的问题
- jsp实现简单图片验证码功能
- 基于javaweb+jsp实现企业财务记账管理系统
- JSP动态实现web网页登陆和注册功能
- 基于javaweb+jsp实现企业车辆管理系统
- SSM框架整合JSP中集成easyui前端ui项目开发示例详解
- JSP实现文件上传功能
- 基于jsp+mysql实现在线水果销售商城系统
- jsp使用sessionScope获取session案例详解
- jsp response.sendRedirect()用法详解
- 一篇文章带你了解JavaScript-对象
- JSP之EL表达式基础详解
- 教你怎么用JSP统计网站访问人数
- jsp cookie+session实现简易自动登录
- JSP实时显示当前系统时间的四种方式示例解析
- 使用JSP实现简单的用户登录注册页面示例代码解析
- jsp学习之scriptlet的使用方法详解


