Spring MVC 考试页面
Spring MVC C 语言单选题考试页面
前端控制器 → 处理器映射 → 控制器 → 模型与视图 → 视图解析器 → JSP 响应
技术栈
- Spring MVC
- JSP
- Apache Tomcat
- Eclipse
项目结构

C_exam002
├── src
│ └── com/exam/controller
│ └── ExamController.java
└── WebContent
├── WEB-INF
│ ├── web.xml
│ ├── springmvc-servlet.xml
│ └── jsp
│ ├── exam.jsp
│ └── result.jsp
└── index.jsp
核心代码
1. web.xml —— 前端控制器配置
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
2. springmvc-servlet.xml —— Spring 上下文配置
<context:component-scan base-package="com.exam.controller"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
<mvc:annotation-driven/>
3. ExamController.java —— 控制器
@Controller
public class ExamController {
// 根路径重定向到考试页
@RequestMapping("/")
public String index() {
return "redirect:/exam";
}
// 显示考试页面
@RequestMapping("/exam")
public String showExam() {
return "exam";
}
// 评分处理
@RequestMapping("/submitExam")
public String submitExam(
@RequestParam("q1") String q1,
@RequestParam("q2") String q2,
@RequestParam("q3") String q3,
@RequestParam("q4") String q4,
@RequestParam("q5") String q5,
Model model) {
String[] answers = {"C", "A", "D", "B", "C"};
int score = 0;
String[] userAnswers = {q1, q2, q3, q4, q5};
for (int i = 0; i < answers.length; i++) {
if (answers[i].equalsIgnoreCase(userAnswers[i].trim())) {
score += 20;
}
}
model.addAttribute("score", score);
return "result";
}
}
4. exam.jsp —— 试卷页面
<form action="submitExam" method="post">
<p>1. 以下哪个是C语言的关键字?<br/>
<input type="radio" name="q1" value="A">A. integer
<input type="radio" name="q1" value="C">C. int</p>
<!-- 其余4题结构相同,略 -->
<input type="submit" value="提交">
</form>

5. result.jsp —— 成绩页面
<h2>你的成绩是:${score} 分</h2>

请求处理流程
用户访问 / → DispatcherServlet → 重定向 /exam → 返回 exam.jsp
提交表单 → /submitExam → DispatcherServlet → HandlerMapping 定位到 submitExam()
Controller 通过 @RequestParam 从 request 获取用户答案,比对正确答案计算分数
分数存入 Model(即 ModelAndView),返回逻辑视图名 "result"
ViewResolver 将 "result" 解析为 /WEB-INF/jsp/result.jsp,渲染并响应
浙公网安备 33010602011771号