Jakarta ee 为什么web.xml中的*.jsp url模式不起作用 我想将所有请求映射到TestHandler Servlet,所以我使用/*模式 然后我想排除jsp映射,所以我将*.jsp模式映射添加到/*前面的jsp 问题:.jsp无法捕获urlhttp://localhost/project/fun.jsp没有问题。相反,/pattern捕捉到了它。为什么?这怎么会发生 jsp *.jsp 测试处理器 /*

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> <

但是如果我使用某种url模式,比如
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。