myeclipse做了个登陆界面,里面写了个servlet,运行的时候总是提示404错误!
编写login.jsp的代码,如下:
<%@ page contentType="text/html;charset=gb2312"%>
<script language="JavaScript">
function isValidate(form)
{
// 得到用户输入的信息
username = form.username.value;
userpass = form.userpass.value;
// 判断用户名长度
if(!minLength(username,6))
{
alert("用户名长度小于6位!");
form.username.focus();
return false;
}
if(!maxLength(username,8))
{
alert("用户名长度大于8位!");
form.username.focus();
return false;
}
// 判断口令长度
if(!minLength(userpass,6))
{
alert("口令长度小于6位!");
form.userpass.focus();
return false;
}
if(!maxLength(userpass,8))
{
alert("口令长度大于8位!");
form.userpass.focus();
return false;
}
return true;
}
// 验证是否满足最小长度
function minLength(str,length)
{
if(str.length>=length)
return true;
else
return false;
}
// 判断是否满足最大长度
function maxLength(str,length)
{
if(str.length<=length)
return true;
else
return false;
}
</script>
<html>
<head>
<title>用户登陆</title>
</head>
<body>
<h2>用户登录</h2>
<form name="form1" action="${pageContext.request.contextPath}/login" method="post" onsubmit="return isValidate(form1)">
用户名:<input type="text" name="username"> <br>
口令:<input type="password" name="userpass"><br>
<input type="reset" value="重置">
<input type="submit" value="提交"><br>
</form>
</body>
</html>
编写success.jsp的代码,如下:
<%@ page contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>登录成功</title>
</head>
<body>
<h2>${sessionScope.userid}您好,欢迎登录网上书店!</h2>
</body>
</html>
编写failure.jsp的代码,如下:
<%@ page contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>登录失败</title>
</head>
<body>
<h2>用户名或者口令不正确,请<a href="login.jsp">重新登录!</a></h2>
</body>
</html>
编写LoginBean的validate方法,如下:
public boolean validate(String username,String userpass){
if(username==null||userpass==null)
return false;
return username.equals(userpass);
}
在LoginBean的main方法中编写代码测试。
public static void main(String[] args){
LoginBean test = new LoginBean();
System.out.println("正确的用户名口令,返回"+test.validate("zhangsan","zhangsan"));
System.out.println("错误的用户名口令,返回"+test.validate("zhangsan","123456"));
}
编写LoginServlet的代码,如下:
//添加导入包
import beans.*;
import javax.servlet.http.HttpSession;
import javax.servlet.RequestDispatcher;
//在doGet方法中编写代码如下:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取用户输入的用户ID和口令
String userid = request.getParameter("username");
String userpass = request.getParameter("userpass");
// 创建模型对象
LoginBean loginBean = new LoginBean();
// 调用业务方法进行验证
boolean b = loginBean.validate(userid,userpass);
// 要转向的文件
String forward;
// 如果登陆成功,把用户名写入session中,并且转向success.jsp,
//否则转向failure.jsp
if(b){
// 获取session
HttpSession session = (HttpSession)request.getSession(true);
// 把用户名保存到session中
session.setAttribute("userid",userid);
// 目标转向文件是success.jsp
forward = "success.jsp";
}else{
// 目标转向文件是failure.jsp
forward = "failure.jsp";
}
// 获取Dispatcher对象
RequestDispatcher dispatcher = request.getRequestDispatcher(forward);
// 完成跳转
dispatcher.forward(request,response);
}
//在doPost方法中调用doGet方法,使得无论是get请求还是post请求,
//都访问一致的代码
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
doGet(request,response);
}
开始运行login.jsp,success.jsp,failure.jsp,都能正常运行,但是加上bean.java和servlet.java后再在网页上运行login.jsp,输入username和password点击登陆就会提示404错误,tomcat安装正确的,能使用。不知道是什么其他原因,求解释!
[解决办法]
action="${pageContext.request.contextPath}/login" ,这个地方错了。而且你的web.xml文件呢?