我的userAction是实现的com.opensymphony.xwork2.Action这个类,我用
ActionContext ctx = ActionContext.getContext();
Map<String,String> session = ctx.getSession();//两个都是实例变量
创建session后,在普通方法里用put("username", vo.getUsername())时会提示put()这步空指针异常。
我把ctx,session作为局部变量来创建,再紧接着用put()就没问题。
++++++++++++++++++++++++++++++++++++++++
我用HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();//两个都是实例变量
创建session后,在启动tomcat时就报错:严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'Action' defined in class path resource [applicationContext.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.jndi.test.action.Action]: Constructor threw exception; nested exception is java.lang.NullPointerException
Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.jndi.test.action.Action]: Constructor threw exception; nested exception is java.lang.NullPointerException
Caused by: java.lang.NullPointerException
at com.jndi.test.action.Action.<init>(Action.java:22)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:85)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:757)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:722)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:386)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:291)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:189)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4135)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
at org.apache.catalina.core.StandardService.start(StandardService.java:519)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)。。但是把session作为局部变量来创建紧接着用setAttribute()发布和使用都没问题。
++++++++++++++++++++++++++++++
以上两种方式的get/set和构造方法都是自动生成的。、、怎么解决?谢谢!
ActionContext ctx = ActionContext.getContext();
Map<String,String> session = ctx.getSession();//两个都是实例变量
创建session后,在普通方法里用put("username", vo.getUsername())时会提示put()这步空指针异常。
我把ctx,session作为局部变量来创建,再紧接着用put()就没问题。
++++++++++++++++++++++++++++++++++++++++
我用HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();//两个都是实例变量
创建session后,在启动tomcat时就报错:严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'Action' defined in class path resource [applicationContext.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.jndi.test.action.Action]: Constructor threw exception; nested exception is java.lang.NullPointerException
Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.jndi.test.action.Action]: Constructor threw exception; nested exception is java.lang.NullPointerException
Caused by: java.lang.NullPointerException
at com.jndi.test.action.Action.<init>(Action.java:22)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:85)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:757)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:722)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:386)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:291)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:189)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4135)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
at org.apache.catalina.core.StandardService.start(StandardService.java:519)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)。。但是把session作为局部变量来创建紧接着用setAttribute()发布和使用都没问题。
++++++++++++++++++++++++++++++
以上两种方式的get/set和构造方法都是自动生成的。、、怎么解决?谢谢!
解决方案 »
- 怎么实现点确定提交数据到数据库啊?
- 比较两个数组是否有相同值
- 正在研究上传下载组件
- 求:jsp来调用oracle里的存储方法!
- 问一个从ACCESS数据库里面取数据的格式的问题
- 如何将两个ArrayList 合并成一个List,List里面的数据是Student对象集,然后还需要对List进行排序,按学生"入学日期"字段.
- 谁能帮我解一下JSP备份MSSQL的程序?或者按那程序帮我写一个~!
- 忽忽学校选专业课(关于我一生的大事)都进来帮忙拿主意蛤
- 征求开发servlet的最佳方案(开发工具,容器,服务器以及他们组合的优缺点)
- smartupload中文问题
- JS控制显示效果的问题?
- HQL日期区间查询如何实现?
你把你这个com.jndi.test.action.Action 的代码贴出来让我们看看呢?
package com.jndi.test.action;import java.util.List;
import java.util.Map;import com.jndi.test.service.IService;
import com.jndi.test.vo.UserVo;
import com.opensymphony.xwork2.ActionContext;/*author:邓瑶冬
2010-9-8下午06:53:25*/
public class Action implements com.opensymphony.xwork2.Action {
private IService service;
private List<UserVo> listvo;
private String string;
private UserVo uservo;
ActionContext ctx = ActionContext.getContext();
Map<String, String> session = ctx.getSession(); public Action() {
super();
} public Action(ActionContext ctx, List<UserVo> listvo, IService service,
Map session, String string, UserVo uservo) {
super();
this.ctx = ctx;
this.listvo = listvo;
this.service = service;
this.session = session;
this.string = string;
this.uservo = uservo;
} public IService getService() {
return service;
} public void setService(IService service) {
this.service = service;
} public List<UserVo> getListvo() {
return listvo;
} public void setListvo(List<UserVo> listvo) {
this.listvo = listvo;
} public String getString() {
return string;
} public void setString(String string) {
this.string = string;
} public UserVo getUservo() {
return uservo;
} public void setUservo(UserVo uservo) {
this.uservo = uservo;
} public ActionContext getCtx() {
return ctx;
} public void setCtx(ActionContext ctx) {
this.ctx = ctx;
} public Map getSession() {
return session;
} public void setSession(Map session) {
this.session = session;
} public String execute() throws Exception {
String str = "";
if ("findall".equals(getString())) {
str = this.findAll();
} else if ("add".equals(getString())) {
System.out.println("注册中...");
str = this.save();
} else if ("login".equals(getString())) {
System.out.println("登陆中...");
str = this.login();
} else if ("update".equals(getString())) {
System.out.println("更新中...");
str = this.update();
}
return str;
} private String update() {
System.out.println(uservo.getUsername());
System.out.println(uservo.getCGroup());
System.out.println(uservo.getSex());
service.update(uservo);
string = "ok";
return string;
} public String findAll() {
this.setListvo(service.findAll());
System.out.println(listvo.size());
return "all";
} public String save() {
System.out.println(uservo.getUsername());
System.out.println(uservo.getPassword());
System.out.println(uservo.getCGroup());
System.out.println(uservo.getSex());
service.save(uservo);
string = "ok";
return string;
} public String login() {
System.out.println(uservo.getUsername());
System.out.println(uservo.getPassword());
UserVo vo = service.login(uservo);
if (vo == null) {
string = "shibai";
return string;
}
// 登陆成功
// 向session之中设置内容
System.out.println(vo.getUsername());
session.put("username", vo.getUsername()); System.out.println(session.get("username"));
// 因为jsp页面只能接收这个Action里的成员变量而不能接收局部变量,所以要将vo的值赋给uservo
uservo = vo;
string = "ok";
return string;
}
}
+++++++++++++++++++++++++++++++++++
Servlet.service() for servlet default threw exception
java.lang.NullPointerException
at com.jndi.test.action.Action.login(Action.java:136)
at com.jndi.test.action.Action.execute(Action.java:92)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:399)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:262)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:213)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)