Maison > Questions et réponses > le corps du texte
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>
天蓬老师2017-04-17 18:01:59
La plupart des solutions ont été clairement expliquées ci-dessus. Laissez-moi trier 3 façons
Tomcat peut être configuré directementURIEconding="UTF-8"
new String("中文".getBytes("ISO-8859-1"), "UTF-8");
Encodez le chinois en utilisant URLEncoder
tel que : baidu.com/s?wd=你好世界
Ces 3 méthodes peuvent résoudre le problème des URL chinoises tronquées.
大家讲道理2017-04-17 18:01:59
Obtenir la soumission utilise la méthode constructeur de la classe chaîne
巴扎黑2017-04-17 18:01:59
L'avez-vous débogué pour voir si les données reçues en arrière-plan sont tronquées ? Ou la base de données est-elle tronquée ? Les deux sont des situations différentes. Pour la première, vous pouvez essayer la méthode request.setCharacterEncoding
et utiliser new String(para.getBytes(“ISO-8859-1”),“UTF-8”
pour transcoder les paramètres. Si vous voyez que le code d'arrière-plan n'est pas tronqué et que la base de données est tronquée, vérifiez si vous avez oublié de le faire. ajoutez-le au lien de la base de données enConding…
大家讲道理2017-04-17 18:01:59
Encapsulez-le dans un objet, puis utilisez @RequestBody pour annoter le paramètre, puis récupérez-le à partir de l'objet. Cependant, parfois, lorsqu'il y a peu de paramètres, il semble inutile d'encapsuler à nouveau un objet
<. 🎜 >répondre0
ringa_lee2017-04-17 18:01:59
Problème tronqué en chinois springmvc : http://luanxiyuan.iteye.com/blog/1849169
new String(received settings.getBytes("ISO-8859-1"), "UTF-8"); >
PHP中文网2017-04-17 18:01:59
S'il s'agit d'un conteneur Tomcat, veuillez configurer URIEconding="UTF-8" useBodyEncodingForURI="true"
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000" URIEconding="UTF-8" useBodyEncodingForURI="true"
redirectPort="8443" />
天蓬老师2017-04-17 18:01:59
Vous pouvez utiliser l'encodage Base64 sur le front-end, puis l'envoyer au backend pour le décodage
迷茫2017-04-17 18:01:59
@RequestMapping(value = "/xxx", method = RequestMethod.GET, headers = {"content-type=application/json;charset=UTF-8"}, produit = {"application/json;charset=UTF -8"})