表单form.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<form action="/e/t1" method="post">
<input type="text" name="name">
<input type="submit">
</form>
</body>
</html>
很明显,提交一个name,到控制器。
controller:
@Controller
public class EncodingController {
@PostMapping("/e/t1")
public String test1(String name, Model model){
model.addAttribute("msg",name);
System.out.println(name);
return "test";
}
}
接受传来的name,并把name作为参数跳转传给test.jsp页面。
展示过滤器的配置:
<filter>
<filter-name>enconding</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>enconding</filter-name>
<!---->
<url-pattern>/</url-pattern>
</filter-mapping>
这是使用spring自带的过滤器,<url-pattern>/</url-pattern>注意这行路径。
随后在进行测试时会出现,中文乱码的问题,如下:
提交的请求可以看到是正常的中文,那就说明中文并没有走到过滤器,这时候我们需要把<url-pattern>的配置改为/*
<url-pattern>/*</url-pattern>
中文乱码就解决了。
解释:
这里/代表仅仅过了静态资源(js、html、css、js),而/*则表示可以过了所有请求。