使用JSP验证表单

时间:2014-04-30 12:48:16

标签: java jsp nullpointerexception

我是JSP的新手,我正在创建一个简单的表单并通过JSP验证它。 这是我的代码: -

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<%@page import="java.io.* , java.sql.* , java.util.* , javax.servlet.*" %>

<body>
    <h1>Login Page by JSP</h1>
    <hr>
    <form method="post" action="index_jsp">
        Enter name : <input type="text" name="user">
        Enter password : <input type="password" name="pass">
        <input type="submit" value="login">
    </form>
    <%
    String user = request.getParameter("user");
    String pass = request.getParameter("pass");

    if(user.equals("admin") && pass.equals("admin"))
    {
    response.sendRedirect("wel.html");
    }

    %>
    <br>
    <a href="new.jsp">Click here !</a>

</body>
</html>

但每次运行它时,都会出现NullPointerException。 我究竟做错了什么 ?立即的帮助将不胜感激!

谢谢!

5 个答案:

答案 0 :(得分:2)

第一点建议,因为你是JSP的新手:不要编写scriptlet代码。这就是<%%>之间的所有内容。这是1998年的老式技术,应该气馁。请转而学习JSTL和Model-2 MVC。

您需要一个servlet来编排这些JSP。我所知道的每个Web MVC框架都有一个所谓的前端控制器servlet来管理通信和编排。你也应该。

您在此JSP中使用POST形式,将HTTP请求发送到index_jsp(错误名称)。它正在客户端计算机上的浏览器中执行。

我希望你将它发送到服务器端的servlet,获取HTTP请求,获取用户名和密码,将值与数据库进行比较,看看用户是否确实注册了。然后我要发送下一个视图或路由到“抱歉”页面。那不是你在做什么。

答案 1 :(得分:1)

不要对变量进行等于检查,而是针对常量进行检查:

 if("admin".equals(user) && "admin".equals(pass)) {
    response.sendRedirect("wel.html");
 }

这样你就无法获得NPE。

答案 2 :(得分:0)

更改此行

if(user.equals("admin") && pass.equals("admin"))
    {
    response.sendRedirect("wel.html");
    }

if(user!=null){

    if(user.equals("admin") && pass.equals("admin"))
    {
    response.sendRedirect("wel.html");
    }
}

答案 3 :(得分:0)

您没有为请求属性检查null。

替换

String user = request.getParameter("user");
String pass = request.getParameter("pass");

String user = request.getParameter("user") != null ? request.getParameter("user") : "";
String pass = request.getParameter("pass") != null ? request.getParameter("pass") : "";

答案 4 :(得分:0)

更改代码:

if("admin".equals(user) && "admin".equals(pass))  {
    response.sendRedirect("wel.html");
}

首次运行jsp时,它将执行代码,但user和pass为null。