struts2 extjs json-default 拦截器

昵称都存在了吗? 2012-03-05 04:56:45
我做了一个extjs 和struts2集成的项目,现在遇到一个问题,要写一个拦截器当session超时时返回登录页面。现在自己定义的拦截器拦截到了请求,但是页面没有跳转,哪位大侠看到了能不能帮着解答一下;
UserInterceptor.java

public String intercept(ActionInvocation actionInvocation) throws Exception {
System.out.println("拦截器初始化...");
ActionContext ctx = ActionContext.getContext();
Map session = ctx.getSession(); // sessionStudent
if (session.get("username") == null) {
return "login";
}
String result = actionInvocation.invoke();
return result;
}

struts.xml
<!--继承的是json-default -->
<package name="struts2" namespace="/" extends="json-default">
<interceptors>
<interceptor name="configInterceptor"
class="UserInterceptor">
</interceptor>

<interceptor-stack name="myStack">

<interceptor-ref name="configInterceptor"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>

<interceptor-ref name="myStack"></interceptor-ref>


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

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

哪位大侠帮帮忙啊

...全文
1128 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 3 楼 zhang3093966 的回复:
[Quote=引用 2 楼 lsbest0318 的回复:] if判断好像有问题啊 [/Quote] if判断存在什么问题呢?
楼主你头像动态怎么实现的,,我为何不行??
u010593541 2013-09-03
  • 打赏
  • 举报
回复
楼主。请问你的这个问题解决了么?我现在也遇到了这个问题。能不能把解决方案发到我邮箱里面呢?我邮箱是553702848@qq.com。谢谢楼主了。
josephSC 2012-04-19
  • 打赏
  • 举报
回复
试下
if (session.get("username")) {
String result = actionInvocation.invoke();
return result;
}else{
return "login";
}
licip 2012-04-11
  • 打赏
  • 举报
回复
这个其实跟你继承extends="json-default">
有关,而且你在页面用的都是ajax请求的方式吧。它不会转发了,你可以换一种方式,当ajax取不到session中的信息时,根据返回来的结果,你用js去重定向到登陆页面吧。
zhaominxu 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

你用firebug看action的响应,你就知道action返回的是/login.jsp的源码,而不是跳转到那个页面~

解决办法:其实我也在找办法~

另外,我感觉用不用json-default区别不大啊~你找到办法告诉我一声,wzwahl36@qq.com
THX.
[/Quote]

有没有解决方法?
小为 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

引用 6 楼 的回复:

你用firebug看action的响应,你就知道action返回的是/login.jsp的源码,而不是跳转到那个页面~

解决办法:其实我也在找办法~

另外,我感觉用不用json-default区别不大啊~你找到办法告诉我一声,wzwahl36@qq.com
THX.


有没有解决方法?
[/Quote]

在action中可以用response写一个json,作为ajax的请求相应,但是在拦截器里面,它一定会返回一个页面,如果return null,好像会自动到web项目的主页上;
前面我已经说,ajax请求action之后,拦截器验证失败,返回登录页面,得到的是login.jsp的源码,我先在的做法是自己写一个temp.jsp,里面存的是json值,然后在 ajax的success中解析json值,然后在js中做跳转~
jieyu160 2012-03-30
  • 打赏
  • 举报
回复
if (session.get("username").equals("")) {
return "login";
}
小为 2012-03-23
  • 打赏
  • 举报
回复
你用firebug看action的响应,你就知道action返回的是/login.jsp的源码,而不是跳转到那个页面~

解决办法:其实我也在找办法~

另外,我感觉用不用json-default区别不大啊~你找到办法告诉我一声,wzwahl36@qq.com
THX.
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kouzigege 的回复:]

if处你这样写试试:
if (session.get("username").isEmpty()) {
return "login";
}
[/Quote]

这种if的判断方式和我的判断方式并没差别呀。而且debug模式我也看到看到我们return出去了
立坤 2012-03-09
  • 打赏
  • 举报
回复
if处你这样写试试:
if (session.get("username").isEmpty()) {
return "login";
}
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lsbest0318 的回复:]

if判断好像有问题啊
[/Quote]


if判断存在什么问题呢?
我爱荤菜 2012-03-05
  • 打赏
  • 举报
回复
if判断好像有问题啊
  • 打赏
  • 举报
回复
在线等,帖子不能沉啊

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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