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的相对应,没有错),怎么办啊,我实在解决不了了,哪位大侠可以帮帮我啊,如果解决的详细还有加分,万分的感谢!!
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的相对应,没有错),怎么办啊,我实在解决不了了,哪位大侠可以帮帮我啊,如果解决的详细还有加分,万分的感谢!!
你能确定?action中确实得到值了?
打断点 一步步调试。
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)
<bean id="loginBean" class="com.action.LoginAction">
<property name="istudentBiz" ref="StudentBiz"></property></bean>
为什么iteacharBiz不注入
“action中确实得到值了?”把jsp中的name,password 之类的 input 代码 贴出来。这几天净看空指针了。无外乎是JSP中的 user.username写成了username这类的错误,自己还信誓旦旦的说没错。随便打个断点,如果不会debug,就system.out, 先自己看看有没有取到值。
还有,学学怎么提问。 相关的信息都贴不全,怎么让别人帮你解决?