本文引用自:《Java EE企业级应用开发教程》
Spring MVC是Spring提供的一个实现了Web MVC设计模式的轻量级Web框架。它具有如下特点:
- 是Spring框架的一部分,可以方便地利用Spring所提供的其他功能。
- 灵活性强,易于与其他框架集成。
- 提供了一个前端控制器DispatcherServlet,使开发人员无须额外开发控制器对象。
- 可自动绑定用户输入,并能正确的转换数据类型。
- 内置常见的校验器,可以检验用户输入。如果校验不能通过,那么就会重定向到输入表单。
- 支持国际化。可以根据用户区域显示多国语言。
- 支持多种视图技术。它支持JSP、Velocity和FreeMarker待视图技术。
- 使用基于XML的配置文件,在编辑后,不需要重新编译应用程序。
一、Spring MVC所需Jar包,通常与Spring版本保持一致,Maven的pom.xml配置如下:
<!-- https://mvnrepository.com/artifact/org.springframework/spring-web --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.2.17.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.17.RELEASE</version> </dependency>
二、修改web.xml,配置Spring MVC的前端控制器
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <servlet> <!-- 配置前端过滤器 --> <servlet-name>springmvc</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <!-- 初始化时加载配置文件 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-config.xml</param-value> </init-param> <!-- 表示容器在启动时立即加载Servlet --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
<url-pattern>元素的“/”,会将所有URL拦截,并交由DispatcherServlet处理。
三、创建Controller类,该类需要实现Controller接口
package com.itheima.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; /** * 控制器类 */ public class FirstController implements Controller{ @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) { // 创建ModelAndView对象 ModelAndView mav = new ModelAndView(); // 向模型对象中添加数据 mav.addObject("msg", "这是我的第一个Spring MVC程序"); // 设置逻辑视图名 mav.setViewName("/WEB-INF/jsp/first.jsp"); // 返回ModelAndView对象 return mav; } }
handleRequest是Controller接口的实现方法,FirstController类会调用该方法来处理请求,并返回一个包含视图名和模型的ModelAndView对象。
四、创建Spring MVC的配置文件,配置控制器映射信息(springmvc-config.xml)
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd"> <!-- 配置处理器Handle,映射“/firstController”请求 --> <bean name="/firstController" class="com.itheima.controller.FirstController" /> <!-- 处理器映射器,将处理器Handle的name作为url进行查找 --> <bean class= "org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /> <!-- 处理器适配器,配置对处理器中handleRequest()方法的调用--> <bean class= "org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /> <!-- 视图解析器 --> <bean class= "org.springframework.web.servlet.view.InternalResourceViewResolver"> </bean> </beans>
首先定义一个名称为"/firstController"的Bean,该Bean会将控制器类FirstController映射到/firstController请求中;然后配置处理器映射器BeanNameUrlHandlerMapping和处理器适配器SimpleControllerHandlerAdapter。BeanNameUrlHandlerMapping用于将处理器Bena中的name(即url)进行处理器查找;而SimpleControllerHandlerAdapter用于完成对FirstController处理器中handleRequest方法的调用;最后配置视图解析器,InternalResourceViewResolver,用它解析结果视图,并呈现给用户。
五、创建视图(View)页面first.jsp,位于WEB-INF\jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>入门程序</title> </head> <body> ${msg} </body> </html>
六、启动项目,测试应用
七、总结Spring MVC的工作流程
配图参考:https://blog.csdn.net/qq_36761831/article/details/89053314