在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;
}
分享到:
相关推荐
2. **配置Filter**: 在`web.xml`配置文件中,你需要定义`<filter>`和`<filter-mapping>`元素,指定过滤器的类名以及它应该拦截的URL模式。例如,如果要拦截所有JSP页面,可以设置URL模式为 "*.jsp"。 3. **Filter...
3. 配置Filter:接下来,我们需要在`web.xml`配置文件中声明并配置Filter。在这里,我们指定Filter的类名、初始化参数以及Filter映射规则。 ```xml <filter> <filter-name>myFilter</filter-name> <filter-...
#### 四、配置Filter Filter需要在web.xml文件中进行配置,配置主要包括Filter的类名、初始化参数以及拦截的URL模式。 ```xml <filter> <filter-name>ForceNoCacheFilter</filter-name> <filter-class>...
配置Filter 在web应用的`web.xml`配置文件中,我们定义Filter并指定其作用范围: ```xml <filter> <filter-name>myFilter</filter-name> <filter-class>com.example.MyFilter</filter-class> </filter> ...
3. **配置Filter**:在`web.xml`文件中,我们可以通过`<filter>`和`<filter-mapping>`元素定义Filter,并指定其需要拦截的URL模式。 ```xml <filter> <filter-name>MyFilter</filter-name> <filter-class>...
1. **配置Filter**: 在web.xml文件中配置Filter,指定Filter的类名、URL模式以及初始化参数。 2. **初始化Filter**: 应用服务器启动时,会根据web.xml中的配置创建Filter实例并调用`init()`方法进行初始化。 3. **...
2. **配置Filter**:在接下来的界面中,为Filter选择一个实现类,并实现Filter接口中的三个方法:`doFilter()`, `init()`, 和 `destroy()`。`doFilter()`方法是核心,它会在每次请求经过时被调用。`init()`方法在...
- 在web.xml中,可以通过`<filter>`和`<filter-mapping>`元素来配置Filter。多个Filter可以形成一个链,按照声明的顺序依次执行。 - `@WebFilter`注解也可以用于Java EE 6及更高版本的Filter配置,提供更灵活的...
在`web.xml`文件中配置Filter,主要包括两部分: 1. **Filter定义**:定义Filter的名称和实现类。 ```xml <filter> <filter-name>myFilter</filter-name> <filter-class>com.example.MyFilter</filter-class> ...
3. **配置Filter**:在`web.xml`文件中,我们需要配置Filter,指定它应该拦截哪些URL模式。例如,我们可以设置Filter拦截所有以"/protected/*"开头的URL。 ```xml <filter> <filter-name>LoginFilter</filter-name...
50. }51.}52.53.2、在 web.xml 文件中配置 Filter54.<filter>55. <filter-name>EncodeFilter</filter-name>56. <filter-class>...
如果Filter选择不继续处理,可以直接修改响应并返回给客户端,或者使用`RequestDispatcher`或`HttpServletResponse`的方法进行转发或重定向。 **Filter的应用场景** - **安全控制**:例如进行用户登录检查,只有...
2. **配置Filter**:在`web.xml`文件中,你需要定义Filter并指定其对应的类,同时可以设置初始化参数。例如: ```xml <filter> <filter-name>myFilter</filter-name> <filter-class>...
Filter之间是串联的,每个Filter都有机会对请求进行修改或做其他操作。 4. **Filter的实际应用**: - **登录验证**:在用户访问受保护的页面之前,Filter可以检查用户是否已登录,未登录则重定向到登录页面。 - *...
2. 过滤(doFilter):每次请求匹配到Filter配置时,都会调用`doFilter(ServletRequest request, ServletResponse response, FilterChain chain)`方法。在这里,我们可以获取并处理Response信息。 3. 销毁(destroy...
在`web.xml`中配置Filter,包括指定Filter类、设置过滤规则以及映射到特定的URL模式: ```xml <filter> <filter-name>myFilter</filter-name> <filter-class>com.example.MyFilter</filter-class> </filter> ...
在部署和配置Filter时,我们需要在web.xml文件中定义过滤器,并设置匹配的URL模式。例如,如果我们希望限制所有以"/admin/"开头的URL,配置可能如下: ```xml <filter> <filter-name>UserAccessFilter</filter-...
在此方法中,你可以添加自己的业务逻辑,如检查用户权限、修改请求或响应数据等。 3. `destroy()`:过滤器的销毁方法。当过滤器不再需要或者Web应用停止时,容器会调用此方法,用于清理资源和执行其他关闭操作。 ...
在实际开发中,我们可能会借助一些框架或工具来简化Filter的使用,如Spring MVC的`@WebFilter`注解,可以更方便地注册和配置Filter。 总之,Servlet Filter是Java Web开发中不可或缺的一部分,它允许我们在请求和...