Servlet跳转失败问题:HTTP Status 404 not found



背景:

1、servlet Java文件路径:src/com.Servlet/xx.java

url-pattern路径:/RegisterServlet

2、jsp页面路径:Webcontent/thirdTest/register.jsp

<form action="RegisterServlet" method="post" name="registerForm">
		<table align="center">
			<tr>
				<td colspan="4"><p style="font-size:24px;text-align:center">绿叶网上书店会员信息注册</p></td>
			</tr>
			<tr>
				<td rowspan="4"><img alt="logo" src="../img/blueball.jpg" width="150px"></td>
				<td>用户名:</td>
				<td><input type="text" name="userName" onblur="checkUserName();" /></td>
				<td><span id="userNameError" class="error">用户名不能为空!</span></td>
			</tr>
			<tr>
				<td>密码:</td>
				<td><input type="password" name="password" onblur="checkPw();" /></td>
				<td><span id="passwordError" class="error">密码不能为空!</span></td>
			</tr>
			<tr>
				<td>年龄:</td>
				<td><input type="number" name="age" value="0" onblur="checkAge();" /></td>
				<td><span id="ageError" class="error">请保持年龄在3~149之间!</span></td>
			</tr>
			<tr>
				<td>电邮:</td>
				<td><input type="email" name="email" onblur="checkEmail();" /></td>
				<td><span id="emailError" class="error">电邮格式错误!</span></td>
			</tr>
			<tr>
				<td></td>
				<td><input type="submit" name="submit" value="注册"></td>
				<td colspan="2"><input type="reset" name="reset" value="取消"></td>
			</tr>
		</table>
	</form>
@WebServlet("/RegisterServlet")
public class RegisterServlet extends HttpServlet {
 //doGet
 //doPost
 //...
}

解决过程:

1、运行Servlet文件,得到浏览器的地址栏上的地址:localhost:8080/Javaee/RegisterServlet

2、运行jsp文件,得到浏览器地址栏上的地址:localhost:8080/Javaee/thirdTest/register.jsp

3、跳转失败的地址(出现404的地址):localhost:8080/Javaee/thirdTest/RegisterServlet

这里可以注意到,第一个地址和第三个地址不同,这就是导致了not found问题:本来jsp要跳转的是第一个地址,但是跳转到了第三个地址,所以当然找不到servlet了。所以,如果第一和第三个地址是相同的则不会出现not found问题了,这样看来就找到了解决问题的方法了。

解决方法:

1、修改jsp页面<form>的action属性的路径(此例:设置action="/RegisterServlet")

2、修改servlet文件的url-pattern 映射地址

3、若使用servlet注解,同理修改映射地址(此例:设置注解@WebServlet("/thirdTest/RegisterServlet"))

三者取一即可。

猜你喜欢

转载自blog.csdn.net/mkii_hong/article/details/79879316