• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

gsq123

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

Spring MVC 考试页面

Spring MVC C 语言单选题考试页面

前端控制器 → 处理器映射 → 控制器 → 模型与视图 → 视图解析器 → JSP 响应

技术栈

  • Spring MVC
  • JSP
  • Apache Tomcat
  • Eclipse

项目结构

image
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>

image

5. result.jsp —— 成绩页面

<h2>你的成绩是:${score} 分</h2>

image

请求处理流程
用户访问 / → DispatcherServlet → 重定向 /exam → 返回 exam.jsp

提交表单 → /submitExam → DispatcherServlet → HandlerMapping 定位到 submitExam()

Controller 通过 @RequestParam 从 request 获取用户答案,比对正确答案计算分数

分数存入 Model(即 ModelAndView),返回逻辑视图名 "result"

ViewResolver 将 "result" 解析为 /WEB-INF/jsp/result.jsp,渲染并响应

posted on 2026-05-24 10:24  YyB123  阅读(9)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3