资源描述
基于B/S的在线考试系统
湖北文理学院
《在线考试系统》
实 验 报 告
专业班级: 软工1512
姓 名:
学 号:
任课教师: 熊齐军
2018 年 1 月 4 日
目 录
1 摘要 3
2 引言 4
3 开发方案 5
3.1 问题的分析 5
3.2 设计的目的 5
3.2.1系统的总体目标 6
3.2。2对教师的系统目标 6
3。3 方案选择 6
3。3。1 解决方案 6
3。3.1.1 Web应用程序开发JSP技术 6
3.3.1。2框架技术—SSM 6
3。3.1。3 Tomcat应用服务器 7
3.3。1。4 Mysql数据库 8
3。3。1。5 B/S 开发模式 8
4。系统需求分析 9
4。1任务概述 9
4.2功能需求概述 9
4.3各模块需完成的功能 10
4. 4运行环境 11
5系统设计 12
5.1指导思想 12
5。1。1 B/S结构开发思想 12
5。2系统总体结构设计 13
5。2。1 系统的总体架构 13
5。 2。2 软件系统设计原则 13
5.2.3 数据存储的总体设计 13
5. 2。4 系统总体功能结构设计 14
5.3 系统详细设计 14
5.3.1系统结构设计 14
5。3。2数据库设计 15
6系统的实现 17
6。1 数据库连接的建立 14
6。2各子系统模块程序设计举例 15
6。2。1 用户登陆的实现 17
6。2.2 学生和教师身份验证 18
6.2。3 学生考试的实现 19
6.2。4 题目信息管理的实现 24
6.2。5题目包含的资源 35
6。2。6试卷的添加 38
6。 2。7添加题目到试卷 38
6。2。8学生提交的试卷 43
6.2。9 学生信息的显示 50
6.2。10项目基本结构 53
6。3 小结 54
7 结束语 55
摘要
本文在第一章主要阐述在线考试系统的研究背景和研究意义,;第二章阐述了该系统的需求性分析,包括对系统的配置,系统所需要的功能和系统的需求分析;第三 章介绍了系统的体系结构和流程图,各个功能模块的流程图和系统的模块流程图;系统的E—R图的结构;第四章对功能截了图,同时附带了相关的核心要代码,并且添加了相应注释。 基于Web的在线考试系统 随着计算机及网络技术的飞速发展,Internet/Intranet应用在全球范围内日益普及,当今社会正快速向信息化社会前进,信息自动化的作用也越 来越大,从而使我们从繁杂的事务中解放出来,提高了我们的工作效率。 在众多的网络服务中,Web给人耳目一新的感觉,而在这其中,JSP技术和基于Struts框架技术则因为可以进行复杂的数据库操作、很强的交互性以及方便用户控制和管理备受青睐。 目前存在各级各类的考试,而它们的各种工作主要还是依赖于手工完成,手工管理还存在这许多弊端,由于不可避免的人为因素,造成数据的遗漏、误报.计算机信 息化管理有着储存量大,速度快等许多优点,因此我们可以利用计算机网络,利用ASP技术实现动态的管理。 随着计算机网络技术的进一步发展和普及,利用JSP技术开发的各种网络在线考系统必将大行其道。
关键字:JSP技术;SSM ;在线考试系统
引 言
现今,不管是国内还是国外的各大厂家,都在不断的推出一系列的考试、认证.如微软的MCSE、Cisco的CCNA等。我们国家的自考或是成考,以及各省市的各种考试,现在都在朝着信息化的道路前进在走.我们相信在今后这一系列的考试将会走向网络化考试的.这样才是符合信息发展的.所以我们考虑这是一个机会。我们要给不同的考试一个好的解决方案。 这个方案在技术上来讲我们是采用B/S模式。在Windows平台上,使用chome浏览器,完成制题、考试、交卷等考试任务。
现阶段,学校与社会上的各种考试大都采用传统的考试方式,在此方式下,组织一次考试至少要经过五个步骤,即人工出卷,考生考试,人工阅卷,成绩评估和试卷分析。显然,随着考试类型的不断增加及考试要求的不断提高,教师的工作量将会越来越大,并且其工作将是一件十分烦琐和非常容易出错的事情,可以说传统的考试方式已经不能适应现代考试的需要.随着计算机应用的迅猛发展,网络应用不断扩大,如远程教育和虚拟大学的出现等等,且这些应用正逐步深入到千家万户。人们迫切要求利用这些技术来进行在线考试,以减轻教师的工作负担及提高工作效率,与此同时也提高了考试的质量,从而使考试更趋于公证、客观、更加激发学生的学习兴趣。例如目前许多国际著名的计算机公司所举办的各种认证考试绝大部分采用这种方式.为了适应新形势的发展,我们推出了这一系统,使其尽快在各类考试中发挥高效,便捷的作用,把老师从繁重的工作中解脱出来.由于时间,人员,以及我所掌握的技术问题,该系统仅仅人工出卷,考生考试,人工阅卷三个方向的问题.
第一章、开发方案
1.1问题分析
传统的学校教学中,进行一场考试,要求老师刻试卷、印试卷、安排考试、监考、收集试卷、评改试卷、讲评试卷和分析试卷,这是一个繁杂的过程,需要大量人力、物力与时间的投入,已经越来越不适应学校信息化建设与现代教学的需要。尤其在远程网络教学中,学生分布广,不易统一集中安排考试,给校方和学生带来了众多的不便。而在线考试系统,正是信息化建设的产物,它是传统考场的延伸。它可以利用互联网络和局域网,随时随地的对学生进行考试,加上数据库技术的利用,大大简化了传统考试的过程,因此在线考试是电子化教学的不可缺少的辅助手段。在当今信息时代,计算机技术与网络技术越来越广地应用于各个领域,改变着人们的学习、工作、生活乃至思维方式,也引起了教育领域的重大变革。将计算机与网络技术应用于现代高等教育中,是现代高等教育发展的需要,也是改革教育模式,提高学校教学效果和教学效率、提高科研和管理水平的必要手段。
1。2设计目的
1。2.1系统的总体目标:
1. 在线考试系统可以帮助教师完成一个考试从题目设计,考试安排,考试实施,考卷批改到分数统计总结的所有工作。
2。 所有的考试数据和其它数据库需要一种主流的方式进行存储和管理,例如使用数据库技术。
3. 考试数据的存放和处理必须对考试保密,需要一定的安全性保障。
对考试的系统目标:
4. 这个软件是分布式的,这意味着只要有考试客户端可以连接到考试应用服务器,任何考生在任何地方进行身份确认,都能完成考试。
5。 题目最好有一定的稳定性和随机性。稳定性可以保证每一次考试对每一个考生是公平的,随机性可以避免作弊的发生。
6。 考试的部分结果在考生考完之后就可以知道,同时提供一个机会让考生知道自己哪里做错了,并给出反馈信息说明理由.
1。2。2 对教师的系统目标:
1。 提供一个功能全面的考核管理客户端,可以进行考试设计和安排。
2. 通过管理客户端,教师可以进行考试的身份管理.
3。 考生的考试结果可以被保存下来,供教师进行分析统计和察看。
1.3方案选择
开发在线考试系统,提出以下解决方案:
选择JSP、JavaScript、Html作为应用程序开发语言,采用SSM框架,运用Tomcat服务器技术,并选择mysql作为后台的数据库,整个系统完全基于B/S (Browser/Server)模式进行设计。
1. Web应用程序开发JSP技术
JSP的全称是Java Server Pages,它是SUN推出的一种动态网页技术标准。它在传统的静态页面文件(*.html,*。htm)中加入JAVA程序片段和JSP标记,就构成了JSP页面.JSP具有以下的优点:
1) 将业务层与表示层分离:使用JSP技术,网络开发人员可充分使用HTML来设计页面显示部分(如字体颜色等),并使用JSP指令或者JAVA程序片段来生成网页上的动态内容;
2) 能够跨平台:JSP支持绝大部分平台,包括现在非常流行的LINUX系统,应用非常广泛的Apache服务器也提供了支持JSP的服务;
3) 组件的开发和使用很方便:如ASP的组件是由C++,VB等语言开发的,并需要注册才能使用;而JSP的组件是用Java开发的,可以直接使用;
4) 一次编写,处处运行:作为JAVA开发平台的一部分,JSP具有JAVA的所有优点,包括Write once , Run everywhere。
2. 框架技术—SSM
ssm框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层,使用spring MVC负责请求的转发和视图管理,spring实现业务对象管理,mybatis作为数据对象的持久化引擎.
Spring MVC工作原理:
1.客户端发送请求到DispacherServlet(分发器)
2.由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller
3。Controller调用业务逻辑处理后,返回ModelAndView
4.DispacherSerclet查询视图解析器,找到ModelAndView指定的视图
5。视图负责将结果显示到客户端
Mybatis的优缺点
优点:SQL写在XML中,便于统一管理的优化,提供映射标签,支持对象和数据库的orm字段关系映射,可以对SQL进行优化。
缺点:SQL工作量大,mybatis的移植性不好,不支持级联.
为什么要用spring?
1。spring能够很好的和各大框架整合
2。spring通过IOC容器管理了对象的创建和销毁 工厂模式(设计模式)
3.在使用hiberna丶mybatis的时候,不用每次都编写提交事务的代码,可以使用spring的AOP来管理事务
3. Tomcat应用服务器
目前支持JSP的应用服务器是较多的,Tomcat是其中较为流行的一个Web服务器,被JavaWorld杂志的编辑选为2001年度最具创新的Java产品,可见其在业界的地位.
Tomcat是一个免费的开源的Serlvet容器,在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。你在浏览器中访问这个应用的Jsp时,通常第一次会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。
Tomcat也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,它的处理静态Html的能力就不如Apache。我们可以将Tomcat和Apache集成到一块,让Apache处理静态Html,而Tomcat处理Jsp和Servlet。Tomcat是一个很好的工具,不仅仅因为其免费,功能强大,更因为其开放性,越来越受到人们的重视.
4. Mysql数据库
MySQL的优点:
1. 它使用的核心线程是完全多线程,支持多处理器.
2. 有多种列类型:1、2、3、4、和8字节长度自有符号/无符号整数、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、和ENUM类型。
3. 它通过一个高度优化的类库实现SQL函数库并像他们能达到的一样快速,通常在查询初始化后不该有任何内存分配。没有内存漏洞.
4. 全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函数(COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、MAX()和MIN())。你可以在同一查询中混来自不同数据库的表。
5. 支持ANSI SQL的LEFT 0UTER JOIN和ODBC。
6. 所有列都有缺省值。你可以用INSERT插入一个表列的子集,那些没用明确给定值的列设置为他们的决省值。
7. MySQL可以工作在不同的平台上。支持C、C++、Java、Perl、PHP、Python和TCL API。
5. B/S 开发模式
伴随着Internet的迅速发展,计算机技术正在由基于C/S(client/ Server)模式的应用系统转变为基于B/S模式的应用系统。
过去,网络软件的开发都采用C/S(client)模式,在这种模式下,主要的业务逻辑都集中于客户端程序,因此,必然导致以下问题:
1) 系统安装、调试、维护和升级困难。由于客户端的硬件配置可能存在差异,软件环能各不相同,因此,在安装时,必须对每一个客户端分别进行配置,同样,在软件升级时也要对客户端分别处理。
2) 在整个系统中,业务逻辑和用户界面都集中到了客户端,必然会增加安全隐患.
B/S模式带来了巨大的好处:
1) 开发成本及维护成本降低。由于B/S架构管理软件只安装在服务器端(Server)上,即应用程序在部署、升级、维护时,只需要在服务器端进行配置就可以了,网络管理人员只需要管理服务器就行了,用户界面主要事务逻辑在服务器(Server)端完全通过WWW浏览器实现,极少部分事务逻辑在前端(Browser)实现,所有的客户端只有浏览器,网络管理人员只需要做硬件维护。
2) 良好的安全性能,防火墙技术可以保证后台数据库的安全性。所有的配置工作都集中在服务器端且所有客户端请求都是通过DBMS来访问数据库,从而大大减少了数据直接暴露的风险。
第二章、 系统需求分析
2.1任务概述
在线考试管理子系统主要实现题库管理、在线制作试卷、在线控制考试、教师评分(客观题部分)、自动交卷、考生管理、成绩查询、试卷管理等功能,充分利用计算机科学与技术,改变传统的考试操作方式,实现无纸化考试的模式。
2。2功能需求概述
系统需要解决的主要问题
在此系统中我们主要对前台考试系统的显示信息进行管理和设置。我将子系统分为以下功能模块:
在线考试管理子系统
评卷管理
试卷管理
题库管理
成绩管理
考试管理
用户管理
图2。1 系统总结构图
题库管理:用于对单个试题的增、删、改、查等基本维护。
考试管理:教师也就是管理员对试卷的状态,以及时间的设置,来设置当前考试要使用的试卷。
成绩管理:对每次考试的学生成绩的基本信息进行维护,并提供学生成绩的统计管理。
用户管理:对使用本系统的用户基本信息进行维护,用户多数为:系统管理员(老师)、学生.
2.3各模块需完成的功能:
试卷管理
题库管理
试卷信息维护
试题
维护
图2。2题库管理结构图 图2.3试卷管理机构图
试题维护:对试题的基本信息进行增、删、改、查操作
考试管理
评卷管理
成绩管理
考生成绩维护
考试信息维护
考生信息
维护
评卷人评卷
图2.4考试管理结构图 图2.5评卷管理结构图 图2。6成绩管理结构图
考试信息维护:对考试的时间,考试用的试卷、试卷总分数及答卷总时间等考试的基本要素进行设置.
考生信息维护:对考试的学生的基本信息进行增、删、改、查操作.
评卷人评卷:对教师(系统管理员)可以在此进行评卷。
考生成绩维护:对考试的考生成绩信息进行统计与汇总,对有权限的人可进行成绩的增、删、改、查操作。
成绩其他维护:对考生成绩信息的批量查询。
用户管理
用户基本信息
图2。7用户管理结构图
用户基本信息维护:对使用本系统的用户进行维护,而用户的权限由权限管理进行维护,并分配给用户,使用户只能访问自己拥有的权限内.
2.4运行环境
l 硬件需求: PIII/256M/10G 及以上配置,要求为考试系统分配足够的数据库磁盘空间
l 推荐配置: PIV 2G/512M/40G
l 操作系统需求: Windows2000及以上操作系统 ( 推荐 )
l 数据库软件需求: mysql中文版数据库
l 中间件软件需求:tomcat系列服务器
第三章、系统设计
3。1指导思想
3。1。1 B/S结构开发思想
B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层(3—tier)结构。一个三层架构的应用程序由三部分组成,这三部分各自分布在网络中的不同地方.这三个部分分别是:工作站或表示层接口、事务逻辑、数据库以及与其相关的程序设计.在一个典型的三层架构应用程序中,应用程序的用户工作站包括提供图形用户界面(GUI)的程序设计和具体的应用程序入口表格或交互式窗口。事务逻辑处在局域网(LAN)服务器或其他共享主机上,它作为响应工作站所发出客户请求的服务器,而相对于处于大型机的第三层它是作为客户端,并且决定需要什么数据以及数据存储在哪里.第三层包括数据库以及处理读写以及访问数据库的程序。然而应用程序的设计可能比这个架构要复杂,对于大型程序来说,这个三层模式是一种比较简便的考虑方法。这种应用程序的设计使用客户/服务器模式,各层可以同时开发,并且可以由不同的成员组用不同的语言来开发。因为各个层次的开发不会影响其他层次,所以这种模型对于进一步开发软件是很方便的.这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN, WAN, Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全 。
3.1.2 面向对象机制的设计思想
所有计算机均由两种元素组成:代码和数据.精确的说,有些程序是围绕着"什么正在发生”而编写,有些则是围绕"谁正在受影响"而编写的。
第一种编程方式叫做”面向过程的模型”,按这种模型编写的程序以一系列的线性步骤(代码)为特征,可被理解为作用于数据的代码。如 C 等过程化语言。
第二种编程方式叫做”面向对象的模型”,按这种模型编写的程序围绕着程序的数据(对象)和针对该对象而严格定义的接口来组织程序,它的特点是数据控制代码的访问。通过把控制权转移到数据上,面向对象的模型在组织方式上有:抽象、封装、继承和多态的好处。
3。1。3 代码分层思想
由于采用B/S设计模式分层思想,同时根据软件工程的管理思想及系统分析的设计与分析的思想进行系统的开发,利用Java语言开发Web应用程序,主要的事务处理都在服务器端实现,一部分事务逻辑在前端实现,用户界面则完全通过客户端实现,采用“用户界面-业务处理层-数据存储层"的三层架构设计。
3.2系统总体结构设计
3。2.1 系统的总体架构
整个考试系统采用主要的事务处理都在服务器端实现,一部分事务逻辑在前端实现,用户界面则完全通过客户端实现,采用“用户界面-业务处理层-数据存储层"的三层架构设计。Web服务器接受请求浏览器端请求,从而实现与客户端进行信息资源的交互.数据库服务器用来存储管理信息系统中所用到的各种数据,数据由数据库管理程序直接录入.系统的客户端只需要一个浏览器即可.相关人员通过浏览器来查询、增加、修改、删除数据,对信息进行管理.
3。2.2 软件系统设计原则
软件系统总体结构设计的主要任务就是将整个系统合理的划分成各个功能模块,正确处理模块之间与模块内部的联系及它们之间的调用关系和数据联系,定义各模块的内部结构等,本系统的软件总体结构按分解-协调的原则,信息隐蔽抽象的原则,自顶向下的原则,一致性原则,面向用户的原则进行设计。
3.2.3 数据存储的总体设计
按用途分类可把本系统数据库表分成以下几种:
系统中文件主要存放具有固定值属性的数据.它需要长期保存,并不断更新。有用户信息表、题库信息表、考试信息表、考试成绩表。
3。2.4 系统总体功能结构设计
1. 通过对系统的数据流图进行分析,进一步进行功能分解,直到分解成含义明确,功能单一的功能模块,从而得到系统的功能模块总体结构图,如下图所示:
图3。1系统总体结构图
3。3 系统详细设计
3.3。1 系统结构设计
在系统的数据库设计中,先要对系统分析得到的数据字典中的数据存储进行分析,分析各数据存储之间的关系,然后才能得出系统的关系模式。可以采用E-R图的方法来进行数据结构分析,E-R图由实体、属性、联系三部分组成,系统如图:
n
题目
n
1
录入
考试成绩
n
添加
m
查询
考试
n
1
老师
n
试卷
录入
状态
1
n
1
考生
图3。5 系统组合E-R图
3。3.2数据库设计
1. 主要数据库表的介绍
根据系统需要和考试需要,设立了如下数据库表:
教师(系统管理员)表:登录注册。
学生表:学生的基本信息,以及登录.
题目表:题目的基本信息。
试卷表:试卷的基本信息。
题目试卷表:题目表和试卷表的中间表。
资源表:教师或学生上传资料的基本信息。
学生试卷表:学生答题后的试卷信息。
2. 主要数据库表的结构
定义(数据词典):
1) 数据库表名的定义使用:重点字_table;重点字可以是多个英文单词的组合,从组合的第二单词起首字母大写,字段命名是能表达字段内容的英文单词的组合,组合方式同表名重点字相同.
2) 数据类型不使用固定数据库的类型,标识大众类型,如字符串、字符、数字等。这样在更改数据库时需求的数据是可移植的
3) 输写数据表在数据库中的物理名称,可用自己熟悉的语言再定义表名称,方便沟通。
4) 长度定义又数据类型决定:如字符串可选8000以下,数字可在50位之间,字符只允许一位。
5) 输入方式表示数据的来源:生成表由程序或数据库的索引自动生成,而不需人工录入;输入表示通过文本框等输入的数据;选择表单选框、复选框、下拉列表等通过选择输入的数据;自定获取是为外码的输入设定的,它由程序自动获取.
主要表结构:
见数据库文件。
3。 数据库的完整性和安全性
1) 数据库的完整性
数据库的完整性是指数据的正确性和相容性。数据库管理系统(DBMS)用一定的机制来检查数据库中的数据是否满足规定的条件——完整性约束条件,数据的约束条件是语义的体现,将作为模式的一部分存入数据库中。
本系统中定义了表与表之间的联系有助于实现完整性规则,一般在程序中实现具体的完整性控制。
2) 数据库的安全性
数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄漏、更
改或破坏。在数据库系统中,大量的数据集中存放,而且为许多用户直接共享,
是宝贵的信息资源,系统的安全保护措施就显得更为重要,它保护数据库防止恶
意的破坏和非法的存取。
本系统包括数据库的安全和服务器的安全。采用管理员表示和鉴定的方法实
现数据库的安全,此安全管理措施并不在前台开发工具中实现,而是在后台数据
库中实现。在登录数据库时,系统让用户表示自己的身份,不同的用户权限不同,系统进行核实,鉴别此用户是否为合法用户,若是,系统进一步核实用户,通常要求用户输入口令,系统和对用户口令以鉴别用户身份。
第四章、系统的实现
4.1 数据库连接的建立
对于数据库的连接,我们的数据访问接口采用JDBC—ODBC桥数据驱动程序,以纯Java的方式来连接数据库,为访问不同的数据库提供统一的接口。
由于我们开发时是利用MVC的设计模式,所以在此我们的数据库连接是封存在配置文件中的,但你使用不同是数据库系统时仅需要在此修改即可。
具体代码如下:
jdbc.Driver=com.mysql。jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/exam?useUnicode=true&characterEncoding=UTF—8
jdbc.root=root
jdbc。password=123456
jdbc.maxPoolSize=500
jdbc。minPoolSize=1
jdbc。initialPoolSize=20
4。2 各子系统模块程序设计举例
4。2.1 用户登陆的实现
1. 对于已注册的用户根据用户名和密码进行登陆,登录界面如下:
图3.6用户登录界面
2。 填写您的用户名和密码;
3. 击“登陆”按钮;
4。 用户名、密码和验证码都正确,登陆成功,进入系统主界面;
4。2.2学生和教师身份验证
主要代码:
@RequestMapping("/login”)
public String login(HttpServletRequest request) {
String userType = request。getParameter(”user”);
String username = request.getParameter("username”);
String password = request.getParameter("password”);
if (username == null || username。equals(””) || password == null
|| password。equals("")) {
i = i + 1;
if(i <= 3){
request。setAttribute("msg", "登录错误!,您还有"+(3-i)+”次机会”);
return ”/login”;
}else{
return "a”;
}
}
// TODO userType=0表示教师,userType=1表示学生
if (userType.equals(”0")) {
Admin admin = adminService.login(username, password);
if (admin != null) {
request.getSession()。setAttribute("adminId", admin。getId());
request.getSession()。setAttribute("userType”, userType);
request。getSession().setAttribute("username", username);
return "forward:/admin/index";
} else {
i = i + 1;
if(i<=3){
request。setAttribute("msg", ”登录错误!,您还有”+(3-i)+”次机会");
return ”/login”;
}else{
return ”a”;
}
}
} else {
try {
request.getSession().setAttribute(”username”, username);
Integer num = Integer。parseInt(username);
Student stu = studentService。login(num);
request.getSession().setAttribute("stuId", stu.getId());
if (stu != null && password。equals(stu。getNum()。toString())) {
request。getSession()。setAttribute("userType",userType);
request。getSession().setAttribute(”stuId",stu。getId());
return ”redirect:/student/index”;
} else {
i = i + 1;
if(i<=3){
request.setAttribute("msg”, ”登录错误!,您还有"+(3-i)+”次机会");
return ”login";
}else{
return ”a”;
}
}
} catch (Exception e) {
i = i + 1;
if(i〈=3){
request.setAttribute("msg", ”登录错误!,您还有"+(3—i)+"次机会");
return "login”;
}else{
return "a";
}
}
}
4.2.3 学生考试的实现:
学生通过成功登录之后,会自动跳转到该页面,可以进行进行考试,如下图所示:
主要代码如下:
@RequestMapping("/selectStuPaperListByStuId")
public String selectStuPaperListByStuId(HttpServletRequest request) {
String stuid = request。getParameter(”id”);
try {
Integer stuId = Integer。parseInt(stuid);
if(request。getSession().getAttribute(”stuId") == null){
request。getSession().setAttribute("stuId”, stuId);
}else{
request。getSession().removeAttribute("stuId”);
request.getSession()。setAttribute("stuId", stuId);
}
List〈AdminPaper> adminPapers = new ArrayList〈AdminPaper>();
List<Integer〉 adminPaperIdList = studentPaperService
.selectStuPaperListByStuId(stuId);
int j = adminPaperIdList.size();
for (int i = 0; i < j; i++) {
Integer adminPaperId = adminPaperIdList.get(i);
AdminPaper adminPaper = adminPaperService.select(adminPaperId);
adminPapers。add(adminPaper);
}
System。out.println(”ddd:” + adminPapers + "eeee:”
+ adminPapers。size());
request。setAttribute(”stuId”, stuId);
request.setAttribute(”adminPapers”, adminPapers);
return ”admin/paper/stuSubmitPaper/stuPaperList”;
} catch (Exception e) {
return ”admin/paper/stuSubmitPaper/info";
}
}
@RequestMapping(”/selectTopicListByAdminPaperIdAndStuId")
public String selectTopicListByAdminPaperIdAndStuId(
HttpServletRequest request) {
Integer currentIndex = null;
Topic topic = null;
Integer page = 1;
Integer limit = 20;
Integer adminPaperId = Integer。parseInt(request
。getParameter(”adminPaperId"));
request.getSession().setAttribute("adminPaperId”, adminPaperId);
try {
currentIndex = Integer.parseInt(request
。getParameter(”currentIndex"));
System。out。println(”2345:" + currentIndex);
Integer currentIndex1 = (Integer) request
.getAttribute("currentIndex”);
if (currentIndex1 != null && !currentIndex.equals(””)) {
System.out。println(”aaaa");
currentIndex = currentIndex1 + 1;
}
} catch (Exception e) {
e.printStackTrace();
}
try {
Integer stuId = (Integer)request。getSession().getAttribute("stuId”);
System.out.println(”adminPaperId:” + adminPaperId + ” stuId:"
+ stuId + " currentIndex:” + currentIndex);
List〈Topic〉 topicList = null;
topicList = (List<Topic>) request。getSession()。getAttribute(
”topicList");
if (t
展开阅读全文