您的位置:首页 > 其它

由url-pattern引发的思考

2017-01-12 15:56 471 查看
由url-pattern引发的思考

在配置servlet的时候,需要配置url-pattern,在实际使用的过程中产生了一些问题,在对这些问题一一实践后总结出以下内容:

1.tomcat本身有两个servlet,一个名称是'default',用来处理所有其他servlet没有匹配的请求,一般是资源文件请求;一个是jsp,用来处理后缀为jsp和jspx的请求(它只是找webapp下有没有相关的jsp文件,比如说设置welcome-file-list时):

[html] view
plain copy

 





<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>  

[html] view
plain copy

 





<servlet-mapping>  

        <servlet-name>default</servlet-name>  

        <url-pattern>/</url-pattern>  

</servlet-mapping>  

[html] view
plain copy

 





<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>  

[html] view
plain copy

 





<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是专门用来处理资源文件的),如:

[html] view
plain copy

 





<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

原文地址是:http://blog.csdn.net/jintao_ma/article/details/52141953
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  xml配置