1、登陆界面

实现:

本界面由三部分构成,Footer.jsp,Index.jsp,Header.jsp

Header.jsp

<center>
	<h2>在线测试系统</h2>
	<p>
		<a href="Index.jsp" rel="external nofollow" >登录</a>
		|
		<a href="test.jsp" rel="external nofollow" >在线测试</a>
		|
		<a href="scorelist.jsp" rel="external nofollow" >成绩榜</a>
	</p>
</center>

该部分主要实现主界面的头部信息,显示三个链接,分别可以跳转到登陆界面,在线测试界面,以及成绩榜界面

 Footer.jsp

<%!int pageCount = 0;%>
<% pageCount  ; %>
<center>
 <p>Copyright @ 2018 | 访问次数:<%=pageCount%></p>
</center>

该部分显示登录页面的底部信息,即显示访问次数等其他信息

 Index.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">
用户名<input type="text" name="username" />
<br>
密码<input type="password" name="psd" />
<br><br>
<button type="submit">登录</button>
<button type="reset">重填</button>
</center>
<jsp:include page="Footer.jsp" />
</form>
</body>
</html>

该部分主要显示登陆界面的中间界面,用户可以输入用户名和密码实现登陆系统

 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("<a href='test.jsp'>开始测试</a>");
}
else{
	out.print("登陆失败,3秒钟后重新登录");
	response.setHeader("refresh", "3;url='Index.jsp'");
}
 
%>

当用户输入的用户名及密码正确时,系统会显示用户姓名,以及跳转链接,同时使用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" />
		<br><br>
		第2题:宋朝开国皇帝是
		<br>
		<input type="radio" value="赵匡胤" name="q2">
		赵匡胤
		<input type="radio" value="朱元璋" name="q2">
		朱元璋
		<input type="radio" value="李渊" name="q2">
		李渊
		<br><br>
		第3题:四大名著有
		<br>
		<input type="checkbox" value="红楼梦" name="q3">
		红楼梦
		<input type="checkbox" value="水浒传" name="q3">
		水浒传
		<input type="checkbox" value="J2EE编程技术" name="q3">
		J2EE编程技术
		<br><br>
		<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");
%>

 5、成绩榜

成绩榜通过application显示所有登陆用户的用户名及成绩,并按照成绩进行排序‘'

<h1>成绩榜</h1>
<%!
//降序排序
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>没有成绩</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>");
	}	
}
%>

 6、完整流程

到此这篇关于使用JSP技术实现一个简单的在线测试系统的实例详解的文章就介绍到这了,更多相关JSP技术实现一个简单的在线测试系统内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

使用JSP技术实现一个简单的在线测试系统的实例详解的更多相关文章

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. 缺少ios开发签名身份(null)

    当我尝试生成ipa文件时,我收到此错误.无法解决.请帮我解决此错误:我有自己的帐户,在我的钥匙链中访问它的鞋子像这样:我没有使用新的Mac,我已经创建了ipa.Day.但今天无法做到.我也有.cer个人资料.它有效解决方法这是Apple发表的声明.Thanksforbringingthistotheattentionofthecommunityandapologiesfortheissuesyou

  3. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  4. Node的文件系统你了解多少

    这篇文章主要为大家详细介绍了Node的文件系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

  5. jsp ${param.id}用法

    ${id} 意思是取出某一范围中名称为id的变量。

  6. PHP默认安装产生系统漏洞

    当你下载PHP後,在它内含的安装文件中帮助了PHP在NTApacheWebServer的安装方式,其中的安装帮助会要你将底下这几行设置加到apache的httpd.conf设置文件中,而这个安装文件将导引你将你的系统门户大开。

  7. ajax从JSP传递对象数组到后台的方法

    今天小编就为大家分享一篇ajax从JSP传递对象数组到后台的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

  8. 怎样在UNIX系统下安装php3

    #cd/usr/src#tarxvzfapache_1.3.6.tar.gz(产生apache_1.3.6目录)#tarxvzfphp-3.0.8.tar.gz(产生php-3.0.8目录)#cdapache_1.3.6#./configure--prefix=/usr/local/apache(把Apache的安装目录定为/usr/local/apache)#cdphp-3.0.8#./conf

  9. jsp网页登陆验证

    这篇文章主要介绍了 jsp登陆验证,网页登陆验证带验证码校验,登录功能之添加验证码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. jsp的常用指令有哪些(编译指令/动作指令整理)

    jsp的常用指令有哪些?Jsp包含三个编译指令和七个动作指令,具体祥看下文,希望对你面试有所帮助

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部