由url-pattern引发的思考
2016-08-08 17:52
501 查看
由url-pattern引发的思考
在配置servlet的时候,需要配置url-pattern,在实际使用的过程中产生了一些问题,在对这些问题一一实践后总结出以下内容:
1.tomcat本身有两个servlet,一个名称是'default',用来处理所有其他servlet没有匹配的请求,一般是资源文件请求;一个是jsp,用来处理后缀为jsp和jspx的请求(它只是找webapp下有没有相关的jsp文件,比如说设置welcome-file-list时):
2.url-pattern为'/',不是说匹配含有'/'路径的请求,而是说这个servelt是默认的servlet,如tomcat中的'default'; 同时,默认的servlet的意思就是处理所有其他servlet没有匹配的请求,一般是资源文件请求。
3.只要指定了url-pattern为‘/’,就替代tomcat的defaultServlet成为新的默认servlet。
4.tomcat自带的defaultServlet只处理资源文件,jsp文件由tomcat的jspServlet处理
5.在web.xml中将自己的servlet的url-pattern设置为‘/’时,代表是最后才匹配的servlet,是默认的servlet,最后才会执行,所以我们可以这样处理资源文件:
1)在web.xml中加一个servlet 映射用来处理资源文件,而指向的servlet就是tomvat自带的'default'(自带的default是专门用来处理资源文件的),如:
2)或者在自己的servlet的xml中设置 <mvc:default-servlet-handler>
3)或者在自己的servlet的xml中设置 <mvc:resources>
而jsp请求不用管,还是使用tomvat的jsp servlet;上面三种形式都可以用来处理资源文件
6.在web.xml中将自己的servlet的url-pattern设置为‘/*’时,则覆盖所有的servlet;包括tomcat中的default servlet(用来处理资源文件)和jsp servlet(用来处理jsp请求);这样的话资源文件和jsp请求都必须在servlet的xml中进行配置,jsp文件只能这样配置<mvc:default-servlet-handler default-servlet-name="jsp">,而资源文件就不能再使用<mvc:default-servlet-handler>,需要使用<mvc:resources>;
7.<welcome-file-list>对应的jsp也属于servlet请求;需要由相应的servlet进行处理
8.web.xml中各个节点的加载顺序问题:
context-param -> listener -> filter -> servlet
在配置servlet的时候,需要配置url-pattern,在实际使用的过程中产生了一些问题,在对这些问题一一实践后总结出以下内容:
1.tomcat本身有两个servlet,一个名称是'default',用来处理所有其他servlet没有匹配的请求,一般是资源文件请求;一个是jsp,用来处理后缀为jsp和jspx的请求(它只是找webapp下有没有相关的jsp文件,比如说设置welcome-file-list时):
<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> </servlet-mapping>
<servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> <init-param> <param-name>fork</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>xpoweredBy</param-name> <param-value>false</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet>
<servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>*.jsp</url-pattern> <url-pattern>*.jspx</url-pattern> </servlet-mapping>
2.url-pattern为'/',不是说匹配含有'/'路径的请求,而是说这个servelt是默认的servlet,如tomcat中的'default'; 同时,默认的servlet的意思就是处理所有其他servlet没有匹配的请求,一般是资源文件请求。
3.只要指定了url-pattern为‘/’,就替代tomcat的defaultServlet成为新的默认servlet。
4.tomcat自带的defaultServlet只处理资源文件,jsp文件由tomcat的jspServlet处理
5.在web.xml中将自己的servlet的url-pattern设置为‘/’时,代表是最后才匹配的servlet,是默认的servlet,最后才会执行,所以我们可以这样处理资源文件:
1)在web.xml中加一个servlet 映射用来处理资源文件,而指向的servlet就是tomvat自带的'default'(自带的default是专门用来处理资源文件的),如:
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern> </servlet-mapping>
2)或者在自己的servlet的xml中设置 <mvc:default-servlet-handler>
3)或者在自己的servlet的xml中设置 <mvc:resources>
而jsp请求不用管,还是使用tomvat的jsp servlet;上面三种形式都可以用来处理资源文件
6.在web.xml中将自己的servlet的url-pattern设置为‘/*’时,则覆盖所有的servlet;包括tomcat中的default servlet(用来处理资源文件)和jsp servlet(用来处理jsp请求);这样的话资源文件和jsp请求都必须在servlet的xml中进行配置,jsp文件只能这样配置<mvc:default-servlet-handler default-servlet-name="jsp">,而资源文件就不能再使用<mvc:default-servlet-handler>,需要使用<mvc:resources>;
7.<welcome-file-list>对应的jsp也属于servlet请求;需要由相应的servlet进行处理
8.web.xml中各个节点的加载顺序问题:
context-param -> listener -> filter -> servlet
相关文章推荐
- 由url-pattern引发的思考
- 由url 引发的一些思考
- 更改主机文件引发思考 防火墙URL过滤无奈(转)
- 一道经典面试引发的思考:从输入URL到页面加载的过程
- 由 MS12-005 : 嵌入式对象任意代码执行引发的思考
- 被多人误解的url-pattern配置为"/"和"/*"的区别
- Servlet--url-pattern匹配规则
- 一个Filter配置多个url-pattern
- url-pattern问题
- cvc-complex-type.2.4.a: Invalid content was found starting with element 'url-pattern'
- JavaWeb Servlet中url-pattern的使用
- 由Find All References引发的思考。,
- 由BigDecimal引发的思考
- 由Find All References引发的思考。,
- 一次误报引发的DNS检测方案的思考:DNS隧道检测平民解决方案
- HDU2046 骨牌铺方格 (一道水题引发的思考)
- 由一段JS代码引发的思考
- web.xml中的url-pattern映射规则
- servlet的url-pattern匹配规则详细描述