一、/* 和*.do的匹配问题
我web.xml中的配置如下
<servlet>
<servlet-name>TwoServlet</servlet-name>
<servlet-class>com.fh.TwoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TwoServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>FourServlet</servlet-name>
<servlet-class>com.fh.FourServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FourServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
然后做测试时发现,若访问路径为
http://localhost/test/a.do
http://localhost/test/xxx/yyy/a.do
个人理解的*.do就是匹配末尾是.do结尾的路径,而/*则是全部范围任意匹配
按照我的理解,结果应该以上两个路径应该都是访问FourServlet这个类,但是实际结果却全是TwoServlet类,所以希望有经验的朋友能帮忙解答,谢谢
匹配的优先级,最精确匹配>最长路径匹配>扩展名匹配
你上面的servlet已经匹配了所有请求方法,所以就不会根据后缀来判断是不是走下面的servlet
楼主是说的是的,所有的请求都被/* 拦截啦 ,,所以就不会走下面一个servlet
/*拦截所有请求,也有先后顺序,/*在上面自然是第一个进入
我讲一下原理吧、下面是一个简单的servlet、
this is a servlet test--描述信息、可有可无 HelloServlet --servlet的内部名称 包名****.类名***--映射的类
HelloServlet --通过servlet的内部名称把URL与CLASS绑定 /HelloServlet --用户访问serlvet的URL
可能上面看的不太懂、我简单的说下、首先、从*.jsp页面提交、这个时候form里的为:
TwoServlet可以匹配,没走下面的servlet
检查下加载的顺序,后面的应该是没有执行。
对于xml一直处于蒙蔽状态
我也认为TwoServlet是可以匹配的,没走下面的servle
/* 拦截所有请求,顺序在前所以都走的这个
两个servlet-name一样 然后 calss-name 就是类名,带着包的
url 就是虚拟路径,能找到你的servlet的路径
我讲一下原理吧、下面是一个简单的servlet、
this is a servlet test--描述信息、可有可无 HelloServlet --servlet的内部名称 包名****.类名***--映射的类
HelloServlet --通过servlet的内部名称把URL与CLASS绑定 /HelloServlet --用户访问serlvet的URL
可能上面看的不太懂、我简单的说下、首先、从*.jsp页面提交、这个时候form里的为:
、然后通过HelloServlet这个访问路径得到servlet的名称、也就是我们定义的HelloServlet、当然action里面的名称可以随便改、但注意配置这个节点时也要保证一致、得到servlet内部名称后、就会根据这个名称找到相应的节点、然后就找到了我们映射的类了、就这么简单了、最终执行映射类的内容、我是这样理解的、谢谢、
将两个servlet-mapping对调下看看,有可能跟顺序有关