Servlet encountered an error using HttpSession
[nobr]CookieLoginServlet
import javax.servlet.*;
import java.util.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
/**
* Servlet implementation class for Servlet: CookieLoginServlet
*
*/
publicclass CookieLoginServletextends javax.servlet.http.HttpServletimplements javax.servlet.Servlet{
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#HttpServlet()
*/
public CookieLoginServlet(){
super();
}
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protectedvoid doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
// TODO Auto-generated method stub
sendLoginForm(response,false);
}
privatevoid sendLoginForm(HttpServletResponse response,boolean withErrorMessage)
throws ServletException, IOException{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Cookie Login Servlet</title>");
out.println("<body>");
out.println("<center>");
if(withErrorMessage){
out.println("Login failed please try again");
out.println("if you think you have entered the correct user name" +
" and password, the cookie settings in your browser might be off" +
"<br>Click <A href=InfoPage.html>here</a> for information" +
"on how to turn it on.<br>");
}
out.println("<BR>");
out.println("<BR><H2>Login Page</H2>");
out.println("<BR>");
out.println("<BR>Please enter your user name and password.");
out.println("<BR>");
out.println("<BR><FORM METHOD=POST>");
out.println("<TABLE>");
out.println("<TR>");
out.println("<TD>User Name:</TD>");
out.println("<TD><INPUT TYPE=TEXT NAME=userName></TD>");
out.println("</TR>");
out.println("<TR>");
out.println("<TD>Password:</TD>");
out.println("<TD><INPUT TYPE=PASSWORD NAME=password></TD>");
out.println("</TR>");
out.println("<TR>");
out.println("<TD ALIGN=RIGHT COLSPAN=2>");
out.println("<INPUT TYPE=SUBMIT VALUE=Login></TD>");
out.println("</TR>");
out.println("</TABLE>");
out.println("</FORM>");
out.println("</CENTER>");
out.println("</BODY>");
out.println("</HTML>");
}
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protectedvoid doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
// TODO Auto-generated method stub
String userName = request.getParameter("userName");
String password = request.getParameter("password");
if(login(userName, password)){
//send cookie to the browswer
HttpSession session = request.getSession(true);
session.setAttribute("Loggedin",new String("true"));
response.sendRedirect("ContentServlet");
}
else{
sendLoginForm(response,true);
}
}
publicstaticboolean login(String userName, String password){
try{
Class.forName("org.apache.derby.jdbc.ClientDriver");
Connection con = DriverManager.getConnection("jdbc:derby://localhost:1527/sample");
Statement s = con.createStatement();
String sql ="SELECT UserName FROM USERS.posts" +
" WHERE UserName='" + fixSqlFieldValue(userName) +"'" +
" AND Password='" + fixSqlFieldValue(password) +"'";
ResultSet rs = s.executeQuery(sql);
if (rs.next()){
rs.close();
s.close();
con.close();
returntrue;
}
rs.close();
s.close();
con.close();
}
catch(ClassNotFoundException e){
System.out.println(e.toString());
}
catch (SQLException e){
System.out.println(e.toString());
}
catch (Exception e){
System.out.println(e.toString());
}
returnfalse;
}
publicstatic String fixSqlFieldValue(String value){
if (value==null)
returnnull;
int length = value.length();
StringBuffer fixedValue =new StringBuffer((int) (length * 1.1));
for (int i=0; i<length; i++){
char c = value.charAt(i);
if (c=='\'')
fixedValue.append("''");
else
fixedValue.append(c);
}
return fixedValue.toString();
}
}
and here is my ContentServlet class
package chapter5;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* Servlet implementation class for Servlet: ContentServlet
*
*/
publicclass ContentServletextends javax.servlet.http.HttpServletimplements javax.servlet.Servlet{
/**
*
*/
privatestaticfinallong serialVersionUID = 1;
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#HttpServlet()
*/
public String loginUrl ="CookieLoginServlet";
public ContentServlet(){
super();
}
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protectedvoid doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
// TODO Auto-generated method stub
HttpSession session = request.getSession();
if (session==null)
response.sendRedirect(loginUrl);
else{
String loggedIn = (String) session.getAttribute("loggedIn");
if (!loggedIn.equals("true"))
response.sendRedirect(loginUrl);
}
// This is an authorized user, okay to display content
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("><HTML>");
out.println("<HEAD>");
out.println("<TITLE>Welcome</TITLE>");
out.println("</HEAD>");
out.println("<BODY>");
out.println("Welcome.");
out.println("</BODY>");
out.println("</HTML>");
}
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protectedvoid doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
// TODO Auto-generated method stub
doGet(request, response);
}
}
Now when i run my cookielogin class and enter a username and a specified password it should redirect to my contentservlet and display a wellcome page if the user exist in the database if not then back to login form. But for some reason this is the error i am recieving.
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
java.lang.NullPointerException
chapter5.ContentServlet.doGet(ContentServlet.java:38)
javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
note The full stack trace of the root cause is available in the Tomcat logs.
--
Apache Tomcat/5.0.14
Any ideas?[/nobr]

