`

Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,Java判断是否为ajax请求

阅读更多

Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,拦截器Ajax请求

java 判断请求是不是ajax请求,Java判断是否为ajax请求

 

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

©Copyright 蕃薯耀 2017年8月10日

http://fanshuyao.iteye.com/

 

一、问题描述:

当访问一个需要登录的页面时,会有过滤器或者拦截器进行过滤拦截,如果用户没有登录,则跳转到登录页面。

当用户已经登录进入系统后,然后长时间没操作,等到session过期后,再点击一个ajax请求操作时,这时再跳转到登录页面就不合适了,因为这是ajax操作,拦截后跳到页面返回的结果js识别不了。

 

二、解决方法:

在过滤器或者拦截器上做识别,针对页面跳转请求和ajax请求分别处理。

页面跳转的不再详说,现在说的是ajax请求。

 

直接贴代码:

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;



@Component("authenticationFilter")
public class AuthenticationFilter implements Filter {

	@Autowired
	SessionContext sessionContext;
	
	private Logger log = LoggerFactory.getLogger(AuthenticationFilter.class); 
	
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {

	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest req = (HttpServletRequest)request;
		HttpServletResponse res = (HttpServletResponse) response;
		
		//判断是否为ajax请求,默认不是
		boolean isAjaxRequest = false;
		if(!StrUtils.isBlank(req.getHeader("x-requested-with")) && req.getHeader("x-requested-with").equals("XMLHttpRequest")){
			isAjaxRequest = true;
		}
		
		SysUser sysUser = sessionContext.getSysUserFromSession(req);
		if (sysUser != null && sysUser.getUserId() != null) {
			chain.doFilter(req, res);
		}else{//Session用户为空,登录过期
			if(isAjaxRequest){// 如果是ajax请求,则不是跳转页面,使用response返回结果
				res.setHeader("noAuthentication", "true");
				ResultWithObject resultWithObject = new ResultWithObject(CC.NEGATIVE_1, CC.RESULT_MESSAGE_TEXT_DEFAULT);
				resultWithObject.setMsg("登录已失效,请刷新页面或重新登录!");
				res.setContentType("application/json;charset=UTF-8");
				PrintWriter writer = res.getWriter();
				writer.write(JasonUtils.Object2String(resultWithObject));
				writer.close();
				res.flushBuffer();
			}else{
				res.sendRedirect("http://xxxx.com/loginUI");
			}
		}
	}

	@Override
	public void destroy() {

	}

}

 

 

 

 

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

©Copyright 蕃薯耀 2017年8月10日

http://fanshuyao.iteye.com/

 

 

1
0
分享到:
评论
1 楼 蕃薯耀 2017-08-10  
Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,拦截器Ajax请求


>>>>>>>>>
蕃薯耀

相关推荐

    过滤器和ajax

    过滤器是Servlet API提供的一种机制,它允许我们在请求被处理之前或之后进行拦截和处理。通过实现javax.servlet.Filter接口,我们可以创建自定义过滤器来执行诸如身份验证、数据转换、日志记录等任务。在描述中提到...

    ajax请求拦截器

    struts2在struts2.xml里配置拦截器可以过滤到指定的url的请求,但是对于ajax的请求确是过滤不了,比如说sesion超时或某些页面有权限控制的,通过ajax的请求时系统会报错最近在解决此类问题时碰上了找了不少资料,...

    ajax实现java文件下载

    4. **FileFilter.java**:这个名字可能表示一个过滤器(Filter),在Java Web中,过滤器用于拦截请求,可以实现诸如权限检查、日志记录等功能。在这个场景下,FileFilter可能用于检查用户是否有权下载特定的文件,...

    chrome扩展插件获取ajax请求记录

    开发者可以通过过滤功能只显示Ajax请求,从而更方便地查看和分析。 此外,Chrome的"Chrome DevTools Protocol"也允许开发者通过编写自定义的Chrome扩展来获取Ajax请求记录。这个协议提供了一套JSON-over-WebSocket ...

    Java后台判断ajax请求及处理过程详解

    为了解决这个问题,我们需要在过滤器或拦截器中区分普通页面请求和AJAX请求,并分别处理。对于AJAX请求,不进行页面重定向,而是通过HTTP响应返回特定的状态或信息,让前端根据这个信息做出相应的处理,如提示用户...

    ajax重写方法搭配后台filter返回status实现ajax请求跳转登录页面

    以Java为例,可以创建一个Servlet Filter: ```java @WebFilter(filterName = "AuthenticationFilter", urlPatterns = "/*") public class AuthenticationFilter implements Filter { @Override public void ...

    拦截器和过滤器的区别

    - **灵活性受限**:相比于拦截器,过滤器的应用场景较为局限,通常只适用于Web环境下的请求处理流程控制。 #### 四、应用场景比较 1. **拦截器**: - **仅针对Action请求**:拦截器主要用于拦截Action请求,在...

    自定义shiro实现识别ajax请求的拒绝返回json,还是普通返回页面

    Shiro 提供了 Filter(过滤器)机制,通过配置可以在 Web 应用的入口处拦截请求,进行权限验证。默认情况下,当用户无权访问某个资源时,Shiro 会重定向到一个预设的错误页面。但如果我们希望对 AJAX 请求做出特殊...

    过滤器或拦截器跨域CORS处理

    "过滤器"和"拦截器"是两种常用的解决策略,本篇将详细解释如何使用它们处理跨域CORS(Cross-Origin Resource Sharing)。 首先,让我们理解什么是CORS。CORS是一种W3C标准,它允许浏览器和服务器通过添加特定的HTTP...

    Ajax与Struts2异步请求数据

    - **Struts2拦截器**:在`web.xml`中配置`Struts2`过滤器,使所有URL都通过Struts2框架处理。这使得我们可以利用Struts2的特性来处理Ajax请求。 - **Struts2 JSON插件**:为了支持Ajax请求,我们需要引入`struts2-...

    spring security ajax请求与html共存

    当一个Ajax请求被发送时,它会被Spring Security的过滤链所拦截,遵循相同的认证和授权流程。为了区分Ajax和非Ajax请求,我们可以使用`@Secured`或`@PreAuthorize`注解,或者自定义访问决策管理器。 3. **配置Ajax...

    struts2 拦截器 权限 ajax jsp

    拦截器就像一个过滤器,位于Action调用之前和之后,可以对请求进行预处理和后处理。在Struts2的配置文件(如struts.xml)中,我们可以定义拦截器链,将多个拦截器串联起来,每个拦截器按照顺序执行。 1. **创建...

    ext异步跳转问题(解决过滤器的问题)

    这个过滤器可能会检查请求头中的特定字段,或者查看请求参数,判断是否需要进行页面跳转。如果发现需要跳转,过滤器可以设置响应状态码或响应头,告知前端进行跳转。 为了在Ext JS应用中处理这种情况,你需要监听`...

    Ajax请求和Filter配合案例解析

    Filter(过滤器)是Java Servlet技术的一部分,主要用于在一个请求到达Servlet之前或响应离开Servlet之后,进行预处理或后处理工作。Filter可以拦截请求,检查请求内容是否符合安全要求或业务规则,并且可以修改请求...

    Shiro和AJAX完美整合

    4. **Shiro 拦截器**:编写 Shiro 拦截器,处理 AJAX 请求,根据请求头信息进行身份验证和授权判断。 5. **错误处理**:当 AJAX 请求被 Shiro 拦截器拒绝时,返回相应的错误信息,前端可以根据这些信息展示错误提示...

    Java进阶-Filter&Listener&Ajax&Json(十五).zip

    接着,服务器端处理请求,返回的响应以Json格式封装数据,最后由Ajax回调函数解析Json并更新页面内容。 总的来说,Filter、Listener、Ajax和Json在Java Web开发中扮演着重要角色,它们协同工作,提升了Web应用的...

    Java+Ajax+struts2的web网页聊天

    Struts2通过配置文件(struts.xml)管理请求映射,提供拦截器(Interceptor)机制,增强了异常处理和数据校验功能。 3. **Ajax(Asynchronous JavaScript and XML)**:在网页聊天中,Ajax技术主要用于实现页面无...

    Jquery $.ajax 请求部署在 Tomcat报HTTP 406上解决方法

    5. **Web.xml配置**:在某些情况下,可能需要在`web.xml`中配置过滤器或拦截器来处理特定的MIME类型。例如,如果你的项目使用了Jackson库进行JSON序列化,确保已经正确配置了Jackson的Servlet上下文初始化参数。 综...

    cors技术解决ajax跨域

    `cors-filter-1.7.1.jar`提供了处理跨域请求的过滤器,而`java-property-utils-1.9.1.jar`可能用于读取和处理配置文件。 **三、配置CORS Filter** `web.xml`是Java Web应用的部署描述符,其中的拦截器配置文件...

    Web12 Filter & AJAX

    在Java Web开发中,Servlet Filter是Java Servlet API提供的一种机制,用于在请求到达目标Servlet之前或之后进行拦截处理。Web12 Filter可以理解为一个特定版本或场景下的过滤器技术。过滤器的主要任务包括数据...

Global site tag (gtag.js) - Google Analytics