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/javaee
http://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/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
<!-- 视图解析器:DispatcherServlet 给它的 ModelAndView
1.获取 ModelAndView 的数据
2.解析 ModelAndView 的视图名字
3.拼接视图名字,找到对应的视图 /WEB-INF/jsp/hello.jsp
4.将数据渲染到这个视图上
-->
<!-- 添加处理器映射 -->
<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 {
@Override
public 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.jsp
return 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,运行后地址栏添加后缀即可
输出成功!