为什么 *.jsp Web 中的 URL 模式不起作用.xml


  1. 我想将所有请求映射到TestHandler Servlet,所以我使用/*模式。
  2. 然后我想排除 jsp 映射,所以我在前面添加了*.jsp模式映射到 jsp 前面/*
  3. 问题.jsp根本无法捕获网址http://localhost/project/fun.jsp。相反,/模式抓住了它。为什么?怎么会这样?

<servlet-mapping>
  <servlet-name>jsp</servlet-name>
  <url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
  <servlet-name>TestHandler</servlet-name>
  <url-pattern>/*</url-pattern>
</servlet-mapping>

但是如果我使用像 fun.jsp 这样的 url 模式而不是 *.jsp ,它可以工作。fun.jsp模式捕获上面的网址。谁能告诉我为什么?

/*(路径规则(结尾的模式在*.开始(扩展规则(映射之前匹配。确切的 URI 是完全匹配项,即计算顺序中的第一个匹配项。

TestHandler设置为默认的 servlet,这应该可以工作。

<servlet-mapping>
  <servlet-name>TestHandler</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

要编写一个servlet映射,应该定义一个servlet类。

<servlet>
    <servlet-name>TestHandler</servlet-name>
    <servlet-class>FULLY QUALIFIED NAME OF THE CLASS</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>TestHandler</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

请注意 :::: TestHandler 是 servlet 名称,此 servlet 映射到 JSP (视图( 中的 url (url pattern/*(

同样,对于另一个servlet,我正在添加servlet类

 <servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>FULLY QUALIFIED NAME OF THE CLASS</servlet-class>
  </servlet>
 <servlet-mapping>
   <servlet-name>jsp</servlet-name>
   <url-pattern>*.jsp</url-pattern>
 </servlet-mapping>

所有代码行都应该用 web 编写.xml

最新更新