一个诡异问题,拦截器不兼容IE6、IE7,其他浏览器都兼容?

romanitc 2011-07-02 03:41:56
竟然有这样的问题发生我的身上,搞一天了还没调试出来。

我写一个登录拦截器来拦截所以有action在没登录情况下访问action(除登录action外)都跳到登录页。诡异的问题在:登录拦截里取session值时,IE6、IE7、TT取到的值是null;IE5、火狐、谷歌、Opera、Safari都可以取到session值!所以我写的拦截器在IE6、IE7、TT浏览器都跳到登录页,其他浏览器都正常?

我在网上找了很久都没有这方面的资料,那应该证明你们都没有遇到过这样的问题。这次真的完蛋了!第一次遇到这样的问题!我把代码贴出来!

我只知道两种取session值方法(在拦截器类中)
方法1:ActionContext ctx = invocation.getInvocationContext();
Map session = ctx.getSession();
String adminName = (String) session.get("curAdminName");

方法2: String adminName = (String) ServletActionContext.getRequest().getSession().getAttribute("curAdminName");


登录拦截器

package com.tfl.shop_manage.common;

import java.util.Map;

import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import com.tfl.shop_manage.action.AdminLoginAction;


public class AdminActionInterceptor extends AbstractInterceptor {

private Logger logger = Logger.getLogger("AdminActionInterceptor");

@Override
public String intercept(ActionInvocation invocation) throws Exception {

ActionContext ctx = invocation.getInvocationContext();

Map session = ctx.getSession();

String adminName = (String) session.get("curAdminName");

// String adminName = (String) ServletActionContext.getRequest().getSession().getAttribute("curAdminName1");

System.out.println("loginName="+adminName);
System.out.println("LoginAction.calss="+AdminLoginAction.class);
System.out.println("invocation.getAction().getClass="+invocation.getAction().getClass());

if(null != adminName){

logger.info("if");

return invocation.invoke();

}else{

//登录页 session中没值
if(AdminLoginAction.class==invocation.getAction().getClass()){

return invocation.invoke();
}
logger.info("else");
logger.info("已拦截器");

return "login"; //在struts.xml里定义一个 <global-results>
}
}

}



struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>

<!-- 拦截没登录的action -->
<package name="baseAction" extends="struts-default">
<interceptors>
<interceptor name="adminActionInter" class="com.tfl.shop_manage.common.AdminActionInterceptor"></interceptor>

<interceptor-stack name="adminActionInterStack">
<interceptor-ref name="adminActionInter"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>

</interceptors>

<default-interceptor-ref name="adminActionInterStack"></default-interceptor-ref>

<global-results>
<result name="login">/res/login.jsp</result>
</global-results>
</package>


<!-- 管理员登录 tf_admin -->
<package name="login" extends="baseAction" namespace="/">
<action name="login_*" class="adminLoginAction" method="{1}">
<result name="loginSuccess">/index.jsp</result>
<result name="loginFail">/res/login.jsp</result>
<result name="exitSuccess">/res/login.jsp</result>
</action>
</package>

<!-- 文章管理 tf_article -->
<package name="artManage" extends="baseAction" namespace="/">
<action name="artManage_*" class="articleManageAction" method="{1}">
<result name="artListSuccess">/res/article/articleList.jsp</result>
<result name="artSearchSuccess">/res/article/articleSearch.jsp</result>
<result name="artViewSuccess">/res/article/articleView.jsp</result>
<result name="showArtAddSuccess">/res/article/articleAdd.jsp</result>
<result name="artAddSuccess">/res/article/artAddSuccess.jsp</result>
<result name="artUpdateView">/res/article/articleUpdateView.jsp</result>
<result name="artUpdateSuccess">/res/article/artAddSuccess.jsp</result>
<result name="artDeleteSuccess">/res/article/artDelSuccess.jsp</result>
</action>
</package>
</struts>


...全文
256 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
romanitc 2011-07-09
  • 打赏
  • 举报
回复
还没有找到解决方法!结帖了!
ljy66 2011-07-08
  • 打赏
  • 举报
回复
解决没有啊?
如果解决了 不妨说下解决方式嘛。大家了解下嘛。
xiaomaha 2011-07-08
  • 打赏
  • 举报
回复
我没解决,不知道如何下手解决。。。
romanitc 2011-07-08
  • 打赏
  • 举报
回复
最后顶一下,下午结贴!
Spring源码解析 2011-07-07
  • 打赏
  • 举报
回复
高人们。。。
romanitc 2011-07-07
  • 打赏
  • 举报
回复
去掉openSessionInView试过了,还是有问题,谢谢![Quote=引用 5 楼 xiajunsongfang 的回复:]
你把这个过滤器openSessionInView去掉试试。
[/Quote]
romanitc 2011-07-07
  • 打赏
  • 举报
回复
我也觉得很大可能是缓存问题,请问你是怎么解决的?[Quote=引用 15 楼 xiaomaha 的回复:]
我也遇到过。这个和浏览器缓存有关系。。。。。。
[/Quote]
scare111 2011-07-07
  • 打赏
  • 举报
回复
IE6、IE7、TT取到的值是null
你看看你这几个浏览器。。是不是把COOKIES给禁用了。。。
romanitc 2011-07-07
  • 打赏
  • 举报
回复
应该不是这样问题,我以前也是用通配符,但写这个项目时就出问题了,郁闷呀![Quote=引用 12 楼 peng_hao1988 的回复:]
<package name="artManage" extends="baseAction" namespace="/">
<action name="artManage_*" class="articleManageAction" method="{1}">
<result name="artListSuccess">/res/article/articleList.jsp</res……
[/Quote]
romanitc 2011-07-07
  • 打赏
  • 举报
回复
不是机器问题,我在其他同事和服务器上都试过了,还是有问题![Quote=引用 11 楼 xianaofei 的回复:]
你让同事登录你的应用看看 可能是你机器问题啊
[/Quote]
romanitc 2011-07-07
  • 打赏
  • 举报
回复
救命呀,大神们,大牛们!
xiajunsongfan 2011-07-06
  • 打赏
  • 举报
回复
你把这个过滤器openSessionInView去掉试试。
stevenzxl 2011-07-06
  • 打赏
  • 举报
回复
没遇到过,看了你的代码,感觉没啥问题。
我以前遇到过在ie好用,换别的浏览器不好用的问题。
有可能是设置的问题~
romanitc 2011-07-06
  • 打赏
  • 举报
回复
大牛们呢?
daiwen814208298 2011-07-06
  • 打赏
  • 举报
回复
学习学习
cuproom 2011-07-06
  • 打赏
  • 举报
回复
没遇到过,关注
nourewang 2011-07-06
  • 打赏
  • 举报
回复
lz看这里.
http://www.java3z.com/cwbwebhome/article/article2/2933.html
xiaomaha 2011-07-06
  • 打赏
  • 举报
回复
我也遇到过。这个和浏览器缓存有关系。。。。。。
beowulf2005 2011-07-06
  • 打赏
  • 举报
回复
Cookie 开了没?
liuyuhua0066 2011-07-06
  • 打赏
  • 举报
回复
关注一下。
加载更多回复(9)

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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