Reputation:
I'm completely new to JSP and am creating a simple form and validating it through JSP. Here's my code :-
<%@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>
But each and every time I run it , I get a NullPointerException . What am I doing wrong ? Immediate help would be appreciated !
Thanks!
Upvotes: 1
Views: 1916
Reputation: 1751
change code:
if("admin".equals(user) && "admin".equals(pass)) {
response.sendRedirect("wel.html");
}
When you first run jsp,it will execute the code,but user and pass is null.
Upvotes: 0
Reputation: 308763
First bit of advice, since you're new to JSP: Don't write scriptlet code. That's all the stuff between <%
and %>
. It's a 1998 vintage technology that should be discouraged. Learn JSTL and Model-2 MVC instead.
You need a servlet to orchestrate those JSPs. Every web MVC framework that I know of has what's called a front controller servlet to manage the communication and orchestration. You should, too.
You have the form POST in this JSP, sending the HTTP request to index_jsp (bad name). It's executing in the browser on the client machine.
I would expect you to send this to a servlet on the server side that gets the HTTP request, gets the username and password out, compares the values to a database to see if the user is indeed registered. Then I'd either send the next view or route to the "sorry" page. That's not what you're doing.
Upvotes: 2
Reputation: 12633
Don't do equals checks on the variables, rather do them against the constants:
if("admin".equals(user) && "admin".equals(pass)) {
response.sendRedirect("wel.html");
}
This way you cannot get the NPE.
Upvotes: 1
Reputation: 2208
You are not checking null for request attributes.
replace
String user = request.getParameter("user");
String pass = request.getParameter("pass");
with
String user = request.getParameter("user") != null ? request.getParameter("user") : "";
String pass = request.getParameter("pass") != null ? request.getParameter("pass") : "";
Upvotes: 0
Reputation: 2185
Change this line
if(user.equals("admin") && pass.equals("admin"))
{
response.sendRedirect("wel.html");
}
with
if(user!=null){
if(user.equals("admin") && pass.equals("admin"))
{
response.sendRedirect("wel.html");
}
}
Upvotes: 0