`

springmvc拦截器拦截ajax请求

 
阅读更多

使用springmvc 拦截请求时,需要实现 spring中的HandlerInterceptor这个接口。拦截普通的请求,不需要特殊的处理,但是拦截ajax请求时,则需要处理,

 

1、首先写一个js,用与复写ajax请求,如果是ajax请求,给其加一个标志,标注释ajax请求

$(function() {
	overrideJQeuryAjax();
});
function overrideJQeuryAjax() {
	var oriAjax = jQuery.ajax;
	// Override jquery ajax to check if session is valid.
	jQuery.ajax = function(options) {
		if (!options.data) {
			options.data = "";
		}
		if (typeof options.data == "string") {
			options.data = options.data + "&_isAjax=true";
		} else {
			options.data._isAjax = true;
		}

		var oriSuccess = options.success;
		if (typeof oriSuccess == 'function') {
			options.success = function(result) {
				if (!checkSession(result)) {
					return false;
				}
				oriSuccess(result);
			}
		}

		var oriError = options.error;
		if (typeof oriError == 'function') {
			options.error = function(result) {
				if (!checkSession(result)) {
					return false;
				}
				window.location = 'error.do';
			}
		}

		oriAjax(options);
	};
}

function checkSession(result) {
	if (typeof result.checkUserAjaxMsg == 'boolean' && !result.checkUserAjaxMsg) {
		window.location = 'loginUI.do';
		return false;
	}
	return true;
}

 

2、登录时,验证如果没有用户登录,则看看是不是ajax请求,如果是,上一步的js,会做处理,如果不是,则按照普通的请求处理即可

 

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		Tourist tourist = (Tourist) request.getSession().getAttribute(Constance.Session.SESSION_TOURIST);
		if (tourist != null) { //用户不为空,判断是否有权限
			return true;
		}else{
			//拦截处理 ajax 请求
			String isAjax = request.getParameter("_isAjax");
			if (Boolean.parseBoolean(isAjax)) {
				String message = "{\"checkUserAjaxMsg\":false}";
				response.setContentType("application/json;charset=UTF-8");
				response.getOutputStream().write(message.getBytes());
			}else{
				//用户为空,直接返回登录页面
				response.sendRedirect("loginUI.do");
			}
			
			return false;
		}
		
		
	}

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    如何基于ssm框架实现springmvc拦截器

    SpringMVC拦截器在SSM框架中的实现 SpringMVC拦截器是SpringMVC框架中的一种机制,用于在控制层方法执行前、后或视图解析后执行一些特定的业务逻辑处理。拦截器可以用来实现登录拦截、权限控制、日志记录、性能...

    SSM+Ajax+maven+拦截器实现登录功能

    1. **配置拦截器**:在SpringMVC的配置文件中,定义拦截器类并设置拦截的URL路径。 2. **编写拦截器类**:实现`HandlerInterceptor`接口,重写`preHandle()`方法进行预处理,判断用户是否已登录。 3. **Ajax请求**:...

    springmvc实现登录注册,拦截器的使用,ajax的验重练习demo代码演示

    在本项目中,我们主要探讨的是如何利用SpringMVC实现登录注册功能,同时结合Ajax进行数据验证,并且应用拦截器来增强系统安全性和用户体验。这是一个典型的Web应用开发实践,涉及了多个关键技术和概念。 首先,...

    Spring MVC 实现登录注册功能,拦截器应用及AJAX验重练习Demo代码展示

    在本项目中,我们主要探讨的是如何利用SpringMVC实现登录注册功能,同时结合Ajax进行数据验证,并且应用拦截器来增强系统安全性和用户体验。这是一个典型的Web应用开发实践,涉及了多个关键技术和概念。 SpringMVC...

    java springmvc

    8. **拦截器**: 拦截器可以预处理请求并后处理响应,例如认证、日志记录、性能监控等。自定义拦截器需实现`HandlerInterceptor`接口,然后在`web.xml`或Spring配置中注册。 在实际项目中,SpringMVC可以与其他技术...

    springmvc + jquery + ajax + json 异步传递数据

    然后,在SpringMVC的配置文件中,设置视图解析器,以及需要的拦截器和处理器映射。 接下来,创建一个控制器类,使用SpringMVC的注解来定义处理请求的方法。例如,可以使用`@RequestMapping`注解来匹配URL,`@...

    SSM框架有增删改查登陆注册文件上传拦截器

    7. **拦截器**:拦截器是SpringMVC提供的一种AOP(面向切面编程)特性,可以在请求被控制器处理前或处理后执行特定的逻辑。例如,登录检查拦截器可以确保只有已登录的用户才能访问特定的资源,日志拦截器则可以记录...

    SpringMVC + MyBatis + Ajax + 验证码

    1. **SpringMVC配置**:包括DispatcherServlet的配置,以及相关的视图解析器和拦截器设置。 2. **MyBatis配置**:包含数据源、事务管理器、SqlSessionFactory和Mapper接口的配置。 3. **Ajax配置**:在JavaScript中...

    springmvc-ajax:springmvc-ajax 前端后端ajax通信

    2. **创建控制器方法**:在Spring MVC的控制器类中,我们需要定义一个处理Ajax请求的方法。这个方法通常会返回一个`@ResponseBody`注解的类型,因为Ajax通信不需要完整的视图,而是期望得到纯数据。 ```java @...

    SpringMVC经典项目-注解

    可运行的SpringMVC项目,是通过springmvc注解的方式进行的,同时集成了Hibernate,数据库是Oracle,里面也有SpringMVC对文件上传、Ajax请求、自定义拦截器功能的实现,出自csdn上的linuszhu的SpringMVC经典系列。

    SpringMVC是Spring家族的一款专注于解决控制器层问题的框架技术,学习资料第二天

    本篇文章将对 SpringMVC 的数据管理、Ajax 交互、文件上传、下载、验证码、拦截器实现和全局异常处理等方面的知识点进行详细的解释。 一、SpringMVC 数据管理 在 SpringMVC 中,数据管理是通过 Model 机制和 ...

    SpringMVC框架架构介绍

    SpringMVC.xml是核心配置文件,用于配置DispatcherServlet、拦截器、视图解析器等组件。 十二、获取Spring管理的Bean: 通过@Autowired注解或ApplicationContext的getBean()方法,可以在Spring MVC中访问其他Spring...

    SpringMvc学习笔记

    - 处理器映射器找到对应的处理器(Controller)及其可能的拦截器,并返回给`DispatcherServlet`。 - `DispatcherServlet`使用处理器适配器`HandlerAdapter`来调用Controller执行业务逻辑。 - Controller执行完毕...

    Spring MVC 3 结合DWZ 框架编写拦截器判断session是否过期

    在这个方法里,我们检查请求是否来自Ajax,因为对于Ajax请求,我们需要返回JSON响应告知前端用户登录状态。 ```java @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse ...

    SSM框架实现用户登录注册,增删改查,分页查询,拦截器等技术

    主要使用到的技术:Spring+SpringMVC+MyBatis+MySql+BootStrap+Ajax校验用户名密码+拦截器+文件上传+日期转换。使用的jdk是1.8.0+Tomcat7,都很常用,jar包都在压缩包里面,导进项目,配置jdk,Tomcat就能运行。

    SpringMVC.pdf

    在整个开发流程中,还需要特别注意请求参数的绑定和类型转换、请求中文乱码问题的处理、Session和Cookie的使用、Ajax异步请求的处理、文件上传功能的实现、异常处理机制以及拦截器的应用等细节。 对于文件上传,...

    springmvc+ajax+mybatis前后端整合珍藏版

    在这个项目中,SpringMVC会接收前端通过jQuery发起的AJAX请求,然后调用MyBatis定义的SQL查询或更新,处理完数据后返回到前端。前端利用jQuery解析并动态更新HTML,提供给用户实时反馈。这样的架构实现了前后端分离...

    springMVC 教程

    处理ajax请求是构建现代Web应用不可或缺的部分,SpringMVC通过注解和配置支持了ajax请求的处理。本教程将展示如何使用@RequestMapping注解处理ajax请求。 关于SpringMVC配置文件的说明,教程中会给出一些常见的配置...

    SpringMVC+Hibernate+EXT

    EXTJS的组件通过Ajax请求与SpringMVC的RESTful接口进行通信,获取或提交数据。EXTJS的Store负责数据缓存和异步加载,与Hibernate的ORM机制相结合,实现了数据的透明处理。此外,EXTJS的Model可以与后台的Java Bean...

    Springmvc ajax跨域请求处理方法实例详解

    然后,我们需要在 xml 配置文件中配置这个拦截器,例如: ```xml <!--过滤所有请求,处理跨域请求问题 --> ``` 方案二:使用 OncePerRequestFilter 首先,我们需要继承 OncePerRequestFilter 并重写 ...

Global site tag (gtag.js) - Google Analytics