问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

spring mvc拦截器与shiro拦截器有什么区别

发布网友 发布时间:2022-04-23 07:01

我来回答

4个回答

懂视网 时间:2022-05-01 07:27

技术分享

 

1. pom.xml 配置

1.1. 版本属性信息配置

技术分享
 1 <properties>
 2  <!-- base setting -->
 3  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 4  <project.build.locales>zh_CN</project.build.locales>
 5  <project.build.jdk>1.8</project.build.jdk>
 6 
 7  <!-- plugin setting -->
 8  <mybatis.generator.generatorConfig.xml>${basedir}/src/test/java/generatorConfig.xml</mybatis.generator.generatorConfig.xml>
 9  <mybatis.generator.generatorConfig.properties>file:///${basedir}/src/test/java/generatorConfig.properties</mybatis.generator.generatorConfig.properties>
10 
11  <!-- plugin versions -->
12  <plugin.mybatis.generator>1.3.1</plugin.mybatis.generator>
13  <plugin.maven-compiler>3.1</plugin.maven-compiler>
14  <plugin.maven-surefire>2.18.1</plugin.maven-surefire>
15  <skipTests>true</skipTests>
16 
17  <!-- lib versions -->
18  <junit.version>4.11</junit.version>
19  <spring.version>4.0.2.RELEASE</spring.version>
20  <mybatis.version>3.2.2</mybatis.version>
21  <mybatis.spring.version>1.2.2</mybatis.spring.version>
22  <mysql.connector.version>5.1.6</mysql.connector.version>
23  <slf4j.version>1.6.6</slf4j.version>
24  <log4j.version>1.2.12</log4j.version>
25  <httpclient.version>4.1.2</httpclient.version>
26  <jackson.version>1.9.13</jackson.version>
27  <druid.version>1.0.5</druid.version>
28  <jstl.version>1.2</jstl.version>
29  <google.collections.version>1.0</google.collections.version>
30  <cglib.version>3.1</cglib.version>
31  <shiro.version>1.2.3</shiro.version>
32  <commons.fileupload.version>1.3.1</commons.fileupload.version>
33  <commons.codec.version>1.9</commons.codec.version>
34  <commons.net.version>3.3</commons.net.version>
35  <aspectj.version>1.6.12</aspectj.version>
36  <netty.version>4.0.18.Final</netty.version>
37  <hibernate.validator.version>5.1.1.Final</hibernate.validator.version>
38 </properties>
View Code

  1.2. 依赖库信息配置

 技术分享View Code

  1.3. 编译及tomcat部署配置

 技术分享View Code

  

2. spring-mvc.xml 核心配置

技术分享
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3  xmlns:aop="http://www.springframework.org/schema/aop"
 4  xmlns:context="http://www.springframework.org/schema/context"
 5  xmlns:mvc="http://www.springframework.org/schema/mvc"
 6  xmlns:tx="http://www.springframework.org/schema/tx"
 7  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 8  xmlns:p="http://www.springframework.org/schema/p"
 9  xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
