domain.User
public class User implements Serializable {
private String name;
private Integer age;
get/set/toString()
} domain.Account public class Account implements Serializable {
private String username;
private String password;
private Double money;
private User user;
get/set/toString()
} param.jsp form action="param/saveAccount" method="post"> 姓名:<input type="text" name="username" /><br> 密码:<input type="text" name="password" /><br> 金额:<input type="text" name="money" /><br> user姓名:<input type="text" name="user.name" /><br> user年龄:<input type="text" name="user.age" /><br> <input type="submit" value="提交"> </form>paramController.java
@Controller
@RequestMapping("/param")
public class ParamController {
@RequestMapping("/saveAccount")
public String testSaveAccount(Account account) {
System.out.println("执行了...");
System.out.println("用户名:"+account.getUsername());
System.out.println("密码:"+account.getPassword());
System.out.println("金额:"+account.getMoney());
System.out.println("user姓名:"+account.getUser().getName());
System.out.println("user年龄:"+account.getUser().getAge());
return "success";
}
} 但是我们发现我们在param.jsp上输入中文的时候打印在控制台上会出现乱码,但是为什么我们的jsp页面显示没有出现乱码哪,
是因为我们的jsp文件上有
<%@ page contentType="text/html;charset=UTF-8" language="java" %>这段信息就给浏览器说了要使用UTF-8显示,
contentType=”text/html;charset=UTF-8”的作用是指定服务器响应给浏览器的编码。
但是输入框中没有规定,
如何解决post请求中文乱码
曾经我们讲过request这个对象,request.setCharacterEncoding():用来确保发往服务器的参数的编码格式。
但是上面的方法太麻烦,springmvc给我们提供了过滤器,
<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> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>注意
<url-pattern>/*</url-pattern>是“/*”不是“/”(已测试)

京公网安备 11010502036488号