spring方法拦截实例

使用到spring方法拦截器 MethodInterceptor实现权限控制,MethodInterceptor可以使用通配符,并且是基于注解的。

简单例子代码如下:

1、定义需要拦截的类

Java代码  

  1. public class LoginAction{
  2. //没有权限限制
  3. @RequestMapping(value = "/login")
  4. public void login(HttpServletRequest req, HttpServletResponse res) {
  5. //登录功能.
  6. }
  7. //需要登录完成后才可访问
  8. @LoginMethod
  9. @RequestMapping(value = "/userList")
  10. public void userList(HttpServletRequest req, HttpServletResponse res) {
  11. //获取用户列表
  12. }
  13. }

注意上面的@LoginMethod是我自定义的注解

2、定义LoginMethod注解

Java代码  

  1. @Target(ElementType.METHOD)   //方法
  2. @Retention(RetentionPolicy.RUNTIME)    // 注解会在class字节码文件中存在,在运行时可以通过反射获取到
  3. public @interface LoginMethod {
  4. }

3、定义MethodInterceptor拦截器

Java代码  

  1. public class SystemMethodInterceptor implements MethodInterceptor {
  2. @Override
  3. public Object invoke(MethodInvocation methodInvocation) throws Throwable {
  4. Method method = methodInvocation.getMethod();
  5. if(method.isAnnotationPresent(LoginMethod.class)){//加了@LoginMethod注解,被拦截
  6. User user = sessionUtil.getCurrUser();
  7. if(user == null){//未登录
  8. //proceed方法不调用,方法被拦截
  9. return null;
  10. }else{
  11. return methodInvocation.proceed();//该方法不调用,则被拦截的方法不会被执行
  12. }
  13. }else{
  14. return methodInvocation.proceed();
  15. }
  16. }
  17. }

4、配置文

Xml代码  

  1. <bean id="systemMethodInterceptor" class="com.tzz.interceptor.SystemMethodInterceptor" >
  2. </bean>
  3. <aop:config>
  4. <!--切入点-->
  5. <aop:pointcut id="methodPoint" expression="execution(* com.tzz.controllor.web.*.*(..)) "/><!--在该切入点使用自定义拦截器-->
  6. <aop:advisor pointcut-ref="methodPoint" advice-ref="systemMethodInterceptor"/>
  7. </aop:config>
时间: 2024-10-23 03:04:48

spring方法拦截实例的相关文章

Spring自定义一个拦截器类SomeInterceptor,实现HandlerInterceptor接口及其方法的实例

利用Spring的拦截器可以在处理器Controller方法执行前和后增加逻辑代码,了解拦截器中preHandle.postHandle和afterCompletion方法执行时机. 自定义一个拦截器类SomeInterceptor,实现HandlerInterceptor接口及其方法. 然后在spring-mvc.xml中添加拦截器配置,来指定拦截哪些请求. 步骤一: 创建SomeInterceptor拦截器组件 新建一个com.souvc.interceptor包,在该包中新建一个SomeI

Spring使用教程(二)配置bean:静态工厂方法和实例工厂方法

public class Car { private String brand; private double price; public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public double getPrice() { return price; } public void setPrice(double price) { this.

Springmvc+Spring+Hibernate搭建方法及实例

Springmvc+Spring+Hibernate搭建方法及实例

spring MethodInterceptor方法拦截

引用别的的:https://blog.csdn.net/u010739551/article/details/47754731 最近项目里加上了用户权限,有些操作需要登录,有些操作不需要,之前做项目做权限,喜欢使用过滤器,但在此使用过滤器比较死板,如果用的话,就必须在配置文件里加上所有方法,而且 不好使用通配符.所以想了想,之前在人人用过的一种比较简单灵活的权限判断,是采用Spring 的 methhodInterceptor拦截器完成的,并且是基于注解的 @LoginRequired    @

使用方法拦截器MethodInterceptor和AOP统一处理log

对每个接口的请求记录log的方法有很多种,比如用filter.mvc interceptor.method interceptor等.如果需要记录请求消息的payload,前两种不适用.下面介绍第三种的实现方法. 第一步:引入包依赖 <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></span><pre name=&

spring MVC拦截器01

spring MVC拦截 作用:身份校验,权限检查,防止非法訪问. 场景:一个bbs系统,用户没有登录就无法发帖或者删除评论; 一个博客系统,没有登录就无法发表博文,无法添加分类,无法删除博文. spring MVC 拦截实现分为2步 (1)编写拦截器类,必须继承org.springframework.web.servlet.HandlerInterceptor 核心方法: public boolean preHandle(HttpServletRequest request, HttpServ

Spring+EhCache缓存实例(详细讲解+源码下载)(转)

一.ehcahe的介绍 EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider.Ehcache是一种广泛使用的开源Java分布式缓存.主要面向通用缓存,Java EE和轻量级容器.它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点. 优点: 1. 快速 2. 简单 3. 多种缓存策略 4. 缓存数据有两级:内存和磁盘,因此无需担心容量问题 

Spring中AOP实例详解

Spring中AOP实例详解 需要增强的服务 假如有以下service,他的功能很简单,打印输入的参数并返回参数. @Service public class SimpleService { public String getName(String name) { System.out.println(get name is: + name); return name; } } 定义切面和切点 @Component @Aspect public class L ogAspect { // 定义切

spring完整demo实例

我前几篇分散的说了spring mvc,这一篇我完整的说一下,仅供参考,如果大家要用, 只需要改下路径就行,可能比较长,大家耐心看哦.我会在最后把工程连接贴上. 先贴hibernate的连接配置:hibernate.properties dataSource.url=jdbc\:mysql\://127.0.0.1\:3306/dorm dataSource.password=123456 dataSource.username=root dataSource.driverClassName=c