使用struts2处理普通http请求和ajax请求的对比
来源:互联网 发布:爱知日语培训班多少钱 编辑:程序博客网 时间:2024/05/17 23:11
</pre>最近在尝试写一个简单的博客,用到了struts2框架。自己写了一个登录拦截器,继承自struts2的MethodFilterInterceptor,用来限制当前用户的一些操作,在用户进行写操作时(评论、写博客等),先让用户登录,即跳转到登录界面。之所以继承这个拦截器,因为这个拦截器可以灵活配置一些不需要拦截的方法(浏览博客等)。之前普通的action被登录拦截器拦截时,如果未登录,直接返回 “login” 字符串,在struts2的配置文件中为这个字符串配置了对应的登录页面,然后即可自动跳转到登录界面。可是,我在程序中有些操作使用了 ajax 方式提交请求(收藏博客、删除收藏、关注、取消关注等),于是在拦截器中检测到用户未登录时,如果只返回简单的“login”字符串,那么程序不会自动跳转到登录页面,因为ajax是异步更新网页,而不是传统的刷新整个网页。ajax对返回的内容都解析为普通的字符串,因此无法自动跳转登录界面。正确的做法是在拦截器中检测,如果发现是ajax请求,就进行单独处理。以下代码即用来检测是否是ajax请求:</p><p><span style="font-size:18px;"></span><pre name="code" class="java">request.getHeader("X-Requested-With") != null && request.getHeader("X-Requested-With").equalsIgnoreCase("XMLHttpRequest")如果是ajax请求,而且用户未登录,就在拦截器中使用response对象向前端页面写一个未登录的标识(“isNotLogin”),然后在页面上获取这个返回结果,直接使用js的window.location="";重定向到登录页面即可。代码如下:
//如果是ajax请求if(request.getHeader("X-Requested-With") != null <span style="white-space:pre"></span>&& request.getHeader("X-Requested-With").equalsIgnoreCase("XMLHttpRequest")){PrintWriter out = response.getWriter();out.print("isNotLogin");//返回一个标识给前端out.flush();out.close();return null;}
页面上的js代码为:
//使用jQuery.ajaxSetup() 方法设置全局 AJAX 默认选项,捕获刚刚在拦截器里传递的值$.ajaxSetup({ cache: false, //关闭ajax缓存 contentType:"application/x-www-form-urlencoded;charset=utf-8", //complete:表示完成请求后触发。 //即在success或error触发后触发 //XHR:XMLHttpReques complete:function(XHR,textStatus){ var resText = XHR.responseText; //isNotLogin标识用户当前未登录,需要将页面转到登录页面 if(resText=='isNotLogin'){ window.location="LoginAction_toLoginPage"; } } });
这样就可以正确的处理ajax请求了。
0 0
- 使用struts2处理普通http请求和ajax请求的对比
- Struts2 拦截器处理普通Http请求和Ajax请求时拦截配置
- Struts2 拦截器处理普通Http请求和Ajax请求时拦截配置
- Struts2 拦截器处理普通Http请求和Ajax请求时拦截配置
- AJAX请求和普通HTTP请求区别
- Struts2 拦截器处理同步(普通Http)请求和异步(post,ajax)请求时拦截配置
- 基于浏览器的http普通请求与ajax请求
- 基于浏览器的http普通请求与ajax请求
- Ext下,ajax请求和普通http请求,session超时转到登录页面的解决方案
- Ext下,ajax请求和普通http请求,session超时转到登录页面的解决方案
- ajax请求,和普通的http url请求,有什么不一样?
- struts2处理ajax请求
- Struts2 处理ajax请求
- XMLHTTPRequest/Ajax请求 和普通请求的区别
- 得到请求的类型 ajax和普通请求
- ajax和普通请求使用spring mvc在controller中的异常统一处理
- 使用HttpClient写普通Http请求,GET和POST方法
- android json实现网络请求 和普通的http请求 还有https请求安全认证
- 智能指针
- 类似网购电影票的简易GridView选择器
- 利用OC的消息转发机制实现多重代理
- 数据存储之---SharedPreferences
- android.intent.action.MAIN 与 android.intent.category.LAUNCHER 的验证理解
- 使用struts2处理普通http请求和ajax请求的对比
- Spring读取properties文件内容
- python numpy教程
- uva401 Palindromes 字符串,模拟
- cocos2d-js笔记
- 操作系统与网络实现 之六
- 谈面向对象之强依赖和弱依赖
- poj--2001--Shortest Prefixes(字典树)
- 各大团队的初始化CSS代码