【servlet】tomcat7和tomcat9解除中文亂碼具體實例

tomcat版本不同,doget方法內的中文亂碼處理方式也不同,下面看實例。

1.前端代碼:

<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <title>test</title>
</head>
<body>
<form action="RequestParamsServlet" method="post">
    用戶名:<input name="username" type="text">
    密碼:<input name="password" type="text">
    愛好:
    <input type="checkbox" name="hobby" value="運動">運動
    <input type="checkbox" name="hobby" value="游泳">游泳
    <input type="checkbox" name="hobby" value="打乒乓球">打乒乓球
    <input type="submit">
</form>
</body>
</html>

前端顯示:

2.後臺代碼:

2.1 tomcat 7實例

(沒有對servlet.xml進行修改,默認編碼爲ISO-8859-1,doget需手動轉碼

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;


@WebServlet(
        urlPatterns = "/RequestParamsServlet"
)
public class RequestParamsServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //設置request對象的解碼方式
        request.setCharacterEncoding("utf-8");
        //設置response返回輸出的編碼方式
        response.setContentType("text/html;charset=utf-8");
        String name = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println("用戶名:" + name);
        System.out.println("密 碼:" + password);
        PrintWriter out = response.getWriter();
        out.println("用戶名:" + name);
        out.println("密 碼:" + password);
        // 獲取參數名爲“hobby”的值
        String[] hobbys = request.getParameterValues("hobby");
        System.out.print("愛好:");
        out.println("愛好:");
        for (int i = 0; i < hobbys.length; i++) {
            System.out.print(hobbys[i] + ",");
            out.println(hobbys[i] + ",");
        }

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
       //設置response返回輸出的編碼方式
        response.setContentType("text/html;charset=utf-8");
        String name=new String(request.getParameter("username").getBytes("ISO-8859-1"), "UTF-8");
        String password=new String(request.getParameter("password").getBytes("ISO-8859-1"), "UTF-8");
        System.out.println("用戶名:" + name);
        System.out.println("密 碼:" + password);
        PrintWriter out = response.getWriter();
        out.println("用戶名:" + name);
        out.println("密 碼:" + password);
        // 獲取參數名爲“hobby”的值
        String[] hobbys = request.getParameterValues("hobby");
        System.out.print("愛好:");
        out.println("愛好:");
        for (int i = 0; i < hobbys.length; i++) {
            hobbys[i]=new String(hobbys[i].getBytes("ISO-8859-1"),"UTF-8");
            System.out.print(hobbys[i] + ",");
            out.println(hobbys[i] + ",");
        }

    }
}

get提交執行結果:

2.2 tomcat 9實例

(沒有對servlet.xml進行修改,默認編碼爲UTF-8,doget無需轉碼

package org.hc.maven.testnew;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;


@WebServlet(
        urlPatterns = "/RequestParamsServlet"
)
public class RequestParamsServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //設置request對象的解碼方式
        request.setCharacterEncoding("utf-8");
        //設置response返回輸出的編碼方式
        response.setContentType("text/html;charset=utf-8");
        String name = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println("用戶名:" + name);
        System.out.println("密 碼:" + password);
        PrintWriter out = response.getWriter();
        out.println("用戶名:" + name);
        out.println("密 碼:" + password);
        // 獲取參數名爲“hobby”的值
        String[] hobbys = request.getParameterValues("hobby");
        System.out.print("愛好:");
        out.println("愛好:");
        for (int i = 0; i < hobbys.length; i++) {
            System.out.print(hobbys[i] + ",");
            out.println(hobbys[i] + ",");
        }

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
       //設置response返回輸出的編碼方式
        response.setContentType("text/html;charset=utf-8");
        String name = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println("用戶名:" + name);
        System.out.println("密 碼:" + password);
        PrintWriter out = response.getWriter();
        out.println("用戶名:" + name);
        out.println("密 碼:" + password);
        // 獲取參數名爲“hobby”的值
        String[] hobbys = request.getParameterValues("hobby");
        System.out.print("愛好:");
        out.println("愛好:");
        for (int i = 0; i < hobbys.length; i++) {
            System.out.print(hobbys[i] + ",");
            out.println(hobbys[i] + ",");
        }

    }
}

get提交執行結果:

均無中文亂碼

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章