servlet中的404错误

时间:2014-11-13 18:46:16

标签: java jsp servlets

这是我尝试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语句时它才有效......只有这样,它的功能才不多。

3 个答案:

答案 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,并且这些参数用于会话查找。