yangkaikai 2009-10-22 16:25
浏览 331
已采纳

SSH的项目中有没有判断session是否为空的过滤器之类的东西

SSH的项目中,如何统一判断session是否为空,项目中很多操作都需要登录后才能执行,不想在每个action中都写判断session是否为空的语句,有没有什么拦截器,或者spring的什么配置可以搞定这个的?
[b]问题补充:[/b]
写了个struts2 的拦截器,代码如下:
@Override
public String intercept(ActionInvocation arg0) throws Exception {
Logger logger = Logger.getLogger(this.getClass());
// TODO Auto-generated method stub
Corp corp = (Corp)ActionContext.getContext().getSession().get("corp");
if(corp==null){

        logger.info("strus 拦截器 corp 为空");
        return "none";
    }
    logger.info("struts 拦截器 invoke:返回"+arg0.invoke());      
    return arg0.invoke();   
}

结果出现了个异常如下:

java.lang.IllegalStateException
at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:407)
at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:725)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:76)
at com.cool.filter.MyFilter.doFilter(MyFilter.java:61)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:102)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.cool.filter.MyCharacterEncodingFilter.doFilterInternal(MyCharacterEncodingFilter.java:58)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
[b]问题补充:[/b]
哪个能帮忙搞定,不明白为什么会和struts2的过滤器相关,myfilter是我自己的过滤器,集成struts2的过滤器。试过了只要去掉拦截器就不会出现这个错误。
[b]问题补充:[/b]
蔡华江同学,还是一样的错误哦,这个和session没有什么关系吧,网上都说是调用了两次response,我很费解,如果没有登录返回none的时候没有错误,登录后session不为空了反倒出了这个错误,你再帮我看看吧,我实在搞不定了,我看好你哦。

  • 写回答

6条回答 默认 最新

  • the big fundmental 2009-10-22 18:08
    关注

    public class MyInterceptor implements Interceptor {

    public String intercept(ActionInvocation arg0) throws Exception 
    {
        System.out.println("interceptor");
    
        Map map= arg0.getInvocationContext().getSession();
    
        if(map.get("userName")==null)
        {
            return Action.LOGIN;
        }
        else
        {
            return arg0.invoke();
        }
    }
    

    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?