2011-12-27 15:41:42 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet default threw exception
java.lang.NullPointerException
at com.asideal.action.login.BeforeLoginAction.execute(BeforeLoginAction.java:31)
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:404)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229)
action:
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.opensymphony.xwork2.ActionSupport;public class BeforeLoginAction extends ActionSupport{ private static final long serialVersionUID = 1L;

private HttpServletRequest request = null; public HttpServletRequest getRequest() {
return request;
} public void setRequest(HttpServletRequest request) {
this.request = request;
}

@Override
public String execute() throws Exception {


    
ServletContext app =request.getSession().getServletContext();

    System.out.println("app:"+app);
String isSysInit = (String) app.getAttribute("ISBASESYSINIT");
System.out.println("isSysInit:"+isSysInit);


if ("FALSE".equals(isSysInit)) {

System.out.println("-----跳到配置表空间的页面-----");
return "createTableSpace";
}

return "success";
}

   

}

解决方案 »

  1.   

    isSysInit==null
    if (isSysInit!=null && "FALSE".equals(isSysInit)) {
                
                System.out.println("-----跳到配置表空间的页面-----");
                return "createTableSpace";
    }
      

  2.   

    由于你的request为null
    private HttpServletRequest request = null;所以 ServletContext app =request.getSession().getServletContext();抛出了异常在你的execute方法中加上
    HttpServletRequest request = ServletActionContext.getRequest();
      

  3.   

    String isSysInit = (String) app.getAttribute("ISBASESYSINIT");
    有可能app.getAttribute("ISBASESYSINIT")这个为空
    所以转换为String类型报错
      

  4.   

    String isSysInit = (String) app.getAttribute("ISBASESYSINIT");
    app.getAttribute("ISBASESYSINIT")有可能这个为空
    所以转换为String类型时报错
      

  5.   

    String isSysInit = (String) app.getAttribute("ISBASESYSINIT");
    app.getAttribute("ISBASESYSINIT")有可能这个为空
    所以转换为String类型时报错
      

  6.   


    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;
    import org.apache.struts2.util.ServletContextAware;
    import com.opensymphony.xwork2.ActionSupport;
    public abstract class BeforeLoginAction extends ActionSupport implements ServletContextAware{ private static final long serialVersionUID = 1L;

    private ServletContext ServletContext;
    private HttpServletRequest request;
    public ServletContext getServletContext() {
    return ServletContext;
    }
    public void setServletContext(ServletContext servletContext) {
    ServletContext = servletContext;
    }
    public HttpServletRequest getRequest() {
    return request;
    }
    public void setRequest(HttpServletRequest request) {
    this.request = request;
    }
    @Override
    public String execute() throws Exception {


      
        HttpServletRequest request = ServletActionContext.getRequest();
    ServletContext app =request.getSession().getServletContext();


        System.out.println("app:"+app);
    String isSysInit = (String) app.getAttribute("ISBASESYSINIT");
    System.out.println("isSysInit:"+isSysInit);


    if ("FALSE".equals(isSysInit)) {

    return "createTableSpace";
    }

    return "success";
    }

       

    }报这个严重: Servlet.service() for servlet default threw exception
    java.lang.InstantiationException
    at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:30)
    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:87)
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:187)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:800)
    at 
      

  7.   


    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;
    import org.apache.struts2.util.ServletContextAware;
    import com.opensymphony.xwork2.ActionSupport;
    public abstract class BeforeLoginAction extends ActionSupport implements ServletContextAware{ private static final long serialVersionUID = 1L;

    private ServletContext ServletContext;
    private HttpServletRequest request;
    public ServletContext getServletContext() {
    return ServletContext;
    }
    public void setServletContext(ServletContext servletContext) {
    ServletContext = servletContext;
    }
    public HttpServletRequest getRequest() {
    return request;
    }
    public void setRequest(HttpServletRequest request) {
    this.request = request;
    }
    @Override
    public String execute() throws Exception {


      
        HttpServletRequest request = ServletActionContext.getRequest();
    ServletContext app =request.getSession().getServletContext();


        System.out.println("app:"+app);
    String isSysInit = (String) app.getAttribute("ISBASESYSINIT");
    System.out.println("isSysInit:"+isSysInit);


    if ("FALSE".equals(isSysInit)) {

    return "createTableSpace";
    }

    return "success";
    }

       

    }报这个严重: Servlet.service() for servlet default threw exception
    java.lang.InstantiationException
    at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:30)
    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:87)
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:187)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:800)
    at 
      

  8.   

    删掉HttpServletRequest request = ServletActionContext.getRequest();这句将ServletContext app =request.getSession().getServletContext();改为ServletContext app =ServletActionContext.getRequest().getSession().getServletContext();
      

  9.   


    import javax.servlet.ServletContext;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;
    public abstract class BeforeLoginAction extends ActionSupport{// implements ServletContextAware{ private static final long serialVersionUID = 1L;

    // private ServletContext ServletContext;
    //
    //
    // public ServletContext getServletContext() {
    // return ServletContext;
    // }
    // public void setServletContext(ServletContext servletContext) {
    // ServletContext = servletContext;
    // }
    // @Override
    public String execute() throws Exception {

      
    ServletContext app =ServletActionContext.getRequest().getSession().getServletContext();


    String isSysInit = (String) app.getAttribute("ISBASESYSINIT");
    if ("FALSE".equals(isSysInit)) {


    return "createTableSpace";
    }

    return "success";
    }

       

    }严重: Servlet.service() for servlet default threw exception
    java.lang.InstantiationException
    at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:30)
    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.inst
      

  10.   

    public abstract class BeforeLoginAction extends ActionSupport implements ServletContextAware你第二次的代码怎么多了个abstract还实现了ServletContextAware接口...如果实现了ServletContextAware下面就没有必要再
    ServletContext app =request.getSession().getServletContext();自己获取了还有你定义了request属性也没有什么意义要么就实现requestAware,要么就在方法中自己获取,那就没必要在定义那个属性了,你写的东西有点乱...
      

  11.   

    还报这个
    严重: Servlet.service() for servlet default threw exception
    java.lang.InstantiationException
    at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:30)
    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:87)
    at org.springframework.beans.factory.support.ConstructorResolver.autowire
      

  12.   

    public abstract class BeforeLoginAction extends ActionSupport implements ServletContextAware删掉abstract删掉implements ServletContextAware删掉
     private ServletContext ServletContext;
        private HttpServletRequest request;
        public ServletContext getServletContext() {
            return ServletContext;
        }
        public void setServletContext(ServletContext servletContext) {
            ServletContext = servletContext;
        }
        public HttpServletRequest getRequest() {
            return request;
        }
        public void setRequest(HttpServletRequest request) {
            this.request = request;
        }这些是干什么用的你知道么,就乱写一通...
      

  13.   

    public abstract class BeforeLoginAction extends ActionSupport implements ServletContextAware删掉abstract删掉implements ServletContextAware删掉
     private ServletContext ServletContext;
        private HttpServletRequest request;
        public ServletContext getServletContext() {
            return ServletContext;
        }
        public void setServletContext(ServletContext servletContext) {
            ServletContext = servletContext;
        }
        public HttpServletRequest getRequest() {
            return request;
        }
        public void setRequest(HttpServletRequest request) {
            this.request = request;
        }这些是干什么用的你知道么,就乱写一通...
      

  14.   

    为什么BeforeLoginAction类要是abstract呢?
      

  15.   

    import javax.servlet.ServletContext;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;
    public  class BeforeLoginAction extends ActionSupport{ private static final long serialVersionUID = 1L;

    private ServletContext ServletContext;
    public ServletContext getServletContext() {
    return ServletContext;
    }
    public void setServletContext(ServletContext servletContext) {
    ServletContext = servletContext;
    }
    @Override
    public String execute() throws Exception {     
        ServletContext app =ServletActionContext.getServletContext();

        System.out.println("app:"+app);
    String isSysInit = (String) app.getAttribute("ISBASESYSINIT");
    System.out.println("isSysInit:"+isSysInit);

    if ("FALSE".equals(isSysInit)) {

                  return "createTableSpace";
    }

    return "success";
    }

       

    }ok了
      

  16.   

    private ServletContext ServletContext;
        public ServletContext getServletContext() {
            return ServletContext;
        }
        public void setServletContext(ServletContext servletContext) {
            ServletContext = servletContext;
        }这些也是可以删掉的,你之前实现ServletContextAware接口并且写getset方法和下面方法中:ServletContext app =ServletActionContext.getServletContext();是两种获取ServletContext的方式,用一种就可以了,不要混淆,两种方式你都可以试试。如果用实现接口的方式则可以直接
    String isSysInit = (String)ServletContext.getAttribute("ISBASESYSINIT");还有以后记住属性名首字母小写这里的ServletContext是属性本应该写为servletContext...
      

  17.   


    非常感谢你 ,我在把struts1的项目改成struts2的 问题多多啊
      

  18.   

    哈哈 他是myeclipse啊 哈哈非常感谢你 ,我在把struts1的项目改成struts2的 问题多多啊
      

  19.   

    哈哈 他是myeclipse啊 哈哈非常感谢你 ,我在把struts1的项目改成struts2的 问题多多啊
      

  20.   

    只用用这句就行了
        ServletContext app = ServletActionContext.getServletContext();
      

  21.   

    http://blog.sina.com.cn/s/blog_3fe961ae0100wjnf.html
      

  22.   

    String isSysInit = (String) app.getAttribute("ISBASESYSINIT");
    有可能app.getAttribute("ISBASESYSINIT")这个为空
    所以转换为String类型报错
      

  23.   

    吃回复 帖子还结不了 尼玛csdn啊~