SpringMVC的工作流程和两种实现方式

创建 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>

第一种方式

  1. 第一种实现 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");
    }
}

  1. 配置 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>

第二种方式

  1. 第二种实现 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;
    }
}
  1. 配置 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>

工作流程:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值