配置filter,修改response

在java中增加了过滤器filter,一般我们定义的filter都要继承filter接口从而实现dofilter方法,filter的配置,我们可以在web.xml中进行配置,配置如下:

<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>*</url-pattern>
  </filter-mapping>
	<filter>
		<filter-name>proxyFilter</filter-name>
		<filter-class>com.filter.ProxyFilter</filter-class>
		<init-param>
			<param-name>configFile</param-name>
			<param-value>/config.json</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>proxyFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

当我们想在程序中使用filter的param时,可以通过filterConfig.getInitParameter("configFile")的形式来获得配置数据,在dofilter中,我们希望改变httpServletRequest的封装的属性就需要用到装饰类 HttpServletRequestWrapper,想改变request的那个方法就要用继承该wrapper类然后重写servletRequest的那个方法。使用httpServletResponse对象来初始化我们想要的对象。例如想修改request的getPathInfo,实现如下:

public class HttpProxyRouterRequest extends HttpServletRequestWrapper {

	public String _pathInfo = null;

	public HttpProxyRouterRequest(HttpServletRequest request) {
		super(request);
		// TODO Auto-generated constructor stub
	}
	@Override
    public String getPathInfo() {
		if ( this._pathInfo == null ){
			_pathInfo = super.getPathInfo();
			if(_pathInfo == null){
				_pathInfo = HttpUtils.getPathInfo(getRequestURI(), getContextPath());
			}
		}
		return this._pathInfo;
    }



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值