关于top.location.href在js中跳转还是在servlet中跳转

本文探讨了在Web应用开发中使用JavaScript与Servlet进行页面跳转的区别。通过具体实例展示了session过期判断的两种实现方式:一种是在客户端使用JavaScript进行判断并跳转,另一种是在服务器端使用Servlet进行判断后返回客户端执行跳转。文章强调了多层架构分工的重要性,并推荐在适当情况下使用Servlet进行逻辑处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于在js中跳转还是在servlet中跳转

很多朋友喜欢在js中进行逻辑判断,然后跳转
优势很多:判断方便简捷.比如一个session超时的判断.jsp中js源码如下:

<mce:script type="text/javascript"><!-- //session过期判断 function checkSession() { if(<%=(request.getSession().getAttribute("user") == null) %>){ alert("对不起,登录已超时,请您重新登录!"); top.location.href="/项目名"; } } // --></mce:script>

他们认为使用了struts的actionServlet就得配findforward,top.location.href="/项目名"; 语句就发挥不了作用了,以至于束手无策,只得又回到jsp用js进行判断
其实,在很多情况下,使用actionServlet进行判断跳转,比使用js判断跳转要好.为什么?抛却安全性等一系列原因,就多层架构分工来讲,就应该用actionServlet进行判断跳转.仍然拿那个判断session过期的问题,拿到一个继承了DispatchAction的actionServlet类中判断源码如下

public ActionForward checkSession(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { if(request.getSession().getAttribute("user") == null ) { try { PrintWriter out = response.getWriter(); out.write("<mce:script language=javascript><!-- alert('对不起,登录已超时,请您重新登录!');top.location.href='/项目名'; // --></mce:script>"); out.close(); } catch (IOException e) { e.printStackTrace(); request.setAttribute("Error", e.getMessage()); return mapping.findForward("error");//全局error处理页面 } } return null; }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值