action重定向到frameset页面指定target属性

后台重定向传递frameset页面target属性

一、问题描述

使用struts2的项目,在frameset前端页面的顶部窗口有个注销登录的链接,点击该链接,后台将清除session保存的用户信息,并且将页面重定向到登录页面。

二、尝试的无效方法

2.1 struts2的result标签

使用struts2的result标签,登录页面始终只出现在页面顶部,其他部位不变

<!--无效代码-->
<result name="logout_success" type="dispatcher">/login.jsp</result>

或者

<!--无效代码-->
<result name="redirect" type="dispatcher">/login.jsp</result>

2.2 action中直接重定向

在action中获取到Servlet的response对象,使用sendRedirect()方法,问题仍然没办法解决。

//无效代码
ServletActionContext.getResponse().sendRedirect("login.jsp");

三、发现原因

frameset的target属性是用于指定页面跳转的方式,比如:

属性值描述
_blank默认,在新窗口中打开被链接文档
_self在相同的框架中打开被链接文档
_parent在父框架集中打开被链接文档
_top在整个窗口中打开被链接文档
framename在指定的框架中打开被链接文档

前面的方法都无效,问题在于:
target是客户端的属性,因此只能在客户端指定,和服务器端没有任何关系,所以servlet和struts2都没法直接指定target属性。

四、解决办法

如果一定要后台控制窗口的显示方式,只能通过间接的方式。通过使用servlet的response方法想页面直接回写javascript代码,回写完成后,页面会立即执行js代码。js是客户端的语言,因此可以控制target值。

//有效的解决方案
HttpServletResponse response = ServletActionContext.getResponse();
response.getWriter().write("<script>window.open('login.jsp','_top')</script>");
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值