zoukankan      html  css  js  c++  java
  • 过滤器简单应用

    用过滤器处理字符编码问题(java内部采用Unicoder,处理中文会乱码)

    index.jsp:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!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=UTF-8">
    <title>Insert title here</title>
    
    </head>
    <body>
    <form action="/FilterTest/MyServlet" method="post">
    <p>请输入你的中文名字:</p>
    <input type="text" name="username">
    <input type="submit" value="提交">
    </form>
    </body>
    </html>
    View Code

    MyFilter过滤器:

    package com.zjlyyq;
    
    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;
    import javax.servlet.annotation.WebFilter;
    
    /**
     * Servlet Filter implementation class MyFilter
     */
    @WebFilter("/MyFilter")
    public class MyFilter implements Filter {
        //FilterConfig filterConfig = null;
        String encoding = null;
        /**
         * Default constructor. 
         */
        public MyFilter() {
            // TODO Auto-generated constructor stub
        }
    
        /**
         * @see Filter#destroy()
         */
        public void destroy() {
            // TODO Auto-generated method stub
            //this.filterConfig = null;
            this.encoding = null;
        }
    
        /**
         * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
         */
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            // TODO Auto-generated method stub
            // place your code here
            if(encoding != null){
                System.out.println("2");
                request.setCharacterEncoding(encoding);
                response.setContentType("text/html;charset="+encoding);
            }
            // pass the request along the filter chain
            chain.doFilter(request, response);
        }
    
        /**
         * @see Filter#init(FilterConfig)
         */
        public void init(FilterConfig fConfig) throws ServletException {
            // TODO Auto-generated method stub
            System.out.println("1");
            //this.filterConfig = fConfig;
            this.encoding = fConfig.getInitParameter("encoding");
            System.out.println(this.encoding);
        }
    
    }
    View Code

    MyServlet:

    package com.zjlyyq;
    
    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 MyServlet
     */
    @WebServlet("/MyServlet")
    public class MyServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
           
        /**
         * @see HttpServlet#HttpServlet()
         */
        public MyServlet() {
            super();
            // 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
            //response.getWriter().append("Served at: ").append(request.getContextPath());
        }
    
        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            //doGet(request, response);
            PrintWriter out = response.getWriter();
            String name = request.getParameter("username");
            out.print("你好,"+ name+"<br>");
            out.print("<a href=index.jsp>返回</a>");
        }
    }
    View Code

    web.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
      <display-name>FilterTest</display-name>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
      <filter>
        <filter-name>MyFilter</filter-name>
        <filter-class>com.zjlyyq.MyFilter</filter-class>
        <init-param>
          <param-name>encoding</param-name>
          <param-value>UTF-8</param-value>
        </init-param>
      </filter>
      <filter-mapping>
        <filter-name>MyFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
      </filter-mapping>
      <servlet>
          <servlet-name>SimpleServlet</servlet-name>
          <servlet-class>com.zjlyyq.MyServlet</servlet-class>
      </servlet>
      <servlet-mapping>
          <servlet-name>SimpleServlet</servlet-name>
          <url-pattern>/FilterTest/MyServlet</url-pattern>
      </servlet-mapping>
    </web-app>
    View Code

     运行结果:

  • 相关阅读:
    android中statusbar高度的问题
    int和short做循环计数器时的效率问题
    解决Rectangle Packing问题【原创】
    10个android开源项目(转)
    自动编译.9.png文件
    通过wifi调试android程序
    HBase 性能优化笔记
    [转载]定制CentOS 6.3 自动安装盘
    region split时metascan出现regioninfo为空
    Google Dremel 原理 如何能3秒分析1PB
  • 原文地址:https://www.cnblogs.com/zjlyyq/p/6095459.html
Copyright © 2011-2022 走看看