java - springmvc接收url中文参数乱码
PHP中文网
PHP中文网 2017-04-17 17:59:59
0
9
439

1.今天在做一个例子的时候,发现后台不能正确接收中文的url参数,试了各种解决办法都不可以。

以下是代码:
Controller:

package com.springapp.mvc;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("/")
public class HelloController {
    @RequestMapping(method = RequestMethod.GET)
    public String printWelcome(ModelMap model) {
        model.addAttribute("message", "Hello world IDEA!");
        model.put("content","This is my first springmvc web");
        return "index";
    }
    @RequestMapping(value = "/page/{name}/{age}",method = RequestMethod.GET)
    public String getName(ModelMap modelMap, @PathVariable("name") String name, @PathVariable("age") int age) {
        modelMap.addAttribute("name",name);
        modelMap.addAttribute("age",age);
        return "name";
    }
}

name.jsp

<%@ page pageEncoding="UTF-8" language="java" %>
<html>
<head>
    <title></title>
</head>
<body>
    <p>
        名字:${name}<br/>
        年龄:${age}<br/>
    </p>
</body>
</html>

web.xml

<web-app version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <display-name>Spring MVC Application</display-name>

    <servlet>
        <servlet-name>mvc-dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!-- Encoding -->
    <filter>
        <filter-name>characterEncodingFilter</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>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>
PHP中文网
PHP中文网

认证高级PHP讲师

모든 응답(9)
Peter_Zhu

대부분의 해결 방법은 위에 명확하게 설명되어 있습니다. 3가지 방법으로 정리하겠습니다

  1. Tomcat을 직접 구성할 수 있습니다 URIEconding="UTF-8"

  2. new String("中文".getBytes("ISO-8859-1"), "UTF-8");

  3. 바이두.com/s?wd=%E4%BD%A0%E5%A5%BD%E4%B8%96%E7%95%8C와 같은 URLEncoder을 사용하여 중국어를 인코딩합니다

이 세 가지 방법으로 중국어 URL이 왜곡되는 문제를 해결할 수 있습니다.

大家讲道理

제출 가져오기는 문자열 클래스의 생성자 메서드를 사용합니다

巴扎黑

백그라운드에서 수신된 데이터가 왜곡되었는지 확인하기 위해 디버깅해 보셨나요? 아니면 데이터베이스가 깨졌나요? 두 가지 상황은 서로 다릅니다. 전자의 경우 request.setCharacterEncoding 메서드를 사용하고 new String(para.getBytes(“ISO-8859-1”),“UTF-8”을 사용하여 매개변수를 변환할 수 있습니다. 배경 코드가 깨져 있지 않고 데이터베이스가 깨져 있는 것이 확인되면 잊어버렸는지 확인하세요. 데이터베이스 링크에 추가하세요.

大家讲道理

나의 접근 방식은

左手右手慢动作

springmvc 중국어 왜곡 문제: http://luanxiyuan.iteye.com/blog/1849169
new String(receivedparameters.getBytes("ISO-8859-1"), "UTF-8"); >

刘奇

컨테이너의 문자셋이 지정되었나요?

Ty80

Tomcat 컨테이너인 경우 구성해주세요URIEconding="UTF-8" useBodyEncodingForURI="true"

으아악
Peter_Zhu

프런트 엔드에서 Base64 인코딩을 사용한 다음 디코딩을 위해 백엔드로 보낼 수 있습니다

迷茫

@RequestMapping(값 = "/xxx", 메소드 = RequestMethod.GET, 헤더 = {"content-type=application/json;charset=UTF-8"}, 생성 = {"application/json;charset=UTF -8"})

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