创建 maven 工程添加依赖,并将工程设置为 web 工程
<packaging>war</packaging>
<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>
第一种方式
- 第一种实现 HttpRequestHandler 接口
/**
* 这是一个接口,这个接口类似于 Servlet,一个接口可以处理一个请求
*/
public class HelloController implements HttpRequestHandler {
/**
* 这个就是具体的请求处理方法
*
* @param request 当前请求
* @param response 当前响应对象
* @throws Exception
*/
@Override
public void handleRequest(HttpServletRequest request, HttpServletResponse response) {
System.out.println("handleRequest");
}
}
- 配置 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.HelloController" 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="/hello2">hello</prop>
<prop key="/hello3">hello</prop>
</props>
</property>
</bean>
<!--
这是一个处理器适配器,这个适配器用来执行通过实现 HttpRequestHandler 接口来定义的接口
-->
<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter" id="handlerAdapter"/>
</beans>
第二种方式
- 第二种实现 controller 接口
public class HelloController2 implements Controller {
/**
*
* @param request
* @param response
* @return 返回值是 ModelAndView,即【模型+视图】视图就是页面,模型就是要填充到页面中的数据
* @throws Exception
*/
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("HelloController2");
return null;
}
}
- 配置 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="hello2"/>
<!--
这是一个处理器映射器:
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="/hello3">hello2</prop>
</props>
</property>
</bean>
<!--
这是一个处理器适配器,这个适配器用来执行通过实现 SimpleUrlHandlerMapping 接口来定义的接口
-->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
</beans>
工作流程: