Spring MVC 是基于 Java 实现 MVC 的轻量级 Web 框架
导入 jar 包
pom.xml 文件导入依赖:
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.0.RELEASE</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>javax.servlet.jsp-api</artifactId><version>2.3.3</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency>
配置 web.xml 文件:
注册 DispatcherServlet
org.springframework.web.servlet.DispatcherServlet
关联一个 SpringMVC 的配置文件 <init-param>
启动级别 <load-on-startup>
/ 匹配所有的请求,不包括 .jsp
/* 匹配所有的请求,包括 .jsp
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"metadata-complete="true"><!-- 注册DispatcherServlet --><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 关联一个SpringMVC的配置文件 --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc-servlet.xml</param-value></init-param><!-- 启动级别 --><load-on-startup>1</load-on-startup></servlet><!-- /匹配所有的请求,不包括.jsp --><!-- /*匹配所有的请求,包括.jsp --><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>
关联 SpingMVC 的配置文件 springmvc-servlet.xml(放在 resources 目录下)
添加处理器映射
org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping
添加处理器适配器
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter
添加视图解析器
org.springframework.web.servlet.view.InternalResourceViewResolver
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.2.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.2.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"><!-- 视图解析器:DispatcherServlet 给它的 ModelAndView1.获取 ModelAndView 的数据2.解析 ModelAndView 的视图名字3.拼接视图名字,找到对应的视图 /WEB-INF/jsp/hello.jsp4.将数据渲染到这个视图上--><!-- 添加处理器映射 --><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/><!-- 添加处理器适配器 --><bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/><!-- 添加视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver"><!-- 前缀 --><property name="prefix" value="/WEB-INF/jsp/"/><!-- 后缀 --><property name="suffix" value=".jsp"/></bean><!-- Handle --><bean id="/hello" class="com.demo.controller.HelloController"/></beans>
实现 Controller 接口,重写方法
ModelAndView 模型和视图
封装对象、封装视图
package com.demo.controller;import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class HelloController implements Controller {@Overridepublic ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {//ModelAndView 模型和视图ModelAndView modelAndView = new ModelAndView();//封装对象,放在ModelAdnView中modelAndView.addObject("msg","HelloSpringMVC!");//封装要跳转的视图,放在ModelAndView中modelAndView.setViewName("hello"); // /WEB-INF/jsp/hello.jspreturn modelAndView;}
}
在 WEB-INF 目录下创建 jsp 目录
在 hello.jsp 页面写一行 ${msg}
注意 jsp 目录放在 WEB-INF 目录下
(之前放错了位置一直报 404,还在考虑是不是 web 环境问题,给我气笑了)
在 springmvc-servlet.xml 文件下添加一行
(注意:一定要加 /,不然找不到,又报 404)
<!-- Handle -->
<bean id="/hello" class="com.demo.controller.HelloController"/>
配置 Smart Tomcat,运行后地址栏添加后缀即可
输出成功!