随笔-0  评论-0  文章-16  trackbacks-0
servlet 过滤器是客户端与目标间的中间层组建,用于拦截客户端的请求与相应信息。
首先先看如下例子:
(1) 创建网站
(2) 创建Servlet, Servlet 名称是Servletnew ,包名是:com.jht
(3) 增加Apache Tomcat到Library
(4)WebContent/WEB-INF 增加web.xml文件,文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 <!-- 声明字符编码过滤器 -->
 <filter>
  <filter-name>CharacterEncodingFilter</filter-name>
  <filter-class>com.jht.CharacterEncodingFilter</filter-class>
  <!-- 设置初始化参数 -->
  <init-param>
   <param-name>encoding</param-name>
   <param-value>GBK</param-value>
  </init-param>
 </filter>
 <!-- 映射字符编码过滤器 -->
 <filter-mapping>
  <filter-name>CharacterEncodingFilter</filter-name>
  <!-- 与所有请求关联 -->
  <url-pattern>/*</url-pattern>
  <!-- 设置过滤器对应的请求方式 -->
  <dispatcher>REQUEST</dispatcher>
  <dispatcher>FORWARD</dispatcher>
 </filter-mapping>
 <!-- Servlet配置 -->
 <servlet>
  <servlet-name>MyServletnew</servlet-name>
  <servlet-class>com.jht.MyServletnew</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>MyServletnew</servlet-name>
  <url-pattern>/MyServletnew</url-pattern>
 </servlet-mapping>
 <welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
</web-app>

(5) 在WebConntent下面增加index.jsp
<%@ page language="java" contentType="text/html; charset=GBK"
    pageEncoding="GBK"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>Insert title here</title>
</head>
<body>
    <form action="MyServletnew" method="post">
  <p>
   请输入你的中文名字:
   <input type="text" name="name">
   <input type="submit" value="提 交">
  </p>
 </form> 
</body>
</html>
(6) 创建类文件CharacterEncodingFilter,实现过滤。

package com.jht;


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;
/**
 * 字符编码过滤器
 * @author
 */
public class CharacterEncodingFilter implements Filter{
 // 字符编码(初始化参数)
    protected String encoding = null;
    // FilterConfig对象
    protected FilterConfig filterConfig = null;
    // 初始化方法
    public void init(FilterConfig filterConfig) throws ServletException {
        // 对filterConfig赋值
     this.filterConfig = filterConfig;
     // 对初始化参数赋值
        this.encoding = filterConfig.getInitParameter("encoding");
    }
    // 过滤器处理方法
    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 destroy() {
     // 释放资源
        this.encoding = null;
        this.filterConfig = null;
    }
}

(7) MyServletnew.java 文件内容如下:

package com.jht;


import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class MyServletnew
 */
@WebServlet("/MyServletnew")
public class MyServletnew extends HttpServlet {
 private static final long serialVersionUID = 1L;

    /**
     * Default constructor.
     */
    public MyServletnew() {
        // TODO Auto-generated constructor stub
    }

 /**
  * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
  */
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
 }

 /**
  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  */
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  PrintWriter out = response.getWriter();
  // 获取表单参数
  String name = request.getParameter("name");
  if(name != null && !name.isEmpty()){
   System.out.println(name);
   out.print("你好 " + name);
   out.print(",<br>欢迎来到我的主页。");
  }else{
   out.print("请输入你的中文名字!");
  }
  out.print("<br><a href=index.jsp>返回</a>");
  out.flush();
  out.close();
 }

}



posted on 2012-07-05 11:57 jhtchina 阅读(104) 评论(0)  编辑  收藏 所属分类: servlet