Struts has detected an unhandled exception: springstruts 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 struts.xml<?xml version="1.0" encoding="GBK" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts> <constant name="struts.devMode" value="true"/> <constant name="struts.i18n.encoding" value="GBK"/> <package name="default" extends="struts-default" namespace="/"> <action name="login.action" class="loginAction"> <result name="input">/index.jsp</result> <result name="staff">/WEB-INF/JSP/Staff/index.jsp</result> <result name="manager">/WEB-INF/JSP/Manager/index.jsp</result> <result name="error">/login.jsp</result> </action> <action name="showPerInfo.action" class="managerAction" method="showPerInfo"> <result name="success">/WEB-INF/JSP/Manager/showPerInfor.jsp</result> </action> <action name="showAllStaff.action" class="managerAction" method="showAllStaff"> <result name="success">/WEB-INF/JSP/Manager/showAllStaff.jsp</result> </action> <action name="showProjects" class="managerAction" method="showProjects"> <result name="success">/WEB-INF/JSP/Manager/showProjects.jsp</result> </action> </package></struts> ApplicationContext.xml<?xml version="1.0" encoding="GBK"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <!-- ************************定义数据源Bean,使用BasicDataSource************************* --><!-- 设计连接数据库的驱动,URL,用户名,密码 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"> </property> <property name="url" value="jdbc:mysql://localhost:3306/PMS2"></property> <property name="username" value="root"></property> <property name="password" value="bear"></property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> <prop key='hibernate.show_sql'>true</prop> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.use_sql_comments">true</prop> <prop key="hibernate.cache.use_secend_level_cache">true</prop> <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop> </props> </property> <property name="mappingResources"> <list> <value>com/pms2/model/Team.hbm.xml</value> <value>com/pms2/model/Project.hbm.xml</value> <value>com/pms2/model/Staff.hbm.xml</value> <value>com/pms2/model/Task.hbm.xml</value> <value>com/pms2/model/Department.hbm.xml</value></list> </property> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <bean id="daoTemplate" abstract="true" lazy-init="true"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <bean id="projectDao" class="com.pms2.dao.impl.ProjectDaoHibernate" parent="daoTemplate"/> <bean id="staffDao" class="com.pms2.dao.impl.StaffDaoHibernate" parent="daoTemplate"/> <bean id="loginService" class="com.pms2.service.impl.loginServiceImpl"> <property name="staffDao" ref="staffDao"></property> </bean> <bean id="managerService" class="com.pms2.service.impl.managerServiceImpl"> <property name="staffDao" ref="staffDao"></property> <property name="projectDao" ref="projectDao"></property> </bean> <bean id="staffService" class="com.pms2.service.impl.staffServiceImpl"> <property name="staffDao" ref="staffDao"></property> <property name="projectDao" ref="projectDao"></property> </bean> <bean id="loginAction" class="com.pms2.action.LoginAction" scope="prototype" > <property name="ls" ref="loginService"></property> </bean> <bean id="managerAction" class="com.pms2.action.managerAction" scope="prototype"> <property name="ms" ref="managerService"></property> </bean> <bean id="staffAction" class="com.pms2.action.staffAction" scope="prototype"> <property name="ss" ref="staffService"></property> </bean> </beans>貌似是依赖注入失败,但是仔细检查了下,应该不是名字命名什么的问题,但是没找出错误 package com.pms2.action;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;import com.pms2.model.Staff;import com.pms2.service.impl.loginServiceImpl;import static com.pms2.service.loginService.*;public class LoginAction extends ActionSupport{ /** * */ private static final long serialVersionUID = 1L; private final String STAFF_RESULT="staff"; private final String MANAGER_RESULT="manager"; private loginServiceImpl ls; private String tip; private Staff staff; private String id; private String password; public void setLs(loginServiceImpl ls){ this.ls=ls; } public loginServiceImpl getLS(){ return this.ls; } public String getTip() { return tip; } public void setTip(String tip) { this.tip = tip; } public Staff getStaff() { return staff; } public void setStaff(Staff staff) { this.staff = staff; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String execute() throws Exception{ ActionContext ctx=ActionContext.getContext(); System.out.println("execute...."); System.out.println(getId()); int result=ls.validLogin(getId(), getPassword()); System.out.println("*************validLogined***************"); if(result==LOGIN_STAFF){ setTip("Login Success!"); ctx.getSession().put("id", getId()); ctx.getSession().put("name",staff.getSname()); System.out.println("staff_result"); return STAFF_RESULT; } else if(result==LOGIN_MANAGER){ setTip("Login Success!"); ctx.getSession().put("id", getId()); ctx.getSession().put("name",staff.getSname()); System.out.println("manager_result"); return MANAGER_RESULT; } else{ setTip("登陆失败!"); System.out.println("error_result"); return ERROR; } }} com.pms2.action.LoginAction.execute(LoginAction.java:72)问题应该就在你的Action的72行,空指针的话,你检查一下前台和Action之间的传值问题,有没有传递重复属性之类的。注入的话也有可能是你的loginService就没注入进来,你调用业务类导致的空指针。 这个get方法写错了吧: public loginServiceImpl getLS(){ return this.ls; } 我晕,你怎么能写private loginServiceImpl ls;依赖注入注的是接口,不是实现类! 我晕,int result=ls.validLogin(getId(), getPassword());你这写的什么啊,参数直接写id和password。 像这种问题,异常告诉你在72行,很明显,你把可能出问题的地方打印一下,比如:System.out.println(getId());System.out.println(getPassword());发现是null的话不是很快就能解决。多动脑子啊。这就是你仔细检查了?我只是大概看了下,这都是最基础的东西啊。 = =!额,小问题貌似多但是这这这还是木有解决注入失败上面的错和注入没关系。依赖注入service,你要写接口,还有接口的set方法,你刚把set方法改过来没。xml的配置没问题,注意bean的property要和类中属性的变量名一致。 = =!额,大意了看异常信息大概就是注入问题了,72行这正好就是调用到loginService,id和password传导action都没有问题,用了print语句可以输出 = =!额,小问题貌似多但是这这这还是木有解决注入失败上面的错和注入没关系。依赖注入service,你要写接口,还有接口的set方法,你刚把set方法改过来没。xml的配置没问题,注意bean的property要和类中属性的变量名一致。这个改了已经,属性名是对应的 没问题 = =!额,小问题貌似多但是这这这还是木有解决注入失败上面的错和注入没关系。依赖注入service,你要写接口,还有接口的set方法,你刚把set方法改过来没。xml的配置没问题,注意bean的property要和类中属性的变量名一致。这个改了已经,属性名是对应的 没问题现在是什么问题~把异常贴上来~ debug 调试看看那句报空 的 = =!额,小问题貌似多但是这这这还是木有解决注入失败上面的错和注入没关系。依赖注入service,你要写接口,还有接口的set方法,你刚把set方法改过来没。xml的配置没问题,注意bean的property要和类中属性的变量名一致。这个改了已经,属性名是对应的 没问题现在是什么问题~把异常贴上来~和之前的异常信息一样,还是在那一行Stacktracesjava.lang.NullPointerException com.pms2.action.LoginAction.execute(LoginAction.java:73) 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) 关于使用marshaller生成xml文件的一个问题 进来看看,你也会很疑惑的。 关于main的一个问题 java应用 急 请问java中如何根据字符串读日期? java 能否调用win32 api? JAVA中如何解决时间即时更新的问题,在线等! 为什么运行了一段时间后,速度会越来越慢? 在于一个applet发布的问题,急,在线等!~~~~~~~~~~~~ 我写二个模块.一个是用java写的套接字client/server端,和另一个用VC写的套接字client/server端通讯,请问能否可以实现通讯?套接字用berkel 如何获得被上同步锁对象的锁的状态 BeautyEye, 界面定制
struts.xml
<?xml version="1.0" encoding="GBK" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.devMode" value="true"/>
<constant name="struts.i18n.encoding" value="GBK"/>
<package name="default" extends="struts-default" namespace="/">
<action name="login.action" class="loginAction">
<result name="input">/index.jsp</result>
<result name="staff">/WEB-INF/JSP/Staff/index.jsp</result>
<result name="manager">/WEB-INF/JSP/Manager/index.jsp</result>
<result name="error">/login.jsp</result>
</action>
<action name="showPerInfo.action" class="managerAction" method="showPerInfo">
<result name="success">/WEB-INF/JSP/Manager/showPerInfor.jsp</result>
</action>
<action name="showAllStaff.action" class="managerAction" method="showAllStaff">
<result name="success">/WEB-INF/JSP/Manager/showAllStaff.jsp</result>
</action>
<action name="showProjects" class="managerAction" method="showProjects">
<result name="success">/WEB-INF/JSP/Manager/showProjects.jsp</result>
</action>
</package>
</struts>
ApplicationContext.xml<?xml version="1.0" encoding="GBK"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- ************************定义数据源Bean,使用BasicDataSource************************* -->
<!-- 设计连接数据库的驱动,URL,用户名,密码 -->
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/PMS2"></property>
<property name="username" value="root"></property>
<property name="password" value="bear"></property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key='hibernate.show_sql'>true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.use_sql_comments">true</prop>
<prop key="hibernate.cache.use_secend_level_cache">true</prop>
<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/pms2/model/Team.hbm.xml</value>
<value>com/pms2/model/Project.hbm.xml</value>
<value>com/pms2/model/Staff.hbm.xml</value>
<value>com/pms2/model/Task.hbm.xml</value>
<value>com/pms2/model/Department.hbm.xml</value></list>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="daoTemplate" abstract="true" lazy-init="true">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="projectDao" class="com.pms2.dao.impl.ProjectDaoHibernate" parent="daoTemplate"/>
<bean id="staffDao" class="com.pms2.dao.impl.StaffDaoHibernate" parent="daoTemplate"/>
<bean id="loginService" class="com.pms2.service.impl.loginServiceImpl">
<property name="staffDao" ref="staffDao"></property>
</bean>
<bean id="managerService" class="com.pms2.service.impl.managerServiceImpl">
<property name="staffDao" ref="staffDao"></property>
<property name="projectDao" ref="projectDao"></property>
</bean>
<bean id="staffService" class="com.pms2.service.impl.staffServiceImpl">
<property name="staffDao" ref="staffDao"></property>
<property name="projectDao" ref="projectDao"></property>
</bean>
<bean id="loginAction" class="com.pms2.action.LoginAction" scope="prototype" >
<property name="ls" ref="loginService"></property>
</bean>
<bean id="managerAction" class="com.pms2.action.managerAction" scope="prototype">
<property name="ms" ref="managerService"></property>
</bean>
<bean id="staffAction" class="com.pms2.action.staffAction" scope="prototype">
<property name="ss" ref="staffService"></property>
</bean>
</beans>貌似是依赖注入失败,但是仔细检查了下,应该不是名字命名什么的问题,但是没找出错误
import com.opensymphony.xwork2.ActionSupport;
import com.pms2.model.Staff;
import com.pms2.service.impl.loginServiceImpl;
import static com.pms2.service.loginService.*;public class LoginAction extends ActionSupport{
/**
*
*/
private static final long serialVersionUID = 1L;
private final String STAFF_RESULT="staff";
private final String MANAGER_RESULT="manager";
private loginServiceImpl ls;
private String tip;
private Staff staff;
private String id;
private String password; public void setLs(loginServiceImpl ls){
this.ls=ls;
}
public loginServiceImpl getLS(){
return this.ls;
}
public String getTip() {
return tip;
} public void setTip(String tip) {
this.tip = tip;
} public Staff getStaff() {
return staff;
} public void setStaff(Staff staff) {
this.staff = staff;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getId() {
return id;
} public void setId(String id) {
this.id = id;
}
public String execute() throws Exception{
ActionContext ctx=ActionContext.getContext();
System.out.println("execute....");
System.out.println(getId());
int result=ls.validLogin(getId(), getPassword());
System.out.println("*************validLogined***************");
if(result==LOGIN_STAFF){
setTip("Login Success!");
ctx.getSession().put("id", getId());
ctx.getSession().put("name",staff.getSname());
System.out.println("staff_result");
return STAFF_RESULT;
}
else if(result==LOGIN_MANAGER){
setTip("Login Success!");
ctx.getSession().put("id", getId());
ctx.getSession().put("name",staff.getSname());
System.out.println("manager_result");
return MANAGER_RESULT;
}
else{
setTip("登陆失败!");
System.out.println("error_result");
return ERROR;
}
}
}
问题应该就在你的Action的72行,空指针的话,你检查一下前台和Action之间的传值问题,有没有传递重复属性之类的。注入的话也有可能是你的loginService就没注入进来,你调用业务类导致的空指针。
public loginServiceImpl getLS(){
return this.ls;
}
你这写的什么啊,参数直接写id和password。
System.out.println(getId());
System.out.println(getPassword());
发现是null的话不是很快就能解决。多动脑子啊。这就是你仔细检查了?我只是大概看了下,这都是最基础的东西啊。
上面的错和注入没关系。依赖注入service,你要写接口,还有接口的set方法,你刚把set方法改过来没。
xml的配置没问题,注意bean的property要和类中属性的变量名一致。
上面的错和注入没关系。依赖注入service,你要写接口,还有接口的set方法,你刚把set方法改过来没。
xml的配置没问题,注意bean的property要和类中属性的变量名一致。
这个改了已经,属性名是对应的 没问题
上面的错和注入没关系。依赖注入service,你要写接口,还有接口的set方法,你刚把set方法改过来没。
xml的配置没问题,注意bean的property要和类中属性的变量名一致。
这个改了已经,属性名是对应的 没问题
现在是什么问题~把异常贴上来~
上面的错和注入没关系。依赖注入service,你要写接口,还有接口的set方法,你刚把set方法改过来没。
xml的配置没问题,注意bean的property要和类中属性的变量名一致。
这个改了已经,属性名是对应的 没问题
现在是什么问题~把异常贴上来~和之前的异常信息一样,还是在那一行Stacktracesjava.lang.NullPointerException
com.pms2.action.LoginAction.execute(LoginAction.java:73)
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)