- <filter>
- <filter-name>CharactsetConversion</filter-name>
- <filter-class>com.gxa.edu.servlet.CharactsetConversion</filter-class>
- <init-param>
- <param-name>flag</param-name>
- <param-value>true</param-value>
- </init-param>
- <init-param>
- <param-name>charcode</param-name>
- <param-value>gb2312</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <!-- 配置需要过滤的URL,这里主要是对所有的文件进行过滤 -->
- <filter-name>CharactsetConversion</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
当配置好web.xml文件后,就创建一个过滤器类,名称CharactsetConversion,该类必须实现Filter接口,同时Filter接口提供了3个方法
(1)void doFilter(ServletRequest req,ServletResponse res,FilterChain filterChain)
(2)void init(FilterConfig filterConfig)
(3)void destroy()
(2)创建一个CharactsetConversion.java文件,该文件了实现Filter接口
- package com.gxa.edu.servlet;
- import javax.servlet.Filter;
- import javax.servlet.FilterChain;
- import javax.servlet.FilterConfig;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
- public class CharactsetConversion implements Filter{
- private FilterConfig filterConfig = null;
- private boolean flag = true;
- private String charcode = "gb2312";
- public void init(FilterConfig filterConfig) {
- this.filterConfig = filterConfig;
- String temp = this.filterConfig.getInitParameter("flag");
- String str = this.filterConfig.getInitParameter("charcode");
- if(temp != null){
- if(temp.equals("true")){
- this.flag = true;
- }else if(temp.equals("false")){
- this.flag = false;
- }else{
- this.flag = true;
- }
- }
- if(str != null){
- this.charcode = str;
- }
- }
- public void doFilter(ServletRequest request,ServletResponse response,FilterChain filterChain) {
- try {
- if (flag) {
- String c = request.getCharacterEncoding();
- if (c == null) {
- request.setCharacterEncoding(charcode);
- } else if (!c.equals(this.charcode)) {
- request.setCharacterEncoding(charcode);
- }
- }
- filterChain.doFilter(request, response);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public void destroy() {
- this.filterConfig = null;
- }
- }