10  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
11  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 
12  http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd 
13  http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
14 
15 <!-- 扫描controller(controller层注入) -->
16 <context:component-scan base-package="com.hunter.shiro.web.controller"/>
17 
18 <!-- 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是spring MVC为@Controllers分发请求所必须的 -->
19 <!-- 指定自己定义的validator -->
20 <mvc:annotation-driven validator="validator"/>
21 
22 <!-- 以下 validator ConversionService 在使用 mvc:annotation-driven 会 自动注册 -->
23 <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
24  <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
25  <!-- 如果不加默认到 使用classpath下的 ValidationMessages.properties -->
26  <property name="validationMessageSource" ref="messageSource"/>
27 </bean>
28 
29 <!-- 国际化的消息资源文件(本系统中主要用于显示/错误消息定制) -->
30 <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
31  <property name="basenames">
32  <list>
33   <!-- 在web环境中一定要定位到classpath 否则默认到当前web应用下找 -->
34   <value>classpath:messages</value>
35   <value>classpath:org/hibernate/validator/ValidationMessages</value>
36  </list>
37  </property>
38  <property name="useCodeAsDefaultMessage" value="false"/>
39  <property name="defaultEncoding" value="UTF-8"/>
40  <property name="cacheSeconds" value="60"/>
41 </bean>
42 
43 <mvc:interceptors>
44  <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"/>
45 </mvc:interceptors>
46 
47 <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
48  <property name="defaultLocale" value="zh_CN"/>
49 </bean>
50 
51 <!-- 支持返回json(避免IE在ajax请求时,返回json出现下载 ) -->
52 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
53  <property name="messageConverters">
54  <list>
55   <ref bean="mappingJacksonHttpMessageConverter"/>
56  </list>
57  </property>
58 </bean>
59 <bean id="mappingJacksonHttpMessageConverter"
60   class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
61  <property name="supportedMediaTypes">
62  <list>
63   <value>text/plain;charset=UTF-8</value>
64   <value>application/json;charset=UTF-8</value>
65  </list>
66  </property>
67 </bean>
68 <!-- 支持返回json -->
69 
70 <!-- 对模型视图添加前后缀 -->
71 <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
72   p:prefix="/WEB-INF/views/" p:suffix=".jsp"/>
73 
74 <!-- 启用shrio授权注解拦截方式 -->
75 <aop:config proxy-target-class="true"></aop:config>
76 <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
77  <property name="securityManager" ref="securityManager"/>
78 </bean>
79 </beans>
View Code

 

3. server.properties 配置

技术分享
##JDBC Global Setting
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/hunter_shiro?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=hunter

##DataSource Global Setting

#配置初始化大小、最小、最大
ds.initialSize=1
ds.minIdle=1
ds.maxActive=20

#配置获取连接等待超时的时间 
ds.maxWait=60000

#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
ds.timeBetweenEvictionRunsMillis=60000

#配置一个连接在池中最小生存的时间,单位是毫秒
ds.minEvictableIdleTimeMillis=300000
View Code

 

4. spring-mybatis.xml 配置

