当前位置: 代码迷 >> J2SE >> web.xml中servlet匹配的先后有关问题
  详细解决方案

web.xml中servlet匹配的先后有关问题

热度:340   发布时间:2016-04-23 20:17:53.0
web.xml中servlet匹配的先后问题
 <servlet>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>web.LoginServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>ActionServlet</servlet-name>
    <servlet-class>web.ActionServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ActionServlet</servlet-name>
    <url-pattern>/action</url-pattern>
  </servlet-mapping>
已知应用名为web01,然后我在浏览器地址栏输入localhost:8080/web01/action 结果是执行哪个servlet,  tomcat在web.xml中找servlet时有规则吗?还是按web.xml文件从上到下匹配
------解决思路----------------------
我也是剛學的,下面是我看到的Servlet的代碼,修改為你的頁面配置,  

 <servlet>
      <servlet-name>LoginServlet</servlet-name>
      <servlet-class>web.LoginServlet</servlet-class>
    </servlet>
     <servlet-mapping>
       <servlet-name>LoginServlet</servlet-name>
       <url-pattern>/*</url-pattern>
     </servlet-mapping>

   <servlet>
     <servlet-name>ActionServlet</servlet-name>
     <servlet-class>web.ActionServlet</servlet-class>
   </servlet>
   <servlet-mapping>
     <servlet-name>ActionServlet</servlet-name>
     <url-pattern>/action</url-pattern>
   </servlet-mapping>
------解决思路----------------------
你的例子里会到ActionServlet中。
 服务器匹配有几个规则,
 精准匹配: 最像最完整。
 扩展名匹配:.do等。 大概这个意思,还有其它的规则, 具体你百度吧
------解决思路----------------------
优先匹配/action,如果匹配不到,则匹配/*
localhost:8080/web01/action 你访问的localhost:8080 指定到了具体的tomcat容器,web01 则是容器里面具体的工程
然后 会去工程的web.xml中取扫 请求的url,如果能精确匹配,优先精确匹配;否则,有模糊匹配的话,就模糊匹配;
两者都没有,则404
  相关解决方案