- 添加依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.10</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>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
- 继承Controller
public class ModeAndViewExample implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView mv = new ModelAndView();
mv.addObject("username","露丝");
mv.addObject("age",18);
return mv;
}
}
- spring-servlet.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.xsd">
<!--
这个是 SpringMVC 的配置文件
-->
<!--
这里主要定义两个组件:
1. 处理器映射器(HandlerMapping):根据请求的 URL 地址找到对应的接口
2. 处理器适配器(HandlerAdapter):去执行第一步找到的处理器(处理器+拦截器)
-->
<bean class="com.qfedu.demo.controller.HelloController2" id="hello"/>
<!--
这是一个处理器映射器:
BeanNameUrlHandlerMapping:将 Bean 的名字和 URL 映射起来。
当 SpringMVC 收到 http://localhost:8080/springmvc01/hello 请求,他会首先提取出请求路径,/hello, 然后去查找一个名叫 /hello 的bean,该请求将由该 bean 处理
-->
<!-- <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" id="handlerMapping"/>-->
<!--
这也是一个处理器映射器,这个需要一一配置请求URL地址和 Bean 之间的映射关系
-->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" id="handlerMapping">
<property name="mappings">
<props>
<prop key="/hello">hello</prop>
</props>
</property>
</bean>
<!--
这是一个处理器适配器,这个适配器用来执行通过实现 HttpRequestHandler 接口来定义的接口
-->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!--
配置视图解析器
不同的视图,如 jsp、freemarker、thymeleaf 等都对应了不同的视图解析器
-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="viewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<!--视图的前缀-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--视图的后缀-->
<property name="suffix" value=".jsp"/>
</bean>
</beans>
- jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
${username}
<hr>
${age}
</body>
</html>