技术分享
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"
 3  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
 4  xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
 5  xmlns:util="http://www.springframework.org/schema/util" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
 6  xmlns:cache="http://www.springframework.org/schema/cache"
 7  xsi:schemaLocation="
 8  http://www.springframework.org/schema/context
 9  http://www.springframework.org/schema/context/spring-context.xsd
 10  http://www.springframework.org/schema/beans
 11  http://www.springframework.org/schema/beans/spring-beans.xsd
 12  http://www.springframework.org/schema/tx
 13  http://www.springframework.org/schema/tx/spring-tx.xsd
 14  http://www.springframework.org/schema/jdbc
 15  http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
 16  http://www.springframework.org/schema/cache
 17  http://www.springframework.org/schema/cache/spring-cache.xsd
 18  http://www.springframework.org/schema/aop
 19  http://www.springframework.org/schema/aop/spring-aop.xsd
 20  http://www.springframework.org/schema/util
 21  http://www.springframework.org/schema/util/spring-util.xsd">
 22 
 23 <!-- 自动扫描shiro.web包 ,将带有注解的类 纳入spring容器管理 -->
 24 <context:component-scan base-package="com.hunter.shiro.web"></context:component-scan>
 25 
 26 <!-- 引入配置文件 -->
 27 <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
 28  <property name="locations">
 29  <list>
 30   <value>classpath*:server.properties</value>
 31  </list>
 32  </property>
 33 </bean>
 34 
 35 <!-- dataSource 配置 -->
 36 <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
 37  <!-- 基本属性 url、user、password -->
 38  <property name="url" value="${jdbc.url}"/>
 39  <property name="username" value="${jdbc.username}"/>
 40  <property name="password" value="${jdbc.password}"/>
 41 
 42  <!-- 配置初始化大小、最小、最大 -->
 43  <property name="initialSize" value="${ds.initialSize}"/>
 44  <property name="minIdle" value="${ds.minIdle}"/>
 45  <property name="maxActive" value="${ds.maxActive}"/>
 46 
 47  <!-- 配置获取连接等待超时的时间 -->
 48  <property name="maxWait" value="${ds.maxWait}"/>
 49 
 50  <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
 51  <property name="timeBetweenEvictionRunsMillis" value="${ds.timeBetweenEvictionRunsMillis}"/>
 52 
 53  <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
 54  <property name="minEvictableIdleTimeMillis" value="${ds.minEvictableIdleTimeMillis}"/>
 55 
 56  <property name="validationQuery" value="SELECT ‘x‘"/>
 57  <property name="testWhileIdle" value="true"/>
 58  <property name="testOnBorrow" value="false"/>
 59  <property name="testOnReturn" value="false"/>
 60 
 61  <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
 62  <property name="poolPreparedStatements" value="false"/>
 63  <property name="maxPoolPreparedStatementPerConnectionSize" value="20"/>
 64 
 65  <!-- 配置监控统计拦截的filters -->
 66  <property name="filters" value="stat"/>
 67 </bean>
 68 
 69 <!-- myBatis文件 -->
 70 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
 71  <property name="dataSource" ref="dataSource" />
 72  <property name="configLocation" value="classpath:mybatis-config.xml"></property>
 73  <!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 -->
 74  <property name="mapperLocations" value="classpath:mappers/*.xml" />
 75 </bean>
 76 
 77 <!-- spring与mybatis整合配置,扫描所有mapper -->
 78 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
 79  <property name="basePackage" value="com.hunter.shiro.web.mapper" />
 80  <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
 81 </bean>
 82 
 83 <!-- 对dataSource 数据源进行事务管理 -->
 84 <bean id="transactionManager"
 85  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
 86  <property name="dataSource" ref="dataSource" />
 87 </bean>
 88 
 89 <!-- 拦截器方式配置事物 -->
 90 <tx:advice id="transactionAdvice" transaction-manager="transactionManager">
 91  <tx:attributes>
 92  <!-- 对insert,update,delete 开头的方法进行事务管理,只要有异常就回滚 -->
 93  <tx:method name="insert*" propagation="REQUIRED" rollback-for="java.lang.Throwable" />
 94  <tx:method name="update*" propagation="REQUIRED" rollback-for="java.lang.Throwable" />
 95  <tx:method name="delete*" propagation="REQUIRED" rollback-for="java.lang.Throwable" />
 96  <!-- get,find,select,count开头的方法,开启只读,提高数据库访问性能 -->
 97  <tx:method name="get*" read-only="true" />
 98  <tx:method name="find*" read-only="true" />
 99  <tx:method name="select*" read-only="true" />
100  <tx:method name="count*" read-only="true" />
101  <!-- 对其他方法 使用默认的事务管理 -->
102  <tx:method name="*"/>
103  </tx:attributes>
104 </tx:advice>
105 
106 <!-- 事务 aop 配置 -->
107 <aop:config>
108  <aop:pointcut id="serviceMethods" expression="execution(* com.hunter.shiro.web.service..*(..))"/>
109  <aop:advisor advice-ref="transactionAdvice" pointcut-ref="serviceMethods"/>
110 </aop:config>
111 
112 <!-- 配置使Spring采用CGLIB代理 -->
113 <aop:aspectj-autoproxy proxy-target-class="true"/>
114 
115 <!-- 启用对事务注解的支持 -->
116 <tx:annotation-driven transaction-manager="transactionManager"/>
117 
118 <!-- Cache配置 -->
119 <cache:annotation-driven cache-manager="cacheManager"/>
120 <bean id="ehCacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
121   p:configLocation="classpath:ehcache.xml"/>
122 <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"
123   p:cacheManager-ref="ehCacheManagerFactory"/>
124 </beans>
View Code

 

5. mybatis-config.xml 配置

技术分享
 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4  "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6 <properties>
 7  <property name="dialectClass" value="com.hunter.shiro.core.feature.orm.dialect.MySql5Dialect"/>
 8 </properties>
 9 
