详解SpringMVC的url-pattern配置及原理剖析

xml里面配置标签:

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
 <display-name>Archetype Created Web Application</display-name>

 <servlet>
 <servlet-name>springmvc</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>
 </init-param>
 </servlet>
 <servlet-mapping>
 <servlet-name>springmvc</servlet-name>

 <!--
  方式一:带后缀,比如*.action *.do *.aaa
    该种方式比较精确、方便,在以前和现在企业中都有很大的使用比例
  方式二:/ 不会拦截 .jsp,但是会拦截.html等静态资源(静态资源:除了servlet和jsp之外的js、css、png等)

   为什么配置为/ 会拦截静态资源???
    因为tomcat容器中有一个web.xml(父),你的项目中也有一个web.xml(子),是一个继承关系
      父web.xml中有一个DefaultServlet, url-pattern 是一个 /
      此时我们自己的web.xml中也配置了一个 / ,覆写了父web.xml的配置
   为什么不拦截.jsp呢?
    因为父web.xml中有一个JspServlet,这个servlet拦截.jsp文件,而我们并没有覆写这个配置,
    所以springmvc此时不拦截jsp,jsp的处理交给了tomcat

   如何解决/拦截静态资源这件事?

  方式三:/* 拦截所有,包括.jsp
 -->
 <!--拦截匹配规则的url请求,进入springmvc框架处理-->
 <url-pattern>/</url-pattern>
 </servlet-mapping>
</web-app>

父xml的路径:

我们配置的springmvc.xml只能对jsp进行拦截,但不能对html等进行拦截,我们在webapp下新建个test.html

然后访问:

原因是没有对html等静态资源后缀进行处理的handle.

我们在springmvc.xml里面配置:

<mvc:default-servlet-handler/>

访问:

继续测试:

如果我们将html页面放在webapp以外的其他位置,都是无法访问的:

那如果我们想让静态资源在resources下面访问,我们应该怎么配置呢?

静态资源配置方案二

将test.html放在resources目录下面,然后配置springmvc.xml:

 <!--静态资源配置,方案二,SpringMVC框架自己处理静态资源
  mapping:约定的静态资源的url规则
  location:指定的静态资源的存放位置
 -->
 <mvc:resources location="classpath:/" mapping="/resources/**"/>

resources目录就是咱们的classpath路径。

访问:

http://localhost:8080/resources/test.html

到此这篇关于详解SpringMVC的url-pattern配置及原理剖析的文章就介绍到这了,更多相关SpringMVC的url-pattern配置内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • tomcat关于配置servlet的url-pattern的问题思路详解

    tomcat在配置web.xml的时候,servlet是一个比较重要的问题,在这里讨论一下servlet中的几个痛点 servlet url-pattern的匹配问题 url-pattern中 / 和 /* 的区别 url-pattern的优先级问题 根路径 / 的匹配问题 1 servlet url-pattern 的匹配问题 url-pattern 有三种匹配模式,分别是路径匹配.精确匹配.后缀匹配 1.1 精确匹配 <url-pattern> 中配置的项必须与url完全精确匹配. 代码举

  • JavaWeb Servlet中url-pattern的使用

    JavaWeb Servlet中url-pattern的使用 1.Sevlet和Filter的url-pattern相关说明 一个页面请求根据url-pattern只匹配一个最佳的Servlet,而根据web.xml的filter-mapping标签的先后顺序,将满足要求的一个或者多个过滤器生成一个FilterChain 2.url-pattern配置 配置web.xml文件,用于定义映射的含义: (1)."/"开头-->路径映射         (2)."*.do&q

  • 详解servlet的url-pattern匹配规则

    本文介绍了servlet的url-pattern匹配规则,分享给大家,具体如下: 首先需要明确几容易混淆的规则: 1.servlet容器中的匹配规则既不是简单的通配,也不是正则表达式,而是特定的规则.所以不要用通配符或者正则表达式的匹配规则来看待servlet的url-pattern. 2.Servlet 2.5开始,一个servlet可以使用多个url-pattern规则,<servlet-mapping>标签声明了与该servlet相应的匹配规则,每个<url-pattern>

  • servlet的url-pattern匹配规则详细描述(小结)

    一.概述 在利用servlet或Filter进行url请求的匹配时,很关键的一点就是匹配规则,但servlet容器中的匹配规则既不是简单的通配,也不是正则表达式,而是由自己的规则,比较容易混淆.本文来详细举例介绍下.下面的说明都是在tomcat服务器中得到验证的. 先介绍一下匹配的概念,上例子代码.在一个app(如名字为myapp)的web.xml文件中,有如下信息: <servlet> <servlet-name>MyServlet</servlet-name> &l

  • 详解django中url路由配置及渲染方式

    今天我们学习如何配置url.如何传参.如何命名.以及渲染的方式,内容大致有以下几个方面. 创建视图函数并访问 创建app django中url规则 捕获参数 路径转换器 正则表达式 额外参数 渲染方式 创建视图并访问 项目中自带的Python文件中,并没有带有视图,因此我们自己创建一个,通常,我们把视图命名views.py. 然后在views.py中,导入头文件 from django.http import HttpResponse 然后我们在views.py中,写一些Python函数,用来访

  • 详解SpringMVC的url-pattern配置及原理剖析

    xml里面配置标签: <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> &

  • 详解SpringMVC的拦截器参数及拦截器链配置

    目录 一.拦截器参数 二.拦截器链配置 一.拦截器参数 前置处理 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("preHandle..."); return true; } 参数: ■ request:请求对象 ■ response:响应对象 ■ handle

  • 详解SpringMVC的拦截器链实现及拦截器链配置

    目录 1.拦截器链实现 2.拦截器链的执行顺序 1.拦截器链实现 只需定义多个拦截器的 bean,然后在拦截器的配置类中将其逐一添加即可 第一个拦截器的定义: @Component public class ProjectInterceptor1 implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, O

  • 详解SpringMVC从基础到源码

    认识SpringMVC SpringMVC 框架是以请求为驱动,围绕 Servlet 设计,将请求发给控制器,然后通过模型对象,分派器来展示请求结果视图.其中核心类是 DispatcherServlet,它是一个 Servlet,顶层是实现的Servlet接口. SpringMVC 处理请求过程 客户端发起请求,会首先经过前端控制器 DispatcherServlet 进行转发,转发到 Handler Mapping DispatcherServlet 从 Handler Mapping 查找处

  • 详解 Nginx 301重定向的配置

    详解 Nginx 301重定向的配置 301重定向是很常见的需求,比如访问 nowamagic.net,自动跳到 www.nowamagic.net.或者倒过来,访问 www.nowamagic.net 跳到 nowamagic.net.Nginx 中配置 301 重定向(301 redirect)很容易,下面介绍下方法. 打开 nginx.conf 文件,找到你的 server 配置段: server { listen 80; server_name nowamagic.net www.now

  • 详解IIS中URL重写工具的匹配URL-规则模式(rule patterns)

    rule patterns规则模式在IIS的URL重写模块中,是较为关键的设置.只有规则模式的URL匹配成功时,其他的规则才能起到作用.规则模式的匹配URL设置主要是匹配URL中的路径部分,一般使用正则表达式和通配符对URL路径进行匹配,下面会仔细的说明. 首先要了解规则模式是匹配URL中的哪一部分,假设当前有网站的URL地址为http://shiyousan.com/Home/Index?page=1,那么规则模式匹配的部分就是Home/Index,域名的主机部分和参数部分如果要匹配,则需要在

  • 详解nginx使用ssl模块配置支持HTTPS访问

    背景: 项目开发中用到了微信小程序,但是服务器配置URL必须是HTTPS,所以需要通过配置nginx的SSL模块来支持HTTPS访问,也就是说,要做一个网站域名为 dmsdbj.com 要求通过HTTPS://dmsdbj.com进行访问. SSL英文名为Secure Socket Layer,安全套接字层.SSL是一种数字证书,它使用ssl协议在浏览器和web server之间建立一条安全通道,数据信息在client与server之间的安全传输. 本篇博客是对这个操作步骤的详解. 前提: 1.

  • 详解ASP.NET Core中配置监听URLs的五种方式

    默认情况下,ASP. NET Core应用会监听一下2个Url: http://localhost:5000 https://localhost:5001 在本篇博文中,我将展示如何使用五种不同的方式改变应用监听的URLs. 在ASP.NET Core项目启动时,有多种配置监听Url的方式,在我之前的一篇博客中,已经展示了在ASP.NET Core 1.0中如何应用不同的方式配置,在ASP.NET Core 3.x中,大部分方式还是一样的. UseUrls() - 在Program.cs配置程序

  • 详解Springboot之整合JDBCTemplate配置多数据源

    一.前言 现在在我们的项目中,使用多数据源已经是很常见的,下面,这里总结一下springboot整合jdbcTemplate配置多数据源的代码示例,以方便以后直接使用. 二.配置文件 spring: datasource: datasourceone: driverClassName: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/eesy?serverTimezone=UTC&characterEncoding=utf8&u

随机推荐