【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 考试页面

屏幕截图 2026-05-22 161159

屏幕截图 2026-05-22 161209

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

4.2 评分页面

屏幕截图 2026-05-22 161327

提交后显示得分和每道题的答题情况:

绿色✓表示正确 红色✗表示错误

同时显示您的答案和正确答案

五、遇到的问题

问题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:[项目地址]

在线访问:http://114.55.131.27:8080/ExamSystem/exam.jsp

posted @ 2026-05-22 16:47  只整冰红茶  阅读(18)  评论(0)    收藏  举报