DispatcherServlet url-pattern中 /、/*、*.do中的区别与作用
DispatcherServlet url-pattern中 /、/*、*.do中的区别与作用
"/'表示匹配所有请求(其中包含除.jsp和.jspx外的所有后缀)。
如果不配置静态资源,它会把匹配所有请求都当做是对控制器的访问,去掉后缀进行匹配。例如你访问/main.css会变成/main,这也是造成你引入的.css,.js等静态资源无法访问的原因,因为他们都被当做控制器的路径了。
至于为什么不匹配.jsp和.jspx,是因为在tomcat的web.xml里有这样的配置:


这里由于*.jsp和*.jspx的精度比"/"更高,所以被JspServlet匹配到了,而不是DispatchServlet(jsp的本质也是servlet,它只是让返回数据动态加载的html更加方便)
"/*"表示匹配所有请求(包含所有后缀)
这里*.jsp比"/*"的匹配度低,所以配置后会使.jsp也进入DispatcherServlet,而.jsp既不是控制器路径也不是静态资源,所以就算配了静态资源还是访问不到,所以这个/*的配置不适用于DispatcherServlet,一般用于过滤器来拦截所有资源
*.do表示匹配所有以.do结尾的请求
这也是比较推荐的一种配置,它只匹配.do结尾的请求,不会匹配到静态资源,静态资源可以被直接访问,省去了配置静态资源的麻烦

/的意义在于符合restful风格,restful风格的请求不能有后缀,需要像 /user/name这种,需要配置静态资源:mvc:resources或mvc:default-servlet-handler/或Tomcat的web.xml中配置DefaultServlet
/*的意义在于过滤器拦截所有资源使用,并不适用于DispatcherServlet
*.do适用于DispatcherServlet,免去了配置静态资源的麻烦,但不适用于restful风格
DispatcherServlet url-pattern中 /、/*、*.do中的区别与作用的更多相关文章
- [Android Pro] android中permission_group与permisson区别、作用
转载:http://blog.csdn.net/feng88724/article/details/6409313 其实Android在定义 permission 时, 为每个Permission都进 ...
- 如何在URL筛选管理器中过滤不需要的URL
互联网可以说是一把名副其实的双刃剑.一方面其可以提高工作效率.给企业提供充分的资源;另一方面如果管理不严,也会带来很多的隐患.如员工在上班时间玩游戏.炒股等等.为此现在很多企业希望对员工的网络行为进行 ...
- 详解 $_SERVER 函数中QUERY_STRING和REQUEST_URI区别
详解 $_SERVER 函数中QUERY_STRING和REQUEST_URI区别 http://blog.sina.com.cn/s/blog_686999de0100jgda.html 实例: ...
- spring中的BeanFactory与ApplicationContext的作用和区别?
BeanFactory类关系继承图 1. BeanFactory类结构体系: BeanFactory接口及其子类定义了Spring IoC容器体系结构,由于BeanFactory体系非常的庞大和复杂, ...
- JSP中pageEncoding和charset区别,中文乱码解决方案(转载)
转载自:JSP中pageEncoding和charset区别,中文乱码解决方案 JSP指令标签中<%@ page contentType="text/html;charset=GB23 ...
- PHP中put和post区别
1. 使用支持和范围的区别: PHP提供了对PUT方法的支持,在Http定义的与服务器的交互方法中,PUT是把消息本体中的消息发送到一个URL,形式上跟POST类似; PHP 提供对诸如 Netsca ...
- Http中Get/Post请求区别
Http中Get/Post请求区别 (1)get是从服务器上获取数据,post是向服务器传送数据. (1) 在客户端,Get方式在通过URL提交数据,数据在URL中可以看到:POST方式,数据放置 ...
- django URL参数在view中传递和Template的反向解析方式
一. URL参数在view中传递 1.带参数名:通过named group方式传递指定参数,语法为: (?P<name>pattern), name 为传递参数的名称,pattern代表所 ...
- 浅析mybatis中${}和#{}取值区别
mybatis作为一个轻量级的ORM框架,应用广泛,其上手使用也比较简单:一个成熟的框架,必然有精巧的设计,值得学习. 在使用mybatis框架时,在sql语句中获取传入的参数有如下两种方式: ${p ...
随机推荐
- springboot-i18n国际化
简介 In computing, internationalization and localization are means of adapting computer software to di ...
- Java——舞动的排序
一.冒泡排序: http://v.youku.com/v_show/id_XMzMyOTAyMzQ0.html //冒泡排序 public class Bubbling { public static ...
- 高度自适应的bug
今天在整理之前IFEde作业,发现有个简历的效果好像没实现.于是想把样式改成作业要求的那样. 作业要求是这样的: 右边栏昨晚高度是839px,我想把左边栏做成高度自适应的.但是没成功.现在我把这个问题 ...
- vim的卸载以及环境的配置小记
一.背景 由于之前配置错误,导致我的YouCompleteMe这个插件不能用了,一直提示: ERROR:Required vim compiled with +python. YouCompleteM ...
- Windows10系统可以禁止的服务(按名称排序)
1.Application LayerGateway Service(Windows必须禁止的10项服务) 2.Bluetooth Handsfree Service(没有蓝牙的用户可以关闭) 3.B ...
- day22面向对象
面向对象编程: 1.什么是面向对象 面向过程(编程思想): 过程,解决问题的步骤,流程即第一步做什么,第二步做什么 将复杂问题,拆成若干小问题,按照步骤一一解决,将复杂问题流程化(为其制定固定的实现流 ...
- http过程
当在浏览器里输入URL地址时,http的通讯过程: 1) 连接 DNS解析:URL——>DNS服务器(找到返回其ip,否则继续将DNS解析请求传给上级DNS服务器) Socket连接:通过IP和 ...
- 关于Linux下的环境变量
一.交互式shell和非交互式shell 要搞清bashrc与profile的区别,首先要弄明白什么是交互式shell和非交互式shell,什么是login shell 和non-login shel ...
- server 08 R2 NBL 报错:RPC 服务器在指定计算机上不可用
排查步骤如下: 1.检查并确保 Remote Procedure Call (RPC) 和 Remote Procedure Call (RPC) Locator这两项服务是否都已经启动 2.确认此2 ...
- Java总结输入流输出流
学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群:618528494 我们一起学Java! 1.什么是IO Java中I/O操作主要是指使用 ...