专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

Spring MVC 入门教程(springmvc入门程序)

ins518 2025-03-20 15:31:31 技术文章 12 ℃ 0 评论

Spring MVC 入门教程

1. 简介

Spring MVC 是 Spring 框架的一部分,用于构建基于 Java 的 Web 应用程序。它遵循 Model-View-Controller (MVC) 设计模式,将应用程序的输入、处理和输出分离。

1.1 核心组件

  • Model(模型):表示应用程序的数据层。
  • View(视图):负责展示数据给用户。
  • Controller(控制器):处理用户请求,并调用相应的业务逻辑来更新模型或返回视图。

2. 环境搭建

2.1 创建 Maven 项目

使用 IDE(如 IntelliJ IDEA 或 Eclipse)创建一个新的 Maven 项目。确保在 pom.xml 中添加以下依赖:

\\\`xml org.springframeworkspring-webmvc5.3.20

javax.servletjavax.servlet-api4.0.1provided

javax.servlet.jspjavax.servlet.jsp-api2.3.3provided

javax.servletjstl1.2 \\\`

2.2 配置 web.xml

在 src/main/webapp/WEB-INF 目录下创建 web.xml 文件,配置 DispatcherServlet:

\\\`xml

dispatcherorg.springframework.web.servlet.DispatcherServlet1

dispatcher/

index.jsp \\\`

2.3 配置 Spring MVC 配置文件

在 src/main/resources 目录下创建 spring-mvc-config.xml 文件,配置视图解析器和其他设置:

\\\`xml

mvc:annotation-driven /

context:component-scan base-package="com.example.controller" /

\\\`

2.4 创建 JSP 页面

在 src/main/webapp/WEB-INF/views 目录下创建一个简单的 JSP 页面 hello.jsp:

\\\`jsp <%@ page contenttype='text/html;charset=UTF-8' language='java'>

Hello World

${message}

\\\`

2.5 创建 Controller

在 src/main/java/com/example/controller 目录下创建一个控制器类 HelloController.java:

\\\`java package com.example.controller;

import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping;

@Controller public class HelloController {

@GetMapping("/hello") public String hello(Model model) { model.addAttribute("message", "Hello, Spring MVC!"); return "hello"; } } \\\`

2.6 启动应用

启动应用后,访问 http://localhost:8080/hello,你应该会看到页面上显示 "Hello, Spring MVC!"。

3. 进阶功能

3.1 表单处理

创建一个表单页面 form.jsp:

\\\`jsp <%@ page contenttype='text/html;charset=UTF-8' language='java'>

Form Submission Name:

Age:

\\\`

创建一个控制器方法来处理表单提交:

java @PostMapping("/submitForm") public String submitForm(@RequestParam("name") String name, @RequestParam("age") int age, Model model) { model.addAttribute("name", name); model.addAttribute("age", age); return "result"; }

创建结果页面 result.jsp:

\\\`jsp <%@ page contenttype='text/html;charset=UTF-8' language='java'>

Result

Name: ${name}

Age: ${age}

\\\`

3.2 数据验证

使用 Hibernate Validator 来进行数据验证:

  1. 添加依赖:

xml org.hibernate.validator hibernate-validator 6.2.0.Final

  1. 创建一个带有验证注解的 DTO 类:

\\\`java package com.example.dto;

import javax.validation.constraints.NotEmpty; import javax.validation.constraints.Size;

public class UserDTO {

@NotEmpty(message = "Name is required") @Size(min = 2, max = 30, message = "Name must be between 2 and 30 characters") private String name;

// Getters and Setters } \\\`

  1. 在控制器中使用 @Valid 注解:

java @PostMapping("/submitUser") public String submitUser(@Valid @ModelAttribute("user") UserDTO user, BindingResult result, Model model) { if (result.hasErrors()) { return "form"; } model.addAttribute("name", user.getName()); return "result"; }

3.3 RESTful Web Services

创建一个 RESTful 控制器:

\\\`java @RestController @RequestMapping("/api") public class RestController {

@GetMapping("/greet") public ResponseEntity greet() { return new ResponseEntity<>("Hello, RESTful API!", HttpStatus.OK); }

@PostMapping("/users") public ResponseEntity createUser(@RequestBody UserDTO user) { // Process the user data return new ResponseEntity<>(user, HttpStatus.CREATED); } } \\\`

4. 常见面试题

4.1 什么是 Spring MVC?

Spring MVC 是 Spring 框架的一部分,用于构建 Web 应用程序。它实现了 MVC 设计模式,提供了清晰的角色分离,使得代码更易于维护和扩展。

4.2 Spring MVC 中的 DispatcherServlet 是什么?

DispatcherServlet 是 Spring MVC 的前端控制器,负责接收所有 HTTP 请求,并将它们分发到适当的控制器进行处理。

4.3 如何在 Spring MVC 中处理表单提交?

可以通过 @ModelAttribute 和 @RequestParam 注解来绑定表单数据到控制器方法的参数中。对于复杂的对象,可以使用 @ModelAttribute 注解。

4.4 如何实现 RESTful Web 服务?

通过使用 @RestController 注解定义 RESTful 控制器,并使用 @RequestMapping 及其变体(如 @GetMapping, @PostMapping)来映射 HTTP 请求到控制器方法。

4.5 如何在 Spring MVC 中进行数据验证?

可以使用 Hibernate Validator 提供的注解(如 @NotNull, @Size 等)对请求参数或表单数据进行验证。结合 @Valid 注解可以在控制器方法中触发验证逻辑。

4.6 如何处理异常?

可以通过 @ExceptionHandler 注解创建全局异常处理器,或者使用 @ControllerAdvice 注解来定义跨多个控制器的异常处理逻辑。

4.7 如何配置视图解析器?

可以通过 InternalResourceViewResolver 或 ThymeleafViewResolver 等类来配置视图解析器,指定视图文件的前缀和后缀路径。

4.8 如何启用 CORS 支持?

可以通过在 WebMvcConfigurer 中重写 addCorsMappings 方法来配置跨域资源共享(CORS),或者使用 @CrossOrigin 注解为特定的控制器方法启用 CORS。


希望这个教程对你有所帮助!如果有任何问题或需要进一步解释,请随时提问。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表