java判断ajax请求_判断Httprequest 是否ajax 请求的方法
在写后台程序时,有时候需要知道客户端发送的是普通的请求,还是ajax 请求,至少在我目前所做的项目中有这样一个用途:如果session 过期的时候,如果是普通请求,跳转到登录页面,但如果是ajax 请求,如果后台session 已经过期了,这时候会返回登陆界面的的html 代码作为ajax 的返回值,这样就很郁闷,不好处理,如果是ajax 请求,理想的方式是返回json给客户端,这样客户端就好处理. 目前我采用了比较笨的一个方法来实现,可以在 请求的参数中加入一个标志来判断.public class SessionIntecepter implements HandlerInterceptor {
private Logger logger = LoggerFactory.getLogger(SessionIntecepter.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws InvalidSessionException, InvalidSessionJsonException {
request.setAttribute("startTime", System.currentTimeMillis());
logger.info("current url: " + request.getRequestURI());
boolean result=false;
boolean ajax = "XMLHttpRequest".equals( request.getHeader("X-Requested-With") );
String ajaxFlag = null == request.getParameter("ajax") ? "false": request.getParameter("ajax") ;
boolean isAjax = ajax || ajaxFlag.equalsIgnoreCase("true");
HttpSession session = request.getSession();
result = null == session.getAttribute("user") ? false : true ;
if (!result){
if (isAjax){
throw new InvalidSessionJsonException("invalide session");
}else{
throw new InvalidSessionException("invalide session");
}
}
return result;
}
......
这里由于我是采用了spring mvc 的方式所以用了intecepter 方式来做,然后抛出异常,交给controller 去处理,controller 根据不同的异常,做不同的处理.
@ExceptionHandler(InvalidSessionException.class )
public ModelAndView sessionExceptionHandle(HttpServletRequest request, Exception ex) {
logger.error("500 Exception - " + ex.getMessage());
ModelAndView mv = new ModelAndView("error");
mv.addObject("message", "invalide session");
return mv;
}
/**
* return json format string for ajax request if error occurs.
* @param request
* @param ex
* @return
*/
@ExceptionHandler(InvalidSessionJsonException.class )
@ResponseBody
public JsonResult sessionJsonExceptionHandle(HttpServletRequest request, Exception ex) {
JsonResult jr =new JsonResult();
jr.setErrorCode(Constants.SESSION_TIMEOUT);
jr.setErrorMessage(ex.getMessage());
return jr;
}
这样就可以做到灵活应用了,另外一般来说,如果采用了 jquery 发送 ajax 请求,应该在http header 中,应该能有如下的语句成立: "XMLHttpRequest".equals( request.getHeader("X-Requested-With") );
java判断ajax请求_判断Httprequest 是否ajax 请求的方法相关推荐
- java 以什么开头_判断字符串以什么开头
Java 判断字符串是否以什么开头 可以使用 startsWith() 判断,例如: String str = "Hello World.";// 判断是否以 Hello 开始Sy ...
- java判断颜色合法_判断颜色是否合法的正则表达式(详解)
判断颜色是否合法的正则表达式(详解) "^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$"; 意思是:以#开头,后面是数字和a-f的字符(大写或小写),这个值是 ...
- java list 为空_判断List集合为空或null
判断List集合是否为空 Java中,判断List集合是否为空与是否为null并不相同 新建List对象,默认是为空,即没有数据,而不是null 如: List list = new ArrayLis ...
- java数据类型指定长度_判断(2分) Java的各种数据类型占用固定长度,与具体的软硬件平台环境无关...
参考答案如下 判断多选(3分) 下列有关我国公平责任的源流以及背景的说法正确的是 各定长度单选(2分) Which word stands for "pessimistic"?( ...
- java判断浏览器类型_判断浏览器类型
一.判断是否为IE 以前判断是否IE浏览器用的是window.navigator.userAgent,跟踪这个信息,发现在开发环境,识别为IE10,但访问服务器则识别为IE11,但IE11的userA ...
- 用java判断三角形类型_判断三角形类型
假期无聊,继续九度OJ刷题,每天几道题,强制编程人啊! 三角形判断的方法: 直角三角形:勾股定理 锐角和钝角三角形:余玄定理 题目描述:给定三角形的三条边,a,b,c.判断该三角形类型. 输入:测试数 ...
- java 判断基本数据类型_判断(1分) Java语言中的数组元素只能是基本数据类型而不能为对象类型。...
参考答案如下 判断I'm going to call ___ one of my former classmates 语言元素Imagin - No Carhops - No Waitresses - ...
- java 第几天_判断这一天是这一年的第几天? 的三种方法! Java
程序分析: 以3月5日为例,应该先把前两个月的加起来,然后再加.上5天即本年的第 几天. 特殊情况:闰年且输入月份大于3时需考虑多加一天. 闰年的条件: year除以400能整除,或者year除以4能 ...
- java获取ie11版本号_判断IE浏览器的版本号
function IEVersion() { var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 var isIE = userAgen ...
最新文章
- web进修之—Hibernate 继承映射(5)
- BLE 包结构及传输速率
- 蚂蚁金服支付平台代码配置
- 部署WSE3.0实战:性能、证书与WSE910错误
- 小甲鱼 OllyDbg 教程系列 (十三) : 把代码和变量注入程序 以及 硬件断点
- typescript索引类型_typescript入门:高级类型
- 使用Material Design的Flutter应用
- 英语总结系列(十九):七月英语Baby成长史
- android p官方铃声,Android 铃声播放
- 运算放大电路_电工CChap03 集成运算放大电路与应用
- matlab竞赛论文模板,美赛数学建模比赛论文模板.doc
- linux基础(二)——linux各文件夹含义和作用
- CMM3学习笔记--常用专业术语
- 选择正规的资质好的期货公司开户
- 怎么取消工作组计算机,windows10系统如何退出workgroup工作组 windows10系统退出workgroup工作组的操作方法...
- (旧)子数涵数·PS——冷色调与LOMO
- “学习金字塔”的真与假
- 【JavaWeb】Request对象详解
- 使用Socket实现类似微信群聊的功能
- C++程序设计课程中的团队建设
热门文章
- CTF-Misc-CRC32碰撞脚本 (二)
- windows编写linux脚本,Windows PowerShell:共享您的脚本 - 在脚本中编写 Cmdlet | Microsoft Docs...
- Python3基础教程:元类详解
- Python3基础教程:可变参数和关键字参数
- python调用其他文件中的函数或者类
- python 查询文本文件的层次
- Python超详细的字符串用法大全
- java怎么解决页面乱码问题_java页面中文乱码的解决办法
- pytorch 1.9.0 backward函数解释以及报错(RuntimeError: grad can be implicitly created only for scalar outputs)
- python pandas中关于DataFrame行,列显示不完全(省略)的解决办法