/*
模式。*.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
而不是*.jsp
,则可行。 fun.jsp
模式捕获上面的url。谁能告诉我为什么?
答案 0 :(得分:2)
以/*
(路径规则)结尾的模式在*.
开始(扩展规则)映射之前匹配。确切的URI是完全匹配,这是评估顺序中的第一个。
将TestHandler
设置为默认的servlet,这应该可以。
<servlet-mapping>
<servlet-name>TestHandler</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
答案 1 :(得分:1)
要编写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编写