由url-pattern引发的思考

由url-pattern引发的思考

在配置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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值