在web项目中,常常需要用到前端控制器,前端控制器用于拦截请求,然后根据不同的请求做出不同的处理,以下主要针对/与/*的区别作出解释:
这,是一个springmvc的前端控制器,如果不引入springmvc的参数,与javaweb中无异。其中 url-pattern属性(url模式)用于指定前端控制器拦截的请求url模式。
DispatcherServlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:springmvc.xml 1 DispatcherServlet /*
当url-pattern为"/"时:
对于路径请求: 若是其他的路径请求,前端控制器会将其拦截,然后创建映射器去匹配控制器中对应的handle方法(过程不止这一点,这里不过多描述)
对于页面不进行拦截: 当我们直接访问一个页面资源时(如/index.html或/index.jsp),前端控制器不会拦截该请求,那么问题来了,这个请求会被怎样处理呢?
in fact,在web项目中,除了我们自己配置的web.xml,tomcat中同样存在web.xml,这二者之间的关系为继承关系,若我们自己配置的web.xml解决不了,那么接下来就只能去tomcat中的web.xml中查找了。在tomcat的web.xml文件中,定义了两个servlet,如下:
default org.apache.catalina.servlets.DefaultServlet debug 0 listings false 1
default /
jsp org.apache.jasper.servlet.JspServlet fork false xpoweredBy false 3
jsp *.jsp *.jspx
当url-pattern为"/*"时:
拦截所有请求和页面: 无论是路径请求还是页面请求都会被拦截,假设当前请求没有对应的handle方法,那么该请求就会交由tomcat里的DefaultServlet进行处理,DefaultServlet根据请求响应对于页面后,这个页面又会被我们设置的/*拦截,这样就会造成404的异常
引用文章:
SpringMVC中拦截/和拦截/*的区别,访问静态资源
Spring中拦截/和拦截/*的区别 - 不能访问到返回的JSP - 访问静态资源(jpg,js等)
/ /* /**的区别
上一篇:半场:尤文0-1萨勒尼塔纳,皮耶罗齐破门,DV9、坎比亚索中框 尤文主场战平萨勒尼塔纳 尤文对萨勒尼塔实单
下一篇:半场-曼联0-1阿森纳 卡塞米罗失误哈弗茨助攻特罗萨德先拔头筹 曼联2-1逆转曼城卡塞米罗 曼联半场0比2布莱顿