应用中的一个loginServlet登录异常:
java.lang.NullPointerException
at servlet.LoginServlet.doGet(LoginServlet.java:88)
at servlet.LoginServlet.doPost(LoginServlet.java:27)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:212)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:818)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:624)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
at java.lang.Thread.run(Thread.java:595)
以下是有关文件:web.xml,login.java和loginServlet.javaweb.xml:<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>servlet.LoginServlet</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>ExitServlet</servlet-name>
<servlet-class>servlet.ExitServlet</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>MessageServlet</servlet-name>
<servlet-class>servlet.MessageServlet</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>DownLoadServlet</servlet-name>
<servlet-class>servlet.DownLoadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ExitServlet</servlet-name>
<url-pattern>/ExitServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>MessageServlet</servlet-name>
<url-pattern>/MessageServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>DownLoadServlet</servlet-name>
<url-pattern>/DownLoadServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>login.java:
package bean;import java.sql.*;
import java.util.ArrayList;import form.MessageForm;public class Login { Connection conn = null;
Connection conn1 = null;
Statement st = null;
ResultSet rs = null;
Statement st1 = null;
ResultSet rs1 = null;
boolean bool = false;
ArrayList arr =null;
/**
* 登陆
* @param name
* @param pwd
* @return
*/
public MessageForm getLogin(String name,String pwd,String type){
MessageForm messageForm = new MessageForm();
try{
String sql="";
if("0".equals(type))//0,管理员,1学生,2教师
sql = "select * from admin where loginname='"+name+"' and loginpwd='"+pwd+"'";
else if("1".equals(type))
sql = "select * from student where loginname='"+name+"' and loginpwd='"+pwd+"'";
else if("2".equals(type))
sql = "select * from teacher where loginname='"+name+"' and loginpwd='"+pwd+"'";
conn = DBConn.getConn();
st=conn.createStatement();
rs=st.executeQuery(sql);
if(rs.next()){
messageForm.setUsersId(rs.getString("id"));
messageForm.setUsername(rs.getString("username"));
messageForm.setLogo(type); //0,管理员,1学生,2教师
return messageForm;
}else{
return null;
}
}catch(Exception ex){
System.out.println("ddddddd....");
ex.printStackTrace();
return null;
}finally{
try{
if(rs!=null)rs.close();
if(st!=null)st.close();
if(conn!=null)conn.close();
}catch(Exception ee){
System.out.println(ee);
ee.printStackTrace();
}
}
}
}
loginServlet.java:package servlet;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import form.MessageForm;import bean.Login;public class LoginServlet extends HttpServlet { public static final String COOKIE_ID = "IDCOOKIE";
public static final String COOKIE_PWD = "PWDCOOKIE";
public static final String COOKIE_LOGO = "LOGOCOOKIE";
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String userName ="";
String pwd = "";
String type = "";
Login login = new Login();
RequestDispatcher rd = null;
MessageForm messageForm = null;
try{
HttpSession session = request.getSession();
request.setCharacterEncoding("GBK"); //中文转码
response.setCharacterEncoding("GBK");
userName = request.getParameter("name"); //获得用户登录名
pwd = request.getParameter("pwd"); //获得用户密码
type = request.getParameter("type"); //获得登陆类型
messageForm=login.getLogin(userName, pwd,type);//0,管理员,1学生,2教师
if(messageForm != null){ //登陆成功 session.setAttribute("login", messageForm.getLogo()); //用来判断是否通过登陆进入页面,及权限;//0,管理员,1学生,2教师
session.setAttribute("loginUser", messageForm.getUsersId()); //存上登陆人的ID号
session.setAttribute("username", messageForm.getUsername()); //存上真实姓名
//保存登陆(一周)
if(request.getParameter("logo")!=null && "1".equals(request.getParameter("logo")) ){
addCookie(response,LoginServlet.COOKIE_ID,userName,7*24*60*60);
addCookie(response,LoginServlet.COOKIE_PWD,pwd,7*24*60*60);
addCookie(response,LoginServlet.COOKIE_LOGO,request.getParameter("logo"),7*24*60*60);
}else{ //清除
removeCookie(response,LoginServlet.COOKIE_ID);
removeCookie(response,LoginServlet.COOKIE_PWD);
removeCookie(response,LoginServlet.COOKIE_LOGO);
}
}else{
request.setAttribute("ifLogin","用户名或密码错误!");
request.setAttribute("oldname",userName); rd = request.getRequestDispatcher("login.jsp");
}
}catch(Exception e){
System.out.println(e);
e.printStackTrace();
//return null;
}
rd.forward(request,response);
}
private void addCookie(HttpServletResponse rep ,String name,String value, int time){
Cookie cookie = new Cookie(name,value);
cookie.setMaxAge(time);
rep.addCookie(cookie);
} private void removeCookie(HttpServletResponse rep ,String name){
Cookie cookie = new Cookie(name,"");
cookie.setMaxAge(0);
rep.addCookie(cookie);
}}
java.lang.NullPointerException
at servlet.LoginServlet.doGet(LoginServlet.java:88)
at servlet.LoginServlet.doPost(LoginServlet.java:27)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:212)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:818)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:624)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
at java.lang.Thread.run(Thread.java:595)
以下是有关文件:web.xml,login.java和loginServlet.javaweb.xml:<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>servlet.LoginServlet</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>ExitServlet</servlet-name>
<servlet-class>servlet.ExitServlet</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>MessageServlet</servlet-name>
<servlet-class>servlet.MessageServlet</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>DownLoadServlet</servlet-name>
<servlet-class>servlet.DownLoadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ExitServlet</servlet-name>
<url-pattern>/ExitServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>MessageServlet</servlet-name>
<url-pattern>/MessageServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>DownLoadServlet</servlet-name>
<url-pattern>/DownLoadServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>login.java:
package bean;import java.sql.*;
import java.util.ArrayList;import form.MessageForm;public class Login { Connection conn = null;
Connection conn1 = null;
Statement st = null;
ResultSet rs = null;
Statement st1 = null;
ResultSet rs1 = null;
boolean bool = false;
ArrayList arr =null;
/**
* 登陆
* @param name
* @param pwd
* @return
*/
public MessageForm getLogin(String name,String pwd,String type){
MessageForm messageForm = new MessageForm();
try{
String sql="";
if("0".equals(type))//0,管理员,1学生,2教师
sql = "select * from admin where loginname='"+name+"' and loginpwd='"+pwd+"'";
else if("1".equals(type))
sql = "select * from student where loginname='"+name+"' and loginpwd='"+pwd+"'";
else if("2".equals(type))
sql = "select * from teacher where loginname='"+name+"' and loginpwd='"+pwd+"'";
conn = DBConn.getConn();
st=conn.createStatement();
rs=st.executeQuery(sql);
if(rs.next()){
messageForm.setUsersId(rs.getString("id"));
messageForm.setUsername(rs.getString("username"));
messageForm.setLogo(type); //0,管理员,1学生,2教师
return messageForm;
}else{
return null;
}
}catch(Exception ex){
System.out.println("ddddddd....");
ex.printStackTrace();
return null;
}finally{
try{
if(rs!=null)rs.close();
if(st!=null)st.close();
if(conn!=null)conn.close();
}catch(Exception ee){
System.out.println(ee);
ee.printStackTrace();
}
}
}
}
loginServlet.java:package servlet;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import form.MessageForm;import bean.Login;public class LoginServlet extends HttpServlet { public static final String COOKIE_ID = "IDCOOKIE";
public static final String COOKIE_PWD = "PWDCOOKIE";
public static final String COOKIE_LOGO = "LOGOCOOKIE";
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String userName ="";
String pwd = "";
String type = "";
Login login = new Login();
RequestDispatcher rd = null;
MessageForm messageForm = null;
try{
HttpSession session = request.getSession();
request.setCharacterEncoding("GBK"); //中文转码
response.setCharacterEncoding("GBK");
userName = request.getParameter("name"); //获得用户登录名
pwd = request.getParameter("pwd"); //获得用户密码
type = request.getParameter("type"); //获得登陆类型
messageForm=login.getLogin(userName, pwd,type);//0,管理员,1学生,2教师
if(messageForm != null){ //登陆成功 session.setAttribute("login", messageForm.getLogo()); //用来判断是否通过登陆进入页面,及权限;//0,管理员,1学生,2教师
session.setAttribute("loginUser", messageForm.getUsersId()); //存上登陆人的ID号
session.setAttribute("username", messageForm.getUsername()); //存上真实姓名
//保存登陆(一周)
if(request.getParameter("logo")!=null && "1".equals(request.getParameter("logo")) ){
addCookie(response,LoginServlet.COOKIE_ID,userName,7*24*60*60);
addCookie(response,LoginServlet.COOKIE_PWD,pwd,7*24*60*60);
addCookie(response,LoginServlet.COOKIE_LOGO,request.getParameter("logo"),7*24*60*60);
}else{ //清除
removeCookie(response,LoginServlet.COOKIE_ID);
removeCookie(response,LoginServlet.COOKIE_PWD);
removeCookie(response,LoginServlet.COOKIE_LOGO);
}
}else{
request.setAttribute("ifLogin","用户名或密码错误!");
request.setAttribute("oldname",userName); rd = request.getRequestDispatcher("login.jsp");
}
}catch(Exception e){
System.out.println(e);
e.printStackTrace();
//return null;
}
rd.forward(request,response);
}
private void addCookie(HttpServletResponse rep ,String name,String value, int time){
Cookie cookie = new Cookie(name,value);
cookie.setMaxAge(time);
rep.addCookie(cookie);
} private void removeCookie(HttpServletResponse rep ,String name){
Cookie cookie = new Cookie(name,"");
cookie.setMaxAge(0);
rep.addCookie(cookie);
}}
解决方案 »
- 如何在关闭浏览器时立即调用sessionDestroyed方法??
- response.sendRedirect("")和request.getRequestDispatcher("")
- myeclipse中cvs相关问题
- 我的tomcat启动后为什么访问localhost不行,而127.0.0.1就没有问题?
- 异常丢失
- 不能运行index.jsp??
- 如果给<input type=text>增加一个属性,并如何引用?
- 如何在以台电脑上同时向Internet发布ASP,JSP的网页??(在线等)
- 关于JSP中文问题,请进,谢谢
- JSP做聊天室程序,调试出错?请高手指点!!!
- 向达人求助--dwr框架实现定时局部刷新+分页
- web批量打印怎样实现好
}catch(Exception e){
System.out.println(e);
e.printStackTrace();
//return null;
}
rd.forward(request,response);//第88行
}
你开始的时候是定义rd为空的,在else里rd是赋值了,但是如果不进入else语句呢,那么楼主的rd不是还为空么?
你这时候去调用不就是空指针异常吗?