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>是“/*”不是“/”(已测试)