通过过滤器解决post方式请求参数编码问题和响应编码问题

来源:互联网 发布:linux i2c驱动 编辑:程序博客网 时间:2024/05/16 00:46

1。SetCharacterEncodingFilter.java文件:

package com.itheima.encoding;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;//解决post方式请求参数和响应编码问题的过滤器public class SetCharacterEncodingFilter implements Filter {    private FilterConfig filterConfig;    public void init(FilterConfig filterConfig) throws ServletException {        this.filterConfig = filterConfig;    }    public void doFilter(ServletRequest request, ServletResponse response,            FilterChain chain) throws IOException, ServletException {        String encoding = filterConfig.getInitParameter("encoding");//用户可能忘记了配置该参数        if(encoding==null){            encoding = "UTF-8";//默认编码        }        request.setCharacterEncoding(encoding);//只能解决POST请求参数的中文问题        response.setCharacterEncoding(encoding);//输出流编码        response.setContentType("text/html;charset="+encoding);//输出流编码,通知了客户端应该使用的编码        chain.doFilter(request, response);    }    public void destroy() {    }}

2。web.xml文件:

<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0"    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_3_0.xsd">  <servlet>    <servlet-name>ServletDemo2</servlet-name>    <servlet-class>ServletDemo2</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>ServletDemo2</servlet-name>    <url-pattern>/servlet/ServletDemo2</url-pattern>  </servlet-mapping><welcome-file-list>    <welcome-file>index.jsp</welcome-file></welcome-file-list><filter>    <filter-name>SetCharacterEncodingFilter</filter-name>    <filter-class>com.itheima.encoding.SetCharacterEncodingFilter</filter-class>    <init-param>        <param-name>encoding</param-name>        <param-value>UTF-8</param-value>    </init-param> </filter>   <filter-mapping><!-- 按照此标签的出现顺序 -->    <filter-name>SetCharacterEncodingFilter</filter-name>    <url-pattern>/*</url-pattern> </filter-mapping></web-app>

3。ServletDemo2.java文件:

import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class ServletDemo2 extends HttpServlet {    public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        String name = request.getParameter("name");        response.getWriter().write(name+"<br/>");        response.getWriter().write("你好啊,你吃了吗");    }    public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        doGet(request, response);    }}

4。1.jsp文件:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>title</title>    <meta http-equiv="pragma" content="no-cache">    <meta http-equiv="cache-control" content="no-cache">    <meta http-equiv="expires" content="0">    <!--    <link rel="stylesheet" type="text/css" href="styles.css">    -->  </head>  <body>    <form action="${pageContext.request.contextPath}/servlet/ServletDemo2" method="post">        <input type="text" name="name"/><input type="submit" value="保存"/>    </form>  </body></html>

运行结果:
这里写图片描述

张珊珊你好啊,你吃了吗
0 0
原创粉丝点击