错误信息:
严重: Servlet.service() for servlet action threw exception
java.lang.NullPointerException
at com.yourcompany.struts.form.LoginForm.validate(LoginForm.java:41)
at org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:950)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:207)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
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:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
at java.lang.Thread.run(Unknown Source)代码如下:
package com.yourcompany.struts.form;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import JudgmentExpression.RegularExpression;
import org.hibernate.Query;
import org.hibernate.Session;
import java.util.ArrayList;
import hib.HibernateSessionFactory;
import Bean.Login;public class LoginForm extends ActionForm {
private String loginPsd;
private String loginName;
Session session=HibernateSessionFactory.getSession();
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
  ActionErrors err=new ActionErrors();
  //判断账户和密码是否为空
  if(this.getLoginName().equals("")){
      err.add("noemail", new ActionMessage("noemailmessage"));//添加错误信息
      return err;}
  if(this.getLoginPsd().equals("")){
      err.add("nopassword", new ActionMessage("nopasswordmessage"));//添加错误信息
      return err;}
  //判断是否是Email
  RegularExpression re=new RegularExpression();
  if (re.checkEmail(this.getLoginName())==false){
  //从数据库中查找是否有此账户
  String sel="from Login lg where lg.username='" +this.getLoginName()+"' and lg.psd='"+this.getLoginPsd()+"'";
  System.out.println(sel);
  Query query=session.createQuery(sel);//出错的行
  ArrayList<Login> list=(ArrayList<Login>)query.list();
  Login temp=(Login)list.get(0);
  if (temp==null){
  err.add("notemail", new ActionMessage("notexists"));
  }
  return err;
  }   
} public void reset(ActionMapping mapping, HttpServletRequest request) {

}
public String getLoginPsd() {
return loginPsd;
}
public void setLoginPsd(String loginPsd) {
this.loginPsd = loginPsd;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
}数据库已连接,但不知错误在哪里

解决方案 »

  1.   

    本帖最后由 AWUSOFT 于 2010-03-04 15:53:25 编辑
      

  2.   

    Session session=HibernateSessionFactory.getSession(); 
    应该是这里获取了一个null。
      

  3.   

    大概在这两处
      if(this.getLoginName().equals("")){
          err.add("noemail", new ActionMessage("noemailmessage"));//添加错误信息
          return err;}
      if(this.getLoginPsd().equals("")){
          err.add("nopassword", new ActionMessage("nopasswordmessage"));//添加错误信息
          return err;} 
    都没做null 判断就调用方法
      

  4.   

    Session session=HibernateSessionFactory.getSession(); 调试看session的值就知道了。
      

  5.   

    是用的是什么框架啊
      session为空, 可能是配置文件的问题哦
     自己仔细看看哈
      

  6.   

    问题已解决,是session为null,重新反编译一下hibernate就好了