springMVC普通执行流程

本文介绍了springMVC的基本执行流程,从Tomcat加载web.xml开始,接着加载springmvc.xml创建Spring容器,然后客户端请求到达DispatcherServlet,通过注解匹配执行相应方法,最后由视图解析器处理页面跳转。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

springMVC普通执行流程

(在阅读前需要有spring框架的基础知识支持)

当你学习完servlet之后,再接触springMVC时就会感觉一脸懵x,因为我们在看到springMVC中,只需要有一个Controller控制器类,就可以对浏览器发送来的请求进行相应,很神奇,但其中是有很多故事的,下面是一个基于注解的控制器类:

@Controller		//作为控制器的类必须使用这个注解
public class XXXController{
    //下面为处理请求的控制器方法
    @RequestMapping("标记1")
    public String 方法名(){
        //方法体,处理浏览器的请求
        //返回值(需要是要跳转的页面的名称)例如
        return "标记2";
    }
}

就想这样的一个很普通的类就可以对浏览器的请求进行处理,这样就是与servlet进行了解耦。下面就开始介绍springMVC的普通执行流程(以普通的页面页面跳转为例):

1、我们都知道,在Tomcat启动时,会先加载web.xml文件,内容如下:

<!--配置一个Servlet-->
  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--运行所需配置文件-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
      <!--springmvc.xml为spring的配置文件-->
    </init-param>
    <!--指定Service启动顺序,当引用加载时就创建-->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

加载web.xml文件后,就会实例化并初始化Servlet()DispatcherServlet

2、根据标签中的内容,再去加载springmvc.xml配置文件,内容如下

<!--配置要扫描的包-->
<conext:component-scan base-package="com.khd"></conext:component-scan>

<!--配置视图解析器-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
     <property name="prefix" value="/WEB-INF/pages/"></property>
     <property name="suffix" value=".jsp"></property>
</bean>

<!--开启对注解的支持-->
<mvc:annotation-driven></mvc:annotation-driven>

加载springmvc配置文件,创建spring容器,初始化容器中的对象。

3、页面加载好后,我们点击链接,就属于客户端发送了一次请求,页面具体代码:

<a href="${pageContext.request.contextPath}/frist">点击进入</a>

4、请求到达DispatcherServlet,到达前端控制器,具体代码如下:

@Controller
public class FristController {

    //处理请求的方法
    @RequestMapping("/frist")
    public String frist(){
        System.out.println("第一个控制器。。。");
        return "success";
    }
}

截取点击的动作名称**/first**,与**@RequestMapping("/frist")进中找名称相同的内容,找到后执行被注释的方法,方法返回"success"**,使用视图解析器(InternalResourceViewResolver)拼接出要跳转的地址(/WEB-INF/pages/success.jsp),从而进行跳转。

springmvc执行图解:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值