Spring过滤器的targetFilterLifecycle作用
Spring过滤器在web.xml中进行配置,对URL请求进行过滤,链式处理。配置分为两种A和B。
A:普通配置在web.xml中增加如下内容:
<filter>
<filter-name>authFilter</filter-name>
<filter-class>com.lan16.weixin.filter.AuthFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>authFilter</filter-name>
<url-pattern>/user/*</url-pattern>
</filter-mapping>
B:高级配置(允许代理注入SpringBean)在web.xml中增加如下内容:
<filter>
<filter-name>authFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>targetFilterLifecycle</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>authFilter</filter-name>
<url-pattern>/user/*</url-pattern>
</filter-mapping>
在springBean配置中加入:
<bean id="authFilter" class="com.lan16.weixin.filter.AuthFilter">
<property name="service" ref="service"/>
</bean>
因为Filter比Bean先加载,也就是Spring会先加载Filter指定的类到Container中,这样Filter中注入的Spring Bean就为null了。
解决办法:
先Filter中加入DelegatingFilterProxy类,"targetFilterLifecycle"指明作用于Filter的所有生命周期。原理是DelegatingFilterProxy类是一个代理类,所有的请求都会首先发到这个Filter代理,然后再按照"filter-name"委派到Spring中的这个Bean。在Spring中配置的Bean的name要和web.xml中的
- 上一篇
JVM内存结构、Java内存模型、Java对象模型
Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模型和Java对象模型,这就是三个截然不同的概念,但是很多人容易弄混。
- 下一篇
Java开发中我们常说的JDK、JRE、JVM
JDK有以下三种版本:J2SE,standard edition,标准版,是我们通常用的一个版本J2EE,enterpsise edtion,企业版,使用这种JDK开发J2EE应用程序J2ME,micro edtion,主要用于移动设备、嵌入式设备上的java应用程序