这是我尝试servlet的第一天。它只是一个简单的登录功能,但我得到的错误并不能解释我做错了什么。它只是说
404:请求的资源不可用。
这是我的servlet:
public class Login extends HttpServlet {
private static final long serialVersionUID = 1L;
public Login() {
super();
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
String key = "ole";
String username = request.getParameter("username");
String password = request.getParameter("password");
response.sendRedirect("NewFile.jsp");
if (session.getAttribute(username).equals(key)
&& session.getAttribute(password).equals(key)) {
response.sendRedirect("secret.jsp");
} else {
response.sendRedirect("NewFile.jsp");
}
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
}
}
这是我的登录页面:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Login page</title>
</head>
<body>
Enter username and password below.
<form method=get action="hej">
<input type="text" user="username" /> <input type="password"
user="password" /> <input type="submit" value="Login" />
</form>
</body>
</html>
还有一个名为secret.jsp
的文件,但那里没什么有趣的。我不明白为什么它会返回404.当我删除if语句时它才有效......只有这样,它的功能才不多。
答案 0 :(得分:2)
正如你所说,它没有IF-ELSE
,但我猜你的web.xml
条目是正确的。
首先将此更改为
<input type="password" user="password" />
此
<input type="password" name="password" />
input tag
没有任何user
属性,它是name
。
接下来的错误是,您正在使用session.getAttribute
来访问尚未设置的参数。
您的代码应为
if (username.equals(key)
&& password.equals(key)) {
response.sendRedirect("secret.jsp");
} else {
response.sendRedirect("NewFile.jsp");
}
session.getAttribute
只能在代码session.setAttribute
中使用
例如session.setAttribute("username","ole");session.setAttribute("password","ole");
。
然后,只有您可以获得session.getAttribute("username")
或session.getAttribute("password")
的值。但是现在它只返回NULL。所以代码不会起作用。
您可以在现有代码中添加此代码,它可以正常运行。
session.setAttribute(username,username);
session.setAttribute(password,password);
您的完整代码应为
String username = request.getParameter("username");
String password = request.getParameter("password");
session.setAttribute(username,username);
session.setAttribute(password,password);
//response.sendRedirect("NewFile.jsp");
if (session.getAttribute(username).equals(key)
&& session.getAttribute(password).equals(key)) {
response.sendRedirect("secret.jsp");
} else {
response.sendRedirect("NewFile.jsp");
}
答案 1 :(得分:0)
在HTML中替换user =“... by name =”...它将起作用。
答案 2 :(得分:0)
在HTML中替换user =“... by name =”...它会起作用。抛出NullPointerException是因为由于HTML错误,请求参数为NULL,并且这些参数用于会话查找。