隨筆-0  評論-0  文章-16  trackbacks-0
          servlet 過濾器是客戶端與目標(biāo)間的中間層組建,用于攔截客戶端的請求與相應(yīng)信息。
          首先先看如下例子:
          (1) 創(chuàng)建網(wǎng)站
          (2) 創(chuàng)建Servlet, Servlet 名稱是Servletnew ,包名是:com.jht
          (3) 增加Apache Tomcat到Library
          (4)WebContent/WEB-INF 增加web.xml文件,文件內(nèi)容如下:
          <?xml version="1.0" encoding="UTF-8"?>
          <web-app version="2.5" xmlns=" xmlns:xsi=" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
            <!-- 聲明字符編碼過濾器 -->
           <filter>
            <filter-name>CharacterEncodingFilter</filter-name>
            <filter-class>com.jht.CharacterEncodingFilter</filter-class>
            <!-- 設(shè)置初始化參數(shù) -->
            <init-param>
             <param-name>encoding</param-name>
             <param-value>GBK</param-value>
            </init-param>
           </filter>
           <!-- 映射字符編碼過濾器 -->
           <filter-mapping>
            <filter-name>CharacterEncodingFilter</filter-name>
            <!-- 與所有請求關(guān)聯(lián) -->
            <url-pattern>/*</url-pattern>
            <!-- 設(shè)置過濾器對應(yīng)的請求方式 -->
            <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" "
          <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) 創(chuàng)建類文件CharacterEncodingFilter,實(shí)現(xiàn)過濾。

          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{
           // 字符編碼(初始化參數(shù))
              protected String encoding = null;
              // FilterConfig對象
              protected FilterConfig filterConfig = null;
              // 初始化方法
              public void init(FilterConfig filterConfig) throws ServletException {
                  // 對filterConfig賦值
               this.filterConfig = filterConfig;
               // 對初始化參數(shù)賦值
                  this.encoding = filterConfig.getInitParameter("encoding");
              }
              // 過濾器處理方法
              public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
                  // 判斷字符編碼是否有效
               if (encoding != null) {
                // 設(shè)置request字符編碼
                      request.setCharacterEncoding(encoding);
                      // 設(shè)置response字符編碼
                      response.setContentType("text/html; charset="+encoding);
                  }
               // 傳遞給下一過濾器
                  chain.doFilter(request, response);
              }
              // 銷毀方法
              public void destroy() {
               // 釋放資源
                  this.encoding = null;
                  this.filterConfig = null;
              }
          }

          (7) MyServletnew.java 文件內(nèi)容如下:

          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();
            // 獲取表單參數(shù)
            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();
           }

          }



          主站蜘蛛池模板: 石门县| 垫江县| 白朗县| 齐齐哈尔市| 石狮市| 吴江市| 八宿县| 黄浦区| 龙山县| 岑溪市| 化隆| 库伦旗| 开鲁县| 天镇县| 家居| 清徐县| 龙陵县| 炎陵县| 阿城市| 汶川县| 宁国市| 临漳县| 林芝县| 平湖市| 左云县| 浠水县| 无锡市| 白银市| 淮北市| 化德县| 乐安县| 和田县| 广德县| 秭归县| 新竹市| 天气| 江西省| 宜春市| 宣威市| 天等县| 江北区|