我是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。 我究竟做错了什么 ?立即的帮助将不胜感激!
谢谢!
答案 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。