相关疑难解决方法(0)

从servlet过滤器和标记访问Spring bean

我可以使用我的Servlet访问Spring bean

WebApplicationContext springContext = 
    WebApplicationContextUtils.getWebApplicationContext(getServletContext()); 
Run Code Online (Sandbox Code Playgroud)

在Servlet的init方法中.

我想知道是否有相当于WebApplicationContextservlet过滤器?另外,是否可以在标记类中访问Spring bean?

tags spring servlets javabeans servlet-filters

25
推荐指数
2
解决办法
3万
查看次数

servlet过滤器中的弹簧注入

我正在尝试对servlet过滤器执行spring注入.过滤器是引用的jar文件的一部分.所以.我不能把它改成拦截器.在我的插件项目的web.xml中

<filter>
    <filter-name>CustomFilter</filter-name>    
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>    
    <init-param>    
        <param-name>someinitparam</param-name>    
        <param-value>value to it</param-value>    
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CustomFilter</filter-name>
    <url-pattern>/mywebservices/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)

在spring.xml中我将使用这样的

<bean id="CustomFilter" class="com.abc.CustomFilter"></bean>
Run Code Online (Sandbox Code Playgroud)

在spring.xml中已经配置了一些过滤器

<bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy">
    <property name="filterInvocationDefinitionSource">
        <value>
            CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
            PATTERN_TYPE_APACHE_ANT
            /mywebservices/*=some existing filters
        </value>              
    </property>
</bean>
Run Code Online (Sandbox Code Playgroud)

由于我已经在web.xml中指定了我的url模式,我需要在filterChainProxy中再次添加

/mywebservices/**=CustomFilter, some existing filters
Run Code Online (Sandbox Code Playgroud)

它会起作用吗

请建议.

java spring spring-mvc spring-security

9
推荐指数
2
解决办法
1万
查看次数

如何在spring应用程序的servlet过滤器中自动装配bean?

我有一个spring-boot申请.

我的项目中没有ApplicationContext.xml或没有web.xml文件.我更喜欢避免使用它们并在Java代码中配置所有内容.

我已经阅读了以下有关servlet过滤器中bean注入的帖子.

  1. 如何在servlet过滤器中获取Spring bean?

  2. http://www.deadcoderising.com/2015-05-04-dependency-injection-into-filters-using-delegatingfilterproxy/

  3. servlet过滤器中的弹簧注入

读完之后,我开始使用了DelegatingFilterProxy.

我的问题是如何autowire将bean转换为过滤器并避免使用xml文件,尤其是DelegatingFilterProxy配置.

剪切的代码可以从github中托管的第二篇文章中获得.

public class AuditHandler {

    public void auditRequest(String appName, ServletRequest request) {
        System.out.println(appName + ": Received request from " + request.getRemoteAddr() );
    }
}

public class AuditFilter implements Filter {

    private final AuditHandler auditHandler;
    private String appName;

    public AuditFilter(AuditHandler auditHandler) {
        this.auditHandler = auditHandler;
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException …
Run Code Online (Sandbox Code Playgroud)

spring dependency-injection spring-mvc autowired spring-boot

5
推荐指数
1
解决办法
8227
查看次数