[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>
[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();//關閉流
- }
圖書信息添加成功
"); 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");
- }
- }
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>