10 <!-- 配置mybatis的缓存,延迟加载等等一系列属性 -->
11 <settings>
12 
13  <!-- 全局映射器启用缓存 -->
14  <setting name="cacheEnabled" value="true"/>
15 
16  <!--
 var cpro_id = "u6292429";
 



                                        

热心网友 时间:2022-05-01 04:35

奉献,分享他们的经验与心得,才能让像我这样的小白有机会站一下你们这些巨人的肩膀,才能少走些弯路)。

  过滤器和*的区别:
  ①*是基于java的反射机制的,而过滤器是基于函数回调。
  ②*不依赖与servlet容器,过滤器依赖与servlet容器。
  ③*只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
  ④*可以访问action上下文、值栈里的对象,而过滤器不能访问。
  ⑤在action的生命周期中,*可以多次被调用,而过滤器只能在容器初始化时被调用一次。
  ⑥*可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在*里注入一个service,可以调用业务逻辑。

热心网友 时间:2022-05-01 05:53

springmvc的*是优先级高于shiro的,shiro就是自定义实现了spring mvc的filter吧,如果足够牛*的话是可以不用shiro的,完全可以自己实现安全拦截的

热心网友 时间:2022-05-01 07:27

springmvc的*是优先级高于shiro的,shiro就是自定义实现了spring mvc的filter,
shiro依赖spring mvc 拦截器吗

①拦截器是基于java的反射机制的,而过滤器是基于函数回调。②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。④拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。⑤在action的生命周期中,拦截器可以多次被调用,而...

静态ip - StormProxies

"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP纯净高匿;2、覆盖全球200+的国家与地区,超7000万住宅IP。3、高可靠性,24小时稳定运行,平均99.99%的可用率;4、性价比更高,便宜好用,单个IP也能享受最优价格,没有额外费用;5、易于使用,支持HTTP/HTTPS/SOCKS5协议,提供多种API参数,网络集成更快捷;6、客服全天在线为您排忧解难,并可根据您的业务需求制定更合适的代理…StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP纯净高匿;2、覆盖全球20...

spring shiro 是怎么读取权限表的?

是自定义的,shiro有个自定义realm,相当于一个拦截器,每次请求都会查看你是否拥有该权限

postman关于shiro登录认证

之后拦截器会将你请求的所有url和请求数据同步到历史中,如上图所示.顺便一提.拦截器不会带host数据,所以host需要你自己在谷歌浏览器里面查看,具体方法是在谷歌浏览器按F12找到对应请求,查看headers 把这个参数放进postman的header请求里面,就可以了.不懂继续追问 ...

Shiro中的filter

shiro内部的过滤器执行完后会切换到tomcat的过滤器继续执行 默认filter 除了LogoutFilter,其他都继承了AdviceFilter AdviceFilter AdviceFilter 提供了 AOP 风格的支持,类似于 SpringMVC 中的 Interceptor:权限验证在preHandle中实现 PathMatchingFilter PathMatchingFilter 提供了基于 Ant 风格的请求路径匹配功能...

SpringMVC shiro 项目 jeesite框架,启动后可以访问,等待约30分钟或更...

应该是session超时导致的,shiro的默认设置会话的全局过期时间30分钟:

springboot怎么实现权限控制?

首先,Spring Security是一个强大的官方框架,它支持基于角色或资源的权限控制,并提供认证和授权功能。可通过配置拦截器或注解实现权限控制,自定义过滤器、认证提供者和授权决策器来增加灵活性。其次,Shiro是一个功能全面且易于使用的Java安全框架,提供了认证、授权、加密、会话管理等功能。通过编写自定义...

【SpringBoot】Shiro实现无状态登录

使用Shiro实现有状态登录,即用户登录状态存储在服务器Session中,使用Shiro实现比较简单,我这里暂不进行讨论。在一些环境中,可能需要把 Web 应用做成无状态的,即服务器端无状态,就是说服务器端不会存储像Session这种东西,而是每次请求时带上token之类的进行用户判断。使用Shiro实现无状态登录的主要步骤有...

