• springmvc11


    解读中央调度器 < url-pattern/ >

    1 .do

    在没有特殊要求的情况下,springmvc 的中央调度器 DispatcherServlet 的< url-pattern/ >常使用后缀匹配方式,如写为 *.do 或者 *.action , *.mvc 等


    2 /

    可以写为 / ,因为DispatcherServlet会将向静态资源的获取请求,例如 .css .js .jpg .png 等资源的获取请求,作为是一个普通的Controller请求。中央调度器会调用处理器映射器为其查找相应的处理器。当然也是找不到的,所以在这种情况下,所有的静态资源获取请求也均会报404错误。


    发起的请求是由哪些服务器处理的:

    http: //localhost:8080/05_url_pattern/index.jsp tomcat
    http: //localhost:8080/05_url_pattern/images/1.jpg tomcat
    http: //localhost:8080/05_url_pattern/html/test.html tomcat
    http: //localhost:8080/05_url_pattern/some.do springmvc框架(DispatcherServlet)


    tomcat本身能处理静态资源的访问,像html,图片,js文件等都是静态资源


    tomcat的web.xml文件有一个 servlet 名称为 default,在服务器启动时创建。如下:

    <servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    <init-param>
    <param-name>debug</param-name>
    <param-value>0</param-value>
    </init-param>
    <init-param>
    <param-name>listings</param-name>
    <param-value>false</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/</url-pattern> // "/" 表示静态资源和未映射的请求都给这个default处理
    </servlet-mapping>

    这个名叫 default 的 servlet 作用:
    1 处理静态资源
    2 处理未映射到其它servlet的请求


    使用 ” / “ 后,无法访问静态资源,可以访问动态资源

    // web.xml
    <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <!--
    使用框架的时候,url-pattern可以使用两种方式
    1.使用扩展名方式,语法 *.xxxx , xxxx时自定义扩展名。常用的方式 *.do, *.action, *.mvc等等
    http://localhost:8080/myweb/some.do
    http://localhost:8080?myweb/other.do

    2.使用斜杠 "/"
    当你的项目使用了 / ,它会替换 tomcat 中的 default.
    导致所有的静态资源都给DispatcherServlet处理,默认情况下DispatcherServlet没有处理静态资源的能力,
    没有控制器对象能处理静态资源的访问,所以静态资源(html,js,图片,css)都是404

    动态资源some.do可以访问,原因时我们程序中有MyController控制器对象,能处理some.do请求
    -->
    <url-pattern>/</url-pattern>
    </servlet-mapping>

  • 相关阅读:
    AOP的相关理论介绍
    代码访问数据库时没有报错一直转圈,MySQL不同驱动版本的连接方式
    Linux(CentOS7)设置固定获取IP地址
    NodeJS的安装与配置
    IDEA启动tomcat访问localhost:8080出现404错误
    Win10笔记本电脑外接显示器,如何在笔记本合上的时候让他继续在显示器上使用
    SpringBoot集成Swagger-Bootstrap-UI(已改名为Knife4j)
    Redis学习之Jedis的操作和使用
    SpringBoot整合Swagger2,搭建Restful API在线文档
    IDEA创建SpringBoot项目时出现:Initialization failed for 'https://start.spring.io' Please check URL, network and proxy settings.
  • 原文地址:https://www.cnblogs.com/huaobin/p/14908543.html
Copyright © 2020-2023  润新知