<servlet-mapping> 的<url-pattern>设置问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了<servlet-mapping> 的<url-pattern>设置问题相关的知识,希望对你有一定的参考价值。

一个jsp的登陆界面,出现404报错:The requested resource (/car/userinfoServlet) is not available.可能是web.xml文件路径不对,但是换了好几个都是一样的404报错,相关的截图和代码附上,求大神解答。

PS:

改的时候发现servlet文件UserinfoServlet.java中也有一个类似的路径,就一起改了,不知道会不会影响。

<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>UserinfoServlet</servlet-name>
<servlet-class>com.missaiti.servlet.UserinfoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UserinfoServlet</servlet-name>
<url-pattern>/car/userinfoServlet</url-pattern>
</servlet-mapping>

找不到是因为你用的是绝对地址,又没加上web的上下文地址,修改方法

在logincar.jsp里的<form>标签的action属性这么写:

<form ... action="$pageContext.request.contextPath/car/userinfoServlet?method=login">

追问

还是不行,jsp中改成<form id="form1" name="form1" method="post" action="$pageContext.request.contextPath/car/UserinfoServlet?method=login">

其他没改。

追答

大小写错了好不,userinfoServlet,不是UserinfoServlet

参考技术A 找不到是因为你用的是绝对地址,又没加上web的上下文地址,修改方法
在logincar.jsp里的<form>标签的action属性这么写:

1

<form ... action="$pageContext.request.contextPath/car/userinfoServlet?method=login">

追问:
还是不行,jsp中改成<form id="form1" name="form1" method="post" action="$pageContext.request.contextPath/car/UserinfoServlet?method=login">
其他没改。

路径总结

web.xml文件中的路径
在<servlet-mapping></servlet-mapping>标签中<url-pattern></url-pattern>可以写多个。
<url-pattern>可以写成如下格式:

<url-pattern>/hello</url-pattern>
<url-pattern>/hello.do</url-pattern>
<url-pattern>/hello.action</url-pattern>
<url-pattern>/system/login.action</url-pattern>
<url-pattern>/*</url-pattern> <!--匹配任何请求-->
<url-pattern>*.do</url-pattern> <!--匹配所有以 .do 结尾的请求-->
<url-pattern>*.action</url-pattern><!--匹配所有以 .action 结尾的请求-->

原则:如果有精确匹配的则走精确匹配的。

关于路径的总结:
1、目前我们接触的所有路径都是以“/”开始,都是绝对路径,没有使用过相对路径。
2、在向web服务器发送请求的时候(包括使用超链接、使用form表单、直接在浏览器地址栏上输入)以及我们在java程序中使用“重定向”的时候,这些请求路径中是需要添加“项目名“的,其他的位置都不需要添加项目名。

<package name="test" namespace="/user">
    <action name="insert" class="xxxx">
</package>
     
<package name="test" namespace="/user/xxxxx">
    <action name="insert" class="xxxx">
</package>

<package name="test" namespace="/user/xxxxx/yyyyy">
</package>

uri ==> /user/xxxxx/yyyyy/zzzzzzz/insert.do
匹配最长,即最精确匹配的命名空间,所以该uri访问的是第三个package,因为没有action,所以返回错误信息。






以上是关于<servlet-mapping> 的<url-pattern>设置问题的主要内容,如果未能解决你的问题,请参考以下文章

<servlet-mapping> 的<url-pattern>设置问题

<servlet-name>,<servlet-class>,<servlet-mapping>,<url-pattern>,这些各表示啥,请详细说明,

从Spring 3到Spring 5的迁移

路径总结

配置xml的坑

helloServlet