用jsp代码实现一个简易的在线考试系统
先登录,验证信息后跳转考试页面,然后再统计分数
1.登录页面 login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<script type="text/javascript">
function check(){
var one=document.forms[0].name.value;
var two=document.forms[0].pwd.value;
if(!one){
alert("不允许为空!");
return false;}
else if(!two){
alert("不允许为空");
return false;}
else {
document.forms[0].action="check.jsp";}
}
</script>
<body>
<form action="" method="post">
姓名<input type="text" name="name"><br><br>
准考证号<input type="pwd" name="pwd"><br>
<input type="submit" name="sub" value="提交" onclick="check()">
<input type="reset" name="res" value="重置">
</form>
</body>
</html>
2.检测页面 check.jsp,检查用户信息是否正确,若正确,跳转到考试系统,若不正确,返回登录页面
这里我们设置用户名为aaa,准考证号为123456
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<% request.setCharacterEncoding("GBK");
String name=request.getParameter("name");
String pwd=request.getParameter("pwd");
if((name.equals("aaa"))&&(pwd.equals("123456"))){
out.print("登录成功,3秒后跳转到考试页面");
session.setAttribute("name",name);
response.setHeader("refresh","3;example.jsp");
session.setAttribute("name",name);
session.setAttribute("pwd",pwd);
}
else{
response.setHeader("refresh","2;login.jsp");
}
session.setAttribute("pwd",pwd);
%>
</body>
</html>
3.在线考试页面example.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%if (session.getAttribute("name")==null){%>
<h1>用户还没有登录</h1>
<%}else {%>
<h1>欢迎<%= session.getAttribute("name")%>登录本系统</h1>
<h2>准考证号:<%= session.getAttribute("pwd")%></h2>
<a href="loginout.jsp">注销登录</a>
<form action="examplecheck.jsp" method="post">
<h3>一,单项选择题(每题2分)</h3>
<br>
1.下列哪个方法是获取 session中关键字是key的对象( ) <br>
<input type="radio" name="r1" value="A">A. public void setAttribute(String key, Object obj) <br>
<input type="radio" name="r1" value="B"> B. public void removeAttribute(String key)<br>
<input type="radio" name="r1" value="C">C. publie Enuneration getAttributeNanes<br>
<input type="radio" name="r1" value="D">D. public 0bject getAttibute(String key)<br>
<h3>二、判断题(每题2分)</h3><br>
1.同一客户在多个wb服务目录中,所对应的 session对象是互不相同的 <br>
<input type="radio" name="r2" value="True ">True
<input type="radio" name="r2" value="False">False<br>
<h3>三、多选题(每题3分)</h3><br>
1.以下属于JSP的内置对象有哪些<br>
<input type="checkbox" name="r3" value="A">A.request
<input type="checkbox" name="r3" value="B">B.response
<input type="checkbox" name="r3" value="C">C.session
<input type="checkbox" name="r3" value="D">D.JavaScript
<br>
<input type="submit" name="sub" value="提交" >
<input type="reset" name="res" value="重置">
<%}%>
</body>
</html>
4.确认提交页面examplecheck.jsp,当考试提交时,显示考生提交的答案,再点击提交才能进入成绩页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%if (session.getAttribute("name")==null){%>
<h1>用户还没有登录</h1>
<%}else {%>
<h1>欢迎<%= session.getAttribute("name")%>登录本系统</h1>
<h2>准考证号:<%= session.getAttribute("pwd")%></h2>
<a href="loginout.jsp">注销登录</a>
<form action="grade.jsp" method="post">
<% request.setCharacterEncoding("UTF-8");
String r1=request.getParameter("r1");
String r2=request.getParameter("r2");
session.setAttribute("r1", r1);
session.setAttribute("r2", r2);
%>
<h3>一,单项选择题</h3>
1.<%out.print(r1);%>
<h3>二,判断题</h3>
2.<%out.print(r2);%>
<h3>三,多选题</h3>
3.
<%String r3[]=request.getParameterValues("r3");
if(r3!=null){
for(int a=0;a<r3.length;a++){
out.print(r3[a]);
}}
session.setAttribute("r3", r3);
%>
<%}%>
<br>
<input type="submit" name="sub" value="提交" > <br>
<a href="example.jsp">返回考试</a>
</form>
</body>
</html>
5.显示成绩页面grade.jsp,提交后自动批改并显示成绩
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%if (session.getAttribute("name")==null){%>
<h1>用户还没有登录</h1>
<%}else {%>
<h1>欢迎<%= session.getAttribute("name")%>登录本系统</h1>
<h2>准考证号:<%= session.getAttribute("pwd")%></h2>
<a href="loginout.jsp">注销登录</a>
<%
String r1= (String)session.getAttribute("r1");
String r2=(String)session.getAttribute("r2");
String r3[]=(String [])session.getAttribute("r3");
int sum=0;
if(r1.equals("D"));
{sum=sum+2;}
if(r2.equals("True"));
{sum=sum+2;}
if(r3[0].equals("A")&&r3[1].equals("B")&&r3[2].equals("C"))
{sum=sum+3;}
%>
<h2>您的成绩如下:</h2>
准考证号:<%= session.getAttribute("pwd")%><br>
成绩:<%=sum %>
<br>
<a href="example.jsp">重新答题</a>
<%}%>
</body>
</html>
6.注销登录页面loginout.jsp,点击注销登录时退出当前登录,返回登录页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>注销登录</title>
</head>
<body>
<%
session.invalidate();
response.sendRedirect("login.jsp");
%>
<h1>您已成功退出本系统,两秒后跳转回首页,如果没有,请按<a href="login.jsp"></a>这里</h1>
<% response.setHeader("refresh","2;login.jsp");
%>
</body>
</html>