<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>,这些各表示啥,请详细说明,