SpringMVC中的HelloWorld的运行流程&web.xml的相关配置及详细说明

本文详细介绍了SpringMVC中HelloWorld的运行步骤,从客户端请求到DispatcherServlet的智能调度,再到视图解析器的页面定位。同时,分析了web.xml配置,包括DispatcherServlet的初始化参数、加载顺序以及URL映射配置,确保了SpringMVC能够拦截并处理所有请求。此外,还探讨了@RequestMapping注解的使用以及默认配置文件的位置。

SpringMVC中的HelloWorld的运行流程&web.xml的相关配置及详细解答

HelloWorld:细节

1、运行流程
  • 1)、客户端点击链接会发送http://localhost:8080/springmvc/hello请求
  • 2)、来到tomcat服务器
  • 3)、SpringMVC的前端控制器收到所有请求;
  • 4)、来看请求地址和@RequestMapping标注的哪个匹配,找到到底哪个哪个方法来处理
  • 5)、前端控制器(DispatcherServlet) 找到了目标处理器类和目标处理方法,直接利用返回执行目标方法
  • 6)、方法执行完成之后会有一个返回值;SpringMVC认为这个返回值就是要去的页面地址
  • 7)、拿到了方法的返回值之后,用视图解析器进行拼串,就得到了完整的页面地址
  • 8)、拿到页面地址,前端控制器帮我们转发到这个页面
2、@RequestMapping:
            这个/是可以省略的,即使省略了,也默认是从当前项目下开始的
            习惯上加上比较好  /hello
           RequestMapping,既能用在方法上面,也能加在类上面
3、如果不指定配置文件的位置?
                     /WEB-INF/dispatcherServlet-servlet.xml
                     如果不指定配置文件,也会默认去找
                                /WEB-INF/dispatcherServlet-servlet.xml
web.xml的相关配置及其详细说明
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         id="WebApp_ID" version="2.5">


    <display-name>Archetype Created Web Application</display-name>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <!-- SpringMVC思想是有一个前端控制器能拦截所有请求,并智能派发;
     这个前端控制器是一个Servlet,应该在web.xml中进行配置,来拦截所有请求
     -->
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <!-- contextConfigLocation:指定SpringMVC的配置文件的位置

                   -->
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>

        <!--  servlet启动加载:servlet原本是第一次访问创建对象;
          load-on-startup:服务器启动的时候就会创建对象;值越小优先级越高

          -->
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!--
        /:拦截所有请求,不拦截jsp请求,*.jsp页面
        /*:拦截所有请求,拦截jsp页面,*.jsp页面
        处理  *.jsp是tomcat做的事;所有项目的小web.xml都是继承于大的web.xml
        DefaultServlet是tomcat中处理静态资源的?
                除过jsp和servlet之外的其他的资源都是静态资源;
                index.html:是静态资源,tomcat就会在服务器下找到这个资源并且返回
                相当于我们前端控制器的/禁用了tomcat服务器中的DefaultServlet



        1)、服务器的大web.xml中有一个DefaultServlet是url-pattern=/
        2)、我们的配置中前端控制器url-pattern=/
                        静态资源会来到DefaultServlet(前端控制器)看哪个方法的RequestMapping是这个index.html
        3)、为什么jsp又能访问;因为我们没有覆盖服务器中的JspServlet的配置
        4)、 /*就直接是拦截所有请求;我们写/为了迎合Rest风格的URL地址


      -->


    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <!--
            /*和/都是拦截所有请求: / 也会拦截所有请求,但是不会拦截.jsp;能保证jsp访问正常
            /*的范围更大,还会拦截到*.jsp这些请求,一旦拦截jsp页面就不能显示了
        -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值