public class LoginAction extends ActionSupport {
private int id;
private String name;
private String password;
private String role;
private IstudentBiz istudentBiz;
private IteacharBiz iteacharBiz;
public int getId() {
return id;
}public void setId(int id) {
this.id = id;
}public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;}
public void setIstudentBiz(IstudentBiz istudentBiz) {
this.istudentBiz = istudentBiz;}
public void setIteacharBiz(IteacharBiz iteacharBiz) {
this.iteacharBiz = iteacharBiz;}
public String execute(){
//如果以学生身份登录
if("student".equals(role))
{if(istudentBiz.login(name, password)>0){
Student student = istudentBiz.findStudentByID(id);
//把学生信息保存到session范围
HttpSession session = ServletActionContext.getRequest().getSession();
session.setAttribute("student", student);
return "studentsuccess";}else{addActionError("该学生账号不存在,或者密码不正确!");return "input";}}else
{if(iteacharBiz.findTeacharByNameAndByPassword(id, password)>0)
{return "teacharsucess";}
else{addActionError("该教师编号不存在,或者密码不正确!");return "input";}}}}
public class studentBiz implements IstudentBiz {
private IstudentDao istudentDao;//接口
public void setIstudentDao(IstudentDao istudentDao) {
this.istudentDao = istudentDao;
}
//学生登陆 public int login(String name,String password){
return istudentDao.findStudentByNameAndByPassword(name, password);
}
public class StudentDAO extends HibernateDaoSupport implements IstudentDao {
public int findStudentByNameAndByPassword(String name,String password){
List list=this.getHibernateTemplate().find("from Student as s where s.studentName = ? and s.password = ?", new String[]{name,password});
if(list.size()>0){
Student student=(Student)list.get(0);
return student.getStudentId();
}return -1;}}applicationContext.xml配置文件 缩略
<!-- 配置Action -->
<bean id="loginBean" class="com.action.LoginAction">
<property name="istudentBiz" ref="StudentBiz"></property></bean>              <!-- 配置Biz -->
<bean id="StudentBiz" class="com.biz.studentBiz">
<property name="istudentDao" ref="StudentDAO"></property>
</bean>Sturts.xml文件 缩略
<action name="login" class="loginBean">
<result name="studentsuccess" type="redirect">/student/index.jsp</result><!--进入考试页面--><result name="teacharsucess" type="redirect">/teacher/index.html</result><!--老师登录成功页面-->
<result name="input">/login.jsp</result><!--登录失败,重新登录--></action>总之,tomcat启动时没有报错,单是在登录时报空指针的错误(jsp表单的属性与Action的相对应,没有错),怎么办啊,我实在解决不了了,哪位大侠可以帮帮我啊,如果解决的详细还有加分,万分的感谢!!

解决方案 »

  1.   

    除了贴错误信息,还要回答“jsp表单的属性与Action的相对应,没有错”
    你能确定?action中确实得到值了?
    打断点 一步步调试。
      

  2.   

    type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception java.lang.NullPointerException
    com.action.LoginAction.execute(LoginAction.java:68)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
    com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
    org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
    org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
      

  3.   

    此处
    <bean id="loginBean" class="com.action.LoginAction">
    <property name="istudentBiz" ref="StudentBiz"></property></bean>
    为什么iteacharBiz不注入
      

  4.   

    debug 调试一下 看看那个值为空。
      

  5.   

    Student student = istudentBiz.findStudentByID(id);这个id前台传来的吗?我怀疑这个student是null
      

  6.   

    别瞎猜了。楼主回答我2楼的问题
    “action中确实得到值了?”把jsp中的name,password 之类的 input 代码 贴出来。这几天净看空指针了。无外乎是JSP中的 user.username写成了username这类的错误,自己还信誓旦旦的说没错。随便打个断点,如果不会debug,就system.out, 先自己看看有没有取到值。 
    还有,学学怎么提问。 相关的信息都贴不全,怎么让别人帮你解决?
      

  7.   

    debug这行代码com.action.LoginAction.execute(LoginAction.java:68),看看他的值是否得到了
      

  8.   

    LoginAction.java:68这行的错误,lz应该打断点,步步调试,确定问题是什么再说,这样只能让大家帮你猜错误是啥