[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]过滤器的配置
-
-
<</SPAN>filter> -
-
<</SPAN>filter-name>CharactorFilter</</SPAN>filter-name> -
-
<</SPAN>filter-class>com.lyq.CharactorFilter</</SPAN>filter-class> -
-
<</SPAN>init-param> -
-
<</SPAN>param-name>encoding</</SPAN>param-name> -
-
<</SPAN>param-value>UTF-8</</SPAN>param-value> -
</</SPAN>init-param> -
</</SPAN>filter> -
-
<</SPAN>filter-mapping> -
-
<</SPAN>filter-name>CharactorFilter</</SPAN>filter-name> -
-
<</SPAN>url-pattern>/*</</SPAN>url-pattern> -
</</SPAN>filter-mapping>
CharactorFilter com.lyq.CharactorFilter encoding UTF-8 CharactorFilter /*
[7]实现字符乱码过滤器处理实例
JSP文件
- <</SPAN>body>
-
<</SPAN>form action="AddServlet" method="post"> -
<</SPAN>table align="center" border="1" width="350"> -
<</SPAN>tr> -
<</SPAN>td class="2" align="center" colspan="2"> -
<</SPAN>h2>添加图书信息</</SPAN>h2> -
</</SPAN>td> -
</</SPAN>tr> -
<</SPAN>tr> -
<</SPAN>td align="right">图书编号:</</SPAN>td> -
<</SPAN>td> -
<</SPAN>input type="text" name="id"> -
</</SPAN>td> -
</</SPAN>tr> -
<</SPAN>tr> -
<</SPAN>td align="right">图书名称:</</SPAN>td> -
<</SPAN>td> -
<</SPAN>input type="text" name="name"> -
</</SPAN>td> -
</</SPAN>tr> -
<</SPAN>tr> -
<</SPAN>td align="right">作 者:</</SPAN>td> -
<</SPAN>td> -
<</SPAN>input type="text" name="author"> -
</</SPAN>td> -
</</SPAN>tr> -
<</SPAN>tr> -
<</SPAN>td align="right">价 格:</</SPAN>td> -
<</SPAN>td> -
<</SPAN>input type="text" name="price"> -
</</SPAN>td> -
</</SPAN>tr> -
<</SPAN>tr> -
<</SPAN>td class="2" align="center" colspan="2"> -
<</SPAN>input type="submit" value="添 加"> -
</</SPAN>td> -
</</SPAN>tr> -
</</SPAN>table> - </</SPAN>form>
-
</</SPAN>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("<</SPAN>h2>图书信息添加成功</</SPAN>h2><</SPAN>hr>"); -
out.print("图书编号:"+id+"<</SPAN>br>"); -
out.print("图书名称:"+name+"<</SPAN>br>"); -
out.print(" 作者:"+author+"<</SPAN>br>"); -
out.print("体格:"+price+"<</SPAN>br>"); -
out.flush();//刷新流 -
out.close();//关闭流 -
}
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("
图书信息添加成功
"); out.print("图书编号:"+id+"
"); out.print("图书名称:"+name+"
"); out.print(" 作者:"+author+"
"); out.print("体格:"+price+"
"); 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"); -
} - }
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配置文件
-
-
<</SPAN>filter> -
-
<</SPAN>filter-name>CharactorFilter</</SPAN>filter-name> -
-
<</SPAN>filter-class>com.lyq.CharactorFilter</</SPAN>filter-class> -
-
<</SPAN>init-param> -
-
<</SPAN>param-name>encoding</</SPAN>param-name> -
-
<</SPAN>param-value>UTF-8</</SPAN>param-value> -
</</SPAN>init-param> -
</</SPAN>filter> -
-
<</SPAN>filter-mapping> -
-
<</SPAN>filter-name>CharactorFilter</</SPAN>filter-name> -
-
<</SPAN>url-pattern>/*</</SPAN>url-pattern> -
</</SPAN>filter-mapping> -
<</SPAN>servlet> -
<</SPAN>description>This is the description of my J2EE component</</SPAN>description> -
<</SPAN>display-name>This is the display name of my J2EE component</</SPAN>display-name> -
<</SPAN>servlet-name>AddServlet</</SPAN>servlet-name> -
<</SPAN>servlet-class>com.lyq.AddServlet</</SPAN>servlet-class> -
</</SPAN>servlet> -
-
<</SPAN>servlet-mapping> -
<</SPAN>servlet-name>AddServlet</</SPAN>servlet-name> -
<</SPAN>url-pattern>/AddServlet</</SPAN>url-pattern> -
</</SPAN>servlet-mapping> -
<</SPAN>welcome-file-list> -
<</SPAN>welcome-file>index.jsp</</SPAN>welcome-file> -
</</SPAN>welcome-file-list>