[1]过滤器的原理
[2]过滤链
[3]Filter接口
*public void init(FilterConfig filterConfig)throws ServletException//过滤器初始化方法,此方法在过滤器初始化时被调用
*public void doilter(ServletRequest request , ServletResponse response,FilterChain chain)throws IOException, ServletException//对请求进行过滤 处理
*public void destroy();//销毁方法,以便释放资源
[4]FilterConfig接口
*public Strng getFilterName();//用于获取过滤器的名字
*public ServletContext getServletContent();//获取Servlet上下文
*public String getInitParameter(String name);//获取过滤器的初始化参数值
*public Enumeration getInitParameterNames();//获取过滤器的所有初始化参数
[5]FilterChain接口
public void doFilter(ServletRequest request request, ServletResponse response)throws IOException , ServletException
[6]过滤器的配置
<!-- 声明过滤器 -->
<filter>
<!-- 过滤器名称 -->
<filter-name>CharactorFilter</filter-name>
<!-- 过滤器的完整类名 -->
<filter-class>com.lyq.CharactorFilter</filter-class>
<!-- 初始化参数 -->
<init-param>
<!-- 参数名 -->
<param-name>encoding</param-name>
<!-- 参数值 -->
<param-value>UTF-8</param-value>
</init-param>
</filter>
<!-- 过滤器映射 -->
<filter-mapping>
<!-- 过滤器名称 -->
<filter-name>CharactorFilter</filter-name>
<!-- URL映射 -->
<url-pattern>/*</url-pattern>
</filter-mapping>
[7]实现字符乱码过滤器处理实例
JSP文件
<body>
<form action="AddServlet" method="post">
<table align="center" border="1" width="350">
<tr>
<td class="2" align="center" colspan="2">
<h2>添加图书信息</h2>
</td>
</tr>
<tr>
<td align="right">图书编号:</td>
<td>
<input type="text" name="id">
</td>
</tr>
<tr>
<td align="right">图书名称:</td>
<td>
<input type="text" name="name">
</td>
</tr>
<tr>
<td align="right">作 者:</td>
<td>
<input type="text" name="author">
</td>
</tr>
<tr>
<td align="right">价 格:</td>
<td>
<input type="text" name="price">
</td>
</tr>
<tr>
<td class="2" align="center" colspan="2">
<input type="submit" value="添 加">
</td>
</tr>
</table>
</form>
</body>
servlet文件
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//获取PrintWriter
PrintWriter out = response.getWriter();
//获取图书编号
String id = request.getParameter("id");
//获取图书名称
String name=request.getParameter("name");
//获取作者
String author =request.getParameter("author");
//获取价格
String price= request.getParameter("price");
//添加成功
out.print("<h2>图书信息添加成功</h2><hr>");
out.print("图书编号:"+id+"<br>");
out.print("图书名称:"+name+"<br>");
out.print(" 作者:"+author+"<br>");
out.print("体格:"+price+"<br>");
out.flush();//刷新流
out.close();//关闭流
}
过滤器文件
package com.lyq;
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;
public class CharactorFilter implements Filter {
// 字符编码
String encoding = null;
public void destroy() {
encoding = null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// 判断字符编码是否为空
if(encoding != null){
// 设置request的编码格式
request.setCharacterEncoding(encoding);
// 设置response字符编码
response.setContentType("text/html; charset="+encoding);
}
// 传递给下一过滤器
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
// 获取初始化参数
encoding = filterConfig.getInitParameter("encoding");
}
}
web配置文件
<!-- 声明过滤器 -->
<filter>
<!-- 过滤器名称 -->
<filter-name>CharactorFilter</filter-name>
<!-- 过滤器的完整类名 -->
<filter-class>com.lyq.CharactorFilter</filter-class>
<!-- 初始化参数 -->
<init-param>
<!-- 参数名 -->
<param-name>encoding</param-name>
<!-- 参数值 -->
<param-value>UTF-8</param-value>
</init-param>
</filter>
<!-- 过滤器映射 -->
<filter-mapping>
<!-- 过滤器名称 -->
<filter-name>CharactorFilter</filter-name>
<!-- URL映射 -->
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>AddServlet</servlet-name>
<servlet-class>com.lyq.AddServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AddServlet</servlet-name>
<url-pattern>/AddServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>