sessioin过期的话PageContext pageContext = (PageContext) request.getSession().getAttribute("pageContext")取出的东西应该是空,或者在这就已经NullPointerException,但在这句话的后面我却可以打印出pageContext。
    我的应用结构前端是JSP页面,JSP页面的请求转发给Servlet,然后再由Servlet查找相应的JAVA类,最后在JAVA类中处理所有的事情。其实最终我是想在JAVA类中使用jspSmartUpload上传文件,可是当我调用smartUpload.initialize(pageContext)时,就会出错,我反编译了SmartUpload,发现问题就出在的JAVA类中获得的pageContext不能调用getServletContext()。
    我在想是不是我在JSP中session.setAttribute("pageContext",pageContext)放置的地方不对,放在网页中的那部分才合适?

解决方案 »

  1.   

    session.setAttribute("pageContext",pageContext)
    你这句话的pageContext对象是怎么生成的?在jsp页面,试试这样写
    session.setAttribute("pageContext",config)
      

  2.   

    我想你希望用到的应该是ServletConfig对象把,
    在servlet里头并没有pageContext这个对象
      

  3.   

    我看了jspsmartupload的JSP例子,它的pageContext并没有任何生成语句啊?
      

  4.   

    pageContext是jsp的隐藏对象,不需要你去生成
    我的意思是servlet当中并没有关于这个类的定义
      

  5.   

    空指针。。
    import javax.servlet.*了吗。
      

  6.   

    谢谢ajiao,你的一句 
    “在jsp页面,试试这样写session.setAttribute("pageContext",config)”
    救了我,我想了一天,也试过两种不同的
    SmartUpload.initialize(PageContext pageContext)和
    SmartUpload.initialize(ServletConfig config, HttpServletRequest request, HttpServletResponse response),
    用第一种方法时我是在JSP中取pageContext,第二种方法时是在Servlet中取ServletConfig,但因为我要在Servlet的init中进行其它的特殊处理,所以第二种方法是肯定行不通,但第一种传过去后却怎么也取不通不过SmartUpload中的pageContext.getServletContext()。殊不知其实JSP也可以存入config对象,因为最终它也会编译成Servlet执行的嘛,servlet有的东西他也应该有啊。
        我的文件已经上传成功了, 并且不是像jspSmart上的例子是在JSP上或servlet中上传,而是在servlet调用的类中上传的。