手把手教你Shiro整合JWT实现登录认证!

JwtFilter:Shiro中的拦截器,处理token验证。JwtToken:需将UsernamePasswordToken替换为AuthenticationToken的实现。Shiro配置- ShiroConfig:包含过滤器和安全管理器的配置。自定义Realm:实现认证方法,负责token的合法性检查。测试环节登录成功后,测试访问资源。当token失效时,系统将抛出异常;正常情况下,...

SpringBoot+Redis 防止用户重复登录

方式一: 将用户名作为key,用户信息(包含token)作为value。登录时直接存储,拦截器需遍历所有用户名key,匹配请求头中的token,确保登录状态有效。这种方式可能增加系统性能负担,每次请求需要检查所有用户。方式二: 用户名和token分别作为两个独立的key。登录时,先检查用户名key是否存在,如果存在,更新旧...

SpringBoot+Redis 防止用户重复登录

同时存储用户名。拦截器部分,只需检查请求头中的token与新存储的token是否匹配,而非遍历所有用户名。这种方式既简化了操作,又能确保每个用户对应唯一的token,避免了重复登录的问题。在实际操作中,我选择了这种方式,并注意到Shiro框架可能也需要类似处理,以确保用户登录状态的正确性。

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
郑州市金水区丰庆路办事处魅力丰庆 金龙社区居委会河南省郑州市金水区丰产路街道金龙社区居委 批发和零售业商品销售和库存报表批发和零售业商品销售和库存怎么填 vb 入库单制作 甲减是哪个指标不正常 甲减如何确诊 ...草案拟规定点餐浪费也要收钱,平常你都是怎么避免浪费的呢?_百度知 ... 金牌励志系列·名著的力量:向文学大师学英语目录 由于雨季造成商场消售不好,怎样写报表? ...的自营销售与专柜销售收入支出等用什么科目区分?利润表又如何做? ShIrO 这个英文名怎么读 shiro这个安全,权限框架有什么用 shiro和jwt区别 shiro 首先进入哪个方法 为什么使用QQ同步助手不能恢复备份的短信 shiro550和721的区别 qq同步助手 为什么不能同步短信 为什么遮住前置摄像头会黑屏,可以关掉吗? apache shiro是个什么 为什么我的QQ同步助手不能恢复短信到手机? 关于Shiro,大家知道多少 QQ同步助手短信怎么同步 SHIRO怎么念 qq同步助手,怎么同步短信??能同步微信记录吗? springside 中的shiro 有什么用 我那手机是yunos系统的,也不能使用QQ同步助手同步短信!怎么办呢? 日文里面白(はくhaku)和白(しろshiro)有什么区别?分别在什么场合用? iPhone版QQ同步助手不能备份短信吗 shiro中的anon,authc啥意思 shiro技术四大组件和运行原理是什么? 用钉钉听老师直播 为什么直播时我没法发语音? 为什么选择shiro框架,有没有考虑过其他方案 为什么钉钉在直播的时候不能发语音? 手机上钉钉在线课堂直播评论区发不了语音只能打字怎么回事? STEAM 怎么启动国服 没有国际服,怎么用steam启动国服csgo 怎么从steam启动国服csgo oppok9por丁丁网课学生互动无法发语音 怎么从steam启动国服csgo? steamcsgo怎么玩国服? 苹果平板钉钉直播怎么发语音回答问题 钉钉直播时,为什么不能语音回答问题? csgo国服怎么直接从steam上启动? 苹果手机在钉钉直播时发不了语音,为什么? csgo国服怎么在steam上运行 钉钉有时别人直播自己的文字和语音发不过去是怎么回事? 怎么用steam玩csgo国服 如何用steam激活csgo国服 苹果手机为什么钉钉直播时发不出去语音回答问题? csgo国服怎么从steam启动
  • 焦点

最新推荐

猜你喜欢

热门推荐