- 我想将所有请求映射到TestHandler Servlet,所以我使用
/*
模式。 - 然后我想排除 jsp 映射,所以我在前面添加了
*.jsp
模式映射到 jsp 前面/*
。 -
问题:.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