您的位置:首页 > 编程语言 > Java开发

简单项目开发之一(springmvc+filter)

2015-11-19 18:36 405 查看
前面的框架搭建已经基本完成,后面的开发我们就在这个简单架子的基础上做开发,这一篇先加过滤器filter


一:准备过滤器处理类AuditFilter(主类)和AuditHandler(实际处理类)

AuditFilter的代码如下:

package com.template.filter;

import java.io.IOException;

import javax.annotation.Resource;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class AuditFilter implements Filter {

private AuditHandler auditHandler;

private String appName;

public AuditFilter() {}

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

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

auditHandler.auditRequest(appName,request);
chain.doFilter(request, response);
}

public void init(FilterConfig filterConfig) throws ServletException {
appName = filterConfig.getInitParameter("appName");
}

public void destroy() {}
}


AuditHandler的代码如下:

package com.template.filter;

import javax.servlet.ServletRequest;

import org.apache.log4j.Logger;

public class AuditHandler {

private static Logger logger = Logger.getLogger(AuditHandler.class);

public void auditRequest(String appName,ServletRequest request) {
logger.info(appName+" received request from " + request.getRemoteAddr());
}
}


二:web.xml增加如下配置:

<!-- spring security Filter -->
<filter>
<filter-name>auditFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<!-- invoke lifecycle methods -->
<param-name>targetFilterLifecycle</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>appName</param-name>
<param-value>mytemplateweb</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>auditFilter</filter-name>
<url-pattern>*.htm</url-pattern>
</filter-mapping>


这里需要注意的是:filter-name的名字就是写的filter的类名

三:spring.xml增加:

<bean id="auditHandler" class="com.template.filter.AuditHandler"/>

<bean id="auditFilter" class="com.template.filter.AuditFilter">
<constructor-arg ref="auditHandler"/>
</bean>


注意:本来想通过注解的方法注入的,没起作用,就改成这种方式了,用这种方式注入,声明的bean要么没有构造方法(有参数的和无参的),要么显示声明无参的构造方法,不然报错
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: