天天看點

SpringMVC—請求傳回資料中文亂碼

亂碼問題現象

1、建立送出資料的表單form.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="/e/t" method="post">
        <input type="text" name="name">
        <input type="submit">
    </form>
</body>
</html>
           

2、建立EncodingController進行請求處理,傳回送出的name字段

package indi.stitch.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;

@Controller
public class EncodingController {

    @PostMapping("/e/t")
    public String test1(String name, Model model) {
        model.addAttribute("msg",name);
        return "test";
    }
}
           

3、test.jsp用于向用戶端傳回處理後的資料

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
${msg}
</body>
</html>
           

4、進行送出測試

表單送出name“張三”

SpringMVC—請求傳回資料中文亂碼

傳回資料為亂碼

SpringMVC—請求傳回資料中文亂碼

處理方法

方法一:自定義過濾器,并在web.xml檔案中進行配置

自定義過濾器

package indi.stitch.filter;

import javax.servlet.*;
import java.io.IOException;

public class EncodingFilter implements Filter {
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        servletRequest.setCharacterEncoding("utf-8");
        servletResponse.setCharacterEncoding("utf-8");
        filterChain.doFilter(servletRequest, servletResponse);
    }

    public void destroy() {

    }
}
           

在web.xml中配置自定義過濾器

<!--1、自定義過濾器-->
    <filter>
        <filter-name>encoding</filter-name>
        <filter-class>indi.stitch.filter.EncodingFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>encoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
           

處理結果:

SpringMVC—請求傳回資料中文亂碼

方法二:使用Spring的過濾器,需要在init-param标簽中為其傳入encoding=utf-8的參數,直接在web.xml中進行配置即可

<!--2、使用Spring的過濾器-->
    <filter>
        <filter-name>encoding</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>encoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
           

處理結果:

SpringMVC—請求傳回資料中文亂碼

項目整體

SpringMVC—請求傳回資料中文亂碼

繼續閱讀