Spring 3 mvc 的拦截器

小红帽吃香蕉 发布于 2011/05/06 00:27
阅读 11K+
收藏 1

 

<mvc:resources mapping="/resources/**" location="/resources/"/>
<mvc:interceptors>
    <mvc:interceptor>
      <mvc:mapping path="/**"/>
      <bean class="com.demo.commons.interceptor.CheckLoginInterceptor"/>
    </mvc:interceptor>
</mvc:interceptors>

CheckLoginInterceptor 做的是用户是不是已经登录的验证。现在这样设置,上面的/resources/**的静态文件也会被拦截

现在需要CheckLoginIntercepto拦截所有请求。但是过滤掉/login和 /resources/**静态文件。请问该如何配置。

加载中
2
黄开源中国
黄开源中国
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
<url-pattern>*.css</url-pattern>
<url-pattern>*.gif</url-pattern>
<url-pattern>*.png</url-pattern>
<url-pattern>*.jpg</url-pattern>
<url-pattern>*.eot</url-pattern>
<url-pattern>*.ttf</url-pattern>
<url-pattern>*.eot@</url-pattern>
<url-pattern>*.woff</url-pattern>
<url-pattern>*.html</url-pattern>
<url-pattern>*.less</url-pattern>
<url-pattern>*.ico</url-pattern>
</servlet-mapping>
放在web.xml中。。让spring不要匹配静态资源的请求。
1
golang_
golang_
我也不知道springmvc的拦截器是怎么想的,所有的操作首先都要经过验证是否会话存在,要判断登陆,结果登陆页面也要被拦截,搞得很复杂。 
0
char87v5
char87v5

<!-- 对某些静态资源,如css,图片等进行过滤 ,有引用 "/js/**" 的路径引用转到工程的/js/目录取资源 -->
	<mvc:resources mapping="/images/**" location="/images/" />
	<mvc:resources mapping="/styles/**" location="/styles/" />
	<mvc:resources mapping="/js/**" location="/js/" />

<!-- 管理员的权限拦截器 -->
		<mvc:interceptor>
			<mvc:mapping path="/adminhome/*" />
			<mvc:mapping path="/roles/*" />
			<mvc:mapping path="/sysuser/*" />
			<mvc:mapping path="/record/*" />
			<mvc:mapping path="/moduleconf/*" />
			<mvc:mapping path="/business/*" />
			<mvc:mapping path="/userapp/*" />
			<bean class="com.interceptor.LoginInterceptor"></bean>
		</mvc:interceptor>
0
小红帽吃香蕉
小红帽吃香蕉

引用来自#2楼“cznjava”的帖子

<!-- 对某些静态资源,如css,图片等进行过滤 ,有引用 "/js/**" 的路径引用转到工程的/js/目录取资源 -->
	<mvc:resources mapping="/images/**" location="/images/" />
	<mvc:resources mapping="/styles/**" location="/styles/" />
	<mvc:resources mapping="/js/**" location="/js/" />

<!-- 管理员的权限拦截器 -->
		<mvc:interceptor>
			<mvc:mapping path="/adminhome/*" />
			<mvc:mapping path="/roles/*" />
			<mvc:mapping path="/sysuser/*" />
			<mvc:mapping path="/record/*" />
			<mvc:mapping path="/moduleconf/*" />
			<mvc:mapping path="/business/*" />
			<mvc:mapping path="/userapp/*" />
			<bean class="com.interceptor.LoginInterceptor"></bean>
		</mvc:interceptor>

就不能配置个全局的,然后去掉某几个?

0
ruben
ruben

com.demo.commons.interceptor.CheckLoginInterceptor 自己判断访问路径,然后放行。。。

   CheckLoginInterceptor 可以自己配置放行路径,你也可以用  AntPathMatcher 来判断是否该放行。。。

0
cyper
cyper
把mvc:resources 放到interceptor之前执行会死啊,不知道spring mvc咋想地。搞这么复杂。
0
3_14159265359
3_14159265359

请问LZ最后怎么解决的呀,表示现在也碰到这个问题

如果用

<mvc:mapping path="/"/>

就拦截不到第二层的地址

如果用

<mvc:mapping path="/**"/>
就会把静态的给拦截了

感觉在interceptors里面过滤的话效率很低呀~~


0
茶几123
<mvc:mapping path="/**" /> /**必须在上面,下面的先执行 <mvc:exclude-mapping path="/resources/**"/> /**除了。。。不拦截
返回顶部
顶部