spring mvc 过滤器关于AJAX的过滤验证

    xiaoxiao2022-06-28  34

    1.首先创建一个jquery-x.js文件,将下面代码内容添加进去:

    (function($) { // 备份jquery的ajax方法 var _ajax = $.ajax; // 重写jquery的ajax方法 $.ajax = function(opt) { // 备份opt中error和success方法 var fn = { error : function(XMLHttpRequest, textStatus, errorThrown) { }, success : function(data, textStatus) { } }; if (opt.error) { fn.error = opt.error; } if (opt.success) { fn.success = opt.success; } // 扩展增强处理 var _opt = $.extend(opt, { error : function(XMLHttpRequest, textStatus, errorThrown) { // 错误方法增强处理 fn.error(XMLHttpRequest, textStatus, errorThrown); }, success : function(data, textStatus) { // 成功回调方法增强处理 if (!data.success && data.isLoginRequired) { showLoginWindow(); } else { fn.success(data, textStatus); } } }); _ajax(_opt); }; })(jQuery); 2.在jsp页面导入该JS文件

    <script type="text/javascript" src="<%=basePath%>view/js/jquery-x.js"></script> 3.在web项目中创建类SecurityInterceptor.java:

    package com.pam.interceptor; import java.io.PrintWriter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import com.pam.entity.Manager; public class SecurityInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println(""+request.getRequestURI()); // String path = request.getRequestURI(); HttpSession session = request.getSession(); Manager manager = (Manager) session.getAttribute(session.getId()); //如果是ajax请求 boolean isAjax = "XMLHttpRequest".equals(request.getHeader("X-Requested-With")); if (null == manager || null == session) { //如果是ajax请求 if (isAjax) { String jsonObject = "{\"success\":false,\"isLoginRequired\":true}"; String contentType = "application/json"; response.setContentType(contentType); response.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); out.print(jsonObject); out.flush(); out.close(); return false; }else{ response.sendRedirect(request.getContextPath()+"/manager/toLogin"); return false; } }else{ return true; } } } 4.再在刚刚导入 jquery-x.js文件的jsp中添加

    function showLoginWindow() { alert("网页已过期,请重新登录"); //可根据需要定制 window.location="<%=basePath%>manager/toLogin"; } 这样就算是AJAX请求也会拦截到,然后根据需求做操作。代码质量不好莫怪。

    转载请注明原文地址: https://ju.6miu.com/read-1124533.html

    最新回复(0)