Jakarta ee 为什么web.xml中的*.jsp url模式不起作用 我想将所有请求映射到TestHandler Servlet,所以我使用/*模式 然后我想排除jsp映射,所以我将*.jsp模式映射添加到/*前面的jsp 问题:.jsp无法捕获urlhttp://localhost/project/fun.jsp没有问题。相反,/pattern捕捉到了它。为什么?这怎么会发生 jsp *.jsp 测试处理器 /*
但是如果我使用某种url模式,比如Jakarta ee 为什么web.xml中的*.jsp url模式不起作用 我想将所有请求映射到TestHandler Servlet,所以我使用/*模式 然后我想排除jsp映射,所以我将*.jsp模式映射添加到/*前面的jsp 问题:.jsp无法捕获urlhttp://localhost/project/fun.jsp没有问题。相反,/pattern捕捉到了它。为什么?这怎么会发生 jsp *.jsp 测试处理器 /*,jakarta-ee,tomcat,servlets,web.xml,Jakarta Ee,Tomcat,Servlets,Web.xml,但是如果我使用某种url模式,比如fun.jsp,而不是*.jsp,它就可以工作了。jsp模式捕获上面的url。谁能告诉我为什么?要编写servlet映射,应该定义一个servlet类 <servlet> <servlet-name>TestHandler</servlet-name> <servlet-class>FULLY QUALIFIED NAME OF THE CLASS</servlet-class> <
fun.jsp
,而不是*.jsp
,它就可以工作了。jsp模式捕获上面的url。谁能告诉我为什么?要编写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模式/*)
类似地,对于另一个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>
jsp
类的完全限定名
jsp
*.jsp
所有代码行都应该用web.xml编写以
/*
结尾的模式(路径规则)在*.
开始(扩展规则)映射之前匹配。精确URI是一个精确匹配项,它是求值顺序中的第一个
将TestHandler
设置为默认servlet,应该可以工作
<servlet-mapping>
<servlet-name>TestHandler</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
测试处理器
/
那么,我如何更改顺序呢?你不能,这是servlet规范。你应该尝试使用/
(而不是/*
)作为url模式,这是默认的servlet,看起来/
工作得很好。非常感谢你!但是我不明白/
和/*
之间的区别!在哪里可以找到此部分的文档(url模式)?/
是默认映射,它不同于/*
结束映射!本页对此进行了很好的解释:对于确切的规范,您必须检查JavaServlet规范,恐怕……谢谢!我知道你的意思。我有
部分。但实际上,jsp
是在Tomcat/conf/web.xml中定义的servlet。