Struts has detected an unhandled exception:

Mr_Bearin 2014-04-25 10:29:21

Struts Problem Report

Struts has detected an unhandled exception:

Messages:
File: com/pms2/action/LoginAction.java
Line number: 72
Stacktraces

java.lang.NullPointerException
com.pms2.action.LoginAction.execute(LoginAction.java:72)
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:452)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
java.lang.Thread.run(Thread.java:619)

...全文
19393 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
周坤_66 2017-01-07
  • 打赏
  • 举报
回复
应该是hql语句的错误
Mr_Bearin 2014-04-27
  • 打赏
  • 举报
回复
引用 17 楼 allen19901008 的回复:
你73行是什么,直接把73行输出一下,肯定没有值。
= =!是没有啊,但是找不到原因
Mr_Bearin 2014-04-27
  • 打赏
  • 举报
回复
把注入改成自动装配配置搞定了
Mr_Bearin 2014-04-25
  • 打赏
  • 举报
回复
引用 14 楼 wlwlwlwl015 的回复:
[quote=引用 13 楼 xiongbinbear 的回复:] [quote=引用 11 楼 wlwlwlwl015 的回复:] [quote=引用 10 楼 xiongbinbear 的回复:] [quote=引用 8 楼 wlwlwlwl015 的回复:] 我晕,int result=ls.validLogin(getId(), getPassword()); 你这写的什么啊,参数直接写id和password。
= =!额,小问题貌似多。。。但是。。。这这这还是木有解决注入失败。。。[/quote] 上面的错和注入没关系。依赖注入service,你要写接口,还有接口的set方法,你刚把set方法改过来没。 xml的配置没问题,注意bean的property要和类中属性的变量名一致。[/quote] 这个改了已经,属性名是对应的 没问题[/quote] 现在是什么问题~把异常贴上来~[/quote] 和之前的异常信息一样,还是在那一行

Stacktraces

java.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)
tony4geek 2014-04-25
  • 打赏
  • 举报
回复
debug 调试看看那句报空 的
小灯光环 2014-04-25
  • 打赏
  • 举报
回复
引用 13 楼 xiongbinbear 的回复:
[quote=引用 11 楼 wlwlwlwl015 的回复:] [quote=引用 10 楼 xiongbinbear 的回复:] [quote=引用 8 楼 wlwlwlwl015 的回复:] 我晕,int result=ls.validLogin(getId(), getPassword()); 你这写的什么啊,参数直接写id和password。
= =!额,小问题貌似多。。。但是。。。这这这还是木有解决注入失败。。。[/quote] 上面的错和注入没关系。依赖注入service,你要写接口,还有接口的set方法,你刚把set方法改过来没。 xml的配置没问题,注意bean的property要和类中属性的变量名一致。[/quote] 这个改了已经,属性名是对应的 没问题[/quote] 现在是什么问题~把异常贴上来~
Mr_Bearin 2014-04-25
  • 打赏
  • 举报
回复
引用 11 楼 wlwlwlwl015 的回复:
[quote=引用 10 楼 xiongbinbear 的回复:] [quote=引用 8 楼 wlwlwlwl015 的回复:] 我晕,int result=ls.validLogin(getId(), getPassword()); 你这写的什么啊,参数直接写id和password。
= =!额,小问题貌似多。。。但是。。。这这这还是木有解决注入失败。。。[/quote] 上面的错和注入没关系。依赖注入service,你要写接口,还有接口的set方法,你刚把set方法改过来没。 xml的配置没问题,注意bean的property要和类中属性的变量名一致。[/quote] 这个改了已经,属性名是对应的 没问题
Mr_Bearin 2014-04-25
  • 打赏
  • 举报
回复
引用 9 楼 wlwlwlwl015 的回复:
像这种问题,异常告诉你在72行,很明显,你把可能出问题的地方打印一下,比如: System.out.println(getId()); System.out.println(getPassword()); 发现是null的话不是很快就能解决。多动脑子啊。这就是你仔细检查了?我只是大概看了下,这都是最基础的东西啊。
= =!额,大意了。。。看异常信息大概就是注入问题了,72行这正好就是调用到loginService,id和password传导action都没有问题,用了print语句可以输出
小灯光环 2014-04-25
  • 打赏
  • 举报
回复
引用 10 楼 xiongbinbear 的回复:
[quote=引用 8 楼 wlwlwlwl015 的回复:] 我晕,int result=ls.validLogin(getId(), getPassword()); 你这写的什么啊,参数直接写id和password。
= =!额,小问题貌似多。。。但是。。。这这这还是木有解决注入失败。。。[/quote] 上面的错和注入没关系。依赖注入service,你要写接口,还有接口的set方法,你刚把set方法改过来没。 xml的配置没问题,注意bean的property要和类中属性的变量名一致。
Mr_Bearin 2014-04-25
  • 打赏
  • 举报
回复
引用 8 楼 wlwlwlwl015 的回复:
我晕,int result=ls.validLogin(getId(), getPassword()); 你这写的什么啊,参数直接写id和password。
= =!额,小问题貌似多。。。但是。。。这这这还是木有解决注入失败。。。
小灯光环 2014-04-25
  • 打赏
  • 举报
回复
像这种问题,异常告诉你在72行,很明显,你把可能出问题的地方打印一下,比如: System.out.println(getId()); System.out.println(getPassword()); 发现是null的话不是很快就能解决。多动脑子啊。这就是你仔细检查了?我只是大概看了下,这都是最基础的东西啊。
小灯光环 2014-04-25
  • 打赏
  • 举报
回复
我晕,int result=ls.validLogin(getId(), getPassword()); 你这写的什么啊,参数直接写id和password。
Mr_Bearin 2014-04-25
  • 打赏
  • 举报
回复
引用 3 楼 wlwlwlwl015 的回复:
com.pms2.action.LoginAction.execute(LoginAction.java:72) 问题应该就在你的Action的72行,空指针的话,你检查一下前台和Action之间的传值问题,有没有传递重复属性之类的。注入的话也有可能是你的loginService就没注入进来,你调用业务类导致的空指针。
这两个错误都改掉了,但是依然是空指针错误。。。。
Mr_Bearin 2014-04-25
  • 打赏
  • 举报
回复
引用 5 楼 wlwlwlwl015 的回复:
我晕,你怎么能写private loginServiceImpl ls;依赖注入注的是接口,不是实现类!
额,刚发现。。。。但是改过来还是有错误
小灯光环 2014-04-25
  • 打赏
  • 举报
回复
我晕,你怎么能写private loginServiceImpl ls;依赖注入注的是接口,不是实现类!
小灯光环 2014-04-25
  • 打赏
  • 举报
回复
这个get方法写错了吧: public loginServiceImpl getLS(){ return this.ls; }
小灯光环 2014-04-25
  • 打赏
  • 举报
回复
com.pms2.action.LoginAction.execute(LoginAction.java:72) 问题应该就在你的Action的72行,空指针的话,你检查一下前台和Action之间的传值问题,有没有传递重复属性之类的。注入的话也有可能是你的loginService就没注入进来,你调用业务类导致的空指针。
Mr_Bearin 2014-04-25
  • 打赏
  • 举报
回复

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;
		}
	}
}

Mr_Bearin 2014-04-25
  • 打赏
  • 举报
回复
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>
貌似是依赖注入失败,但是仔细检查了下,应该不是名字命名什么的问题,但是。。。没找出错误。。。
独往丶 2014-04-25
  • 打赏
  • 举报
回复
你73行是什么,直接把73行输出一下,肯定没有值。

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