package me.gacl.web.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
* @ClassName: FilterDemo
* @Description:filter的三种典型应用:
* 、可以在filter中根据条件决定是否调用chain.doFilter(request, response)方法,
* 即是否让目标资源执行
* 、在让目标资源执行之前,可以对request\response作预处理,再让目标资源执行
* 、在目标资源执行之后,可以捕获目标资源的执行结果,从而实现一些特殊的功能
* @author: 孤傲苍狼
* @date: -- 下午::
*/
public class FilterDemo implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("----过滤器初始化----");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//对request和response进行一些预处理
request.setCharacterEncoding("UTF-");
response.setCharacterEncoding("UTF-");
response.setContentType("text/html;charset=UTF-");
System.out.println("FilterDemo执行前!!!");
chain.doFilter(request, response); //让目标资源执行,放行
System.out.println("FilterDemo执行后!!!");
}
@Override
public void destroy() {
System.out.println("----过滤器销毁----");
}
}
<?xml version="." encoding="UTF-"?> <web-app version="." xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w.org//XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app__.xsd"> <display-name></display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!--配置过滤器--> <filter> <filter-name>FilterDemo</filter-name> <filter-class>me.gacl.web.filter.FilterDemo</filter-class> </filter> <!--映射过滤器--> <filter-mapping> <filter-name>FilterDemo</filter-name> <!--“/*”表示拦截所有的请求 --> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
package me.gacl.web.filter;
import java.io.IOException;
import java.util.Enumeration;
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 FilterDemo implements Filter {
/* 过滤器初始化
* @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
*/
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("----过滤器初始化----");
/**
* <filter>
<filter-name>FilterDemo</filter-name>
<filter-class>me.gacl.web.filter.FilterDemo</filter-class>
<!--配置FilterDemo过滤器的初始化参数-->
<init-param>
<description>配置FilterDemo过滤器的初始化参数</description>
<param-name>name</param-name>
<param-value>gacl</param-value>
</init-param>
<init-param>
<description>配置FilterDemo过滤器的初始化参数</description>
<param-name>like</param-name>
<param-value>java</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>FilterDemo</filter-name>
<!--“/*”表示拦截所有的请求 -->
<url-pattern>/*</url-pattern>
</filter-mapping>
*/
//得到过滤器的名字
String filterName = filterConfig.getFilterName();
//得到在web.xml文件中配置的初始化参数
String initParam = filterConfig.getInitParameter("name");
String initParam = filterConfig.getInitParameter("like");
//返回过滤器的所有初始化参数的名字的枚举集合。
Enumeration<String> initParameterNames = filterConfig.getInitParameterNames();
System.out.println(filterName);
System.out.println(initParam);
System.out.println(initParam);
while (initParameterNames.hasMoreElements()) {
String paramName = (String) initParameterNames.nextElement();
System.out.println(paramName);
}
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println("FilterDemo执行前!!!");
chain.doFilter(request, response); //让目标资源执行,放行
System.out.println("FilterDemo执行后!!!");
}
@Override
public void destroy() {
System.out.println("----过滤器销毁----");
}
}
<filter> <description>FilterDemo过滤器</description> <filter-name>FilterDemo</filter-name> <filter-class>me.gacl.web.filter.FilterDemo</filter-class> <!--配置FilterDemo过滤器的初始化参数--> <init-param> <description>配置FilterDemo过滤器的初始化参数</description> <param-name>name</param-name> <param-value>gacl</param-value> </init-param> <init-param> <description>配置FilterDemo过滤器的初始化参数</description> <param-name>like</param-name> <param-value>java</param-value> </init-param> </filter>
<!--映射过滤器--> <filter-mapping> <filter-name>FilterDemo</filter-name> <!--“/*”表示拦截所有的请求 --> <url-pattern>/*</url-pattern> </filter-mapping>
<filter-mapping> <filter-name>testFilter</filter-name> <url-pattern>/index.jsp</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有