form表单提交路径 找不到对应的servlet问题
客户端报错--错误:请求的资源/LoginServlet不可用
报错前form
<form action="/LoginServlet" method="GET">
<table border="1" width="50%">
<tr>
<td colspan="2" align="center">编程帮wwww.biancheng.net</td>
</tr>
<tr>
<td>账号</td>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="提交" />
</td>
</tr>
</table>
</form>
报错前 web.xml
<servlet>
<servlet-name>LoginServlet</servlet-name>
<display-name>LoginServlet</display-name>
<description>登录页面servlet</description>
<servlet-class>servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
解决方案:
<form action="/LoginServlet" method="GET">
更改为
<form action="LoginServlet" method="GET">
即在web.xml中用/LoginServlet 告诉容器去哪寻找对应的servlet
和actio中不一样,容器是约定好的/ 不是根目录而是抛除工程上下文目录后的
在action中/表示的是根目录所以出现报错
当然这还有表格所在html,jsp文件目前所在工程目录得位置问题,这里不做过多记录,牵扯到相对路径和绝对路径又是另一个写法
如用绝对路径:action="/hainworldwebapp/LoginServlet"也是可以访问到的
注:
- web.xml中的这里面是为servlet指定的路径不一定要和servlet同名,但action=“”,要想找到servlet,需要和保持一致
- 以上写法都和web.xml上级目录WEB-INF在同一目录下的写法