【Web编程技术实验七】基于JSP的标准化考试系统(request对象应用)
一、实验背景
本次实验要实现一个在线标准化考试系统:
- 考试页面显示5道单选题
- 用户选择答案后提交
- 评分页面计算得分并显示每道题的对错
核心技术: JSP + request对象 + HTML表单
二、技术原理
2.1 request对象是什么?
request是JSP的内置对象,封装了客户端发送给服务器的所有数据。用户提交表单后,服务器通过request对象获取表单中的参数。
2.2 实现流程
用户访问 exam.jsp
↓
选择答案,点击提交
↓
表单数据发送到 result.jsp
↓
request.getParameter() 获取每道题的答案
↓
与正确答案比对,计算得分
↓
显示总分和每道题的对错
三、核心代码
3.1 考试页面(exam.jsp)- 表单部分
<form action="result.jsp" method="post">
<!-- 第1题 -->
<div class="question">
<div>1. JSP的英文全称是什么?</div>
<input type="radio" name="q1" value="A"> A. Java Server Pages
<input type="radio" name="q1" value="B"> B. Java Script Pages
<input type="radio" name="q1" value="C"> C. Java Servlet Pages
<input type="radio" name="q1" value="D"> D. Java Server Protocol
</div>
<!-- 第2-5题类似 -->
<button type="submit">提交试卷</button>
</form>
关键点: 同一组radio的name属性必须相同,value属性代表选项值。
3.2 评分页面(result.jsp)- 核心逻辑
// 设置编码,防止中文乱码
request.setCharacterEncoding("UTF-8");
// 定义正确答案
String[] answers = {"A", "D", "A", "C", "B"};
// 获取用户答案
String q1 = request.getParameter("q1");
String q2 = request.getParameter("q2");
// ... 获取所有答案
// 计算得分(每题20分)
int score = 0;
if (q1 != null && q1.equals(answers[0])) score += 20;
if (q2 != null && q2.equals(answers[1])) score += 20;
// ... 其他题目
// 显示结果
out.println("您的得分:" + score + "分");
关键点:
request.getParameter() 获取表单提交的值
需要判断null,防止未选答案时报错
每题20分,5题满分100分
四、运行效果
4.1 考试页面


用户进入考试页面,看到5道单选题,选择答案后点击「提交试卷」。
4.2 评分页面

提交后显示得分和每道题的答题情况:
绿色✓表示正确 红色✗表示错误
同时显示您的答案和正确答案
五、遇到的问题
问题1:未选答案时报错
现象:用户没有选某道题,直接提交,程序报空指针异常。
原因:request.getParameter() 返回 null,调用 equals() 方法报错。
解决:添加空值判断 if (q1 != null && q1.equals("A"))
问题2:中文乱码
现象:页面显示的中文变成问号。
原因:请求和响应的编码不一致。
解决:在JSP开头添加 request.setCharacterEncoding("UTF-8")
问题3:正确答案显示不直观
现象:只显示选项字母(如"A"),用户不知道A代表什么内容。
解决:用数组存储每个选项的完整文字,显示时根据选项字母映射出来。
六、总结
通过本次实验,我们小组掌握了:
request对象的使用:通过getParameter()获取表单数据
表单提交原理:method="post" 和 action 属性的作用
空值判断:防止未选答案导致的异常
数据比对逻辑:遍历数组,逐题比对计算得分
七、源码地址
GitHub:[项目地址]

浙公网安备 33010602011771号