乱码演示
表单
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Spring乱码</title> </head> <body> <form action="${pageContext.request.contextpath}/student/students" method="post"> <input type="text" name="name"> <input type="submit"> </form> </body> </html>
控制层
package com.lingaolu.controller; import com.lingaolu.bean.Student; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; @Controller @RequestMapping("/student") public class StudentController { @PostMapping(value="/students") public String test(String name,Model model){ System.out.println("传过来的name"+name); model.addAttribute("msg",name); return "hello"; } }
返回的视图
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Spring乱码</title> </head> <body> ${msg} </body> </html>
启动测试
解决方案
方式1:自己写过滤器
过滤器
package com.lingaolu.filter; import javax.servlet.*; import java.io.IOException; public class MyEncondingFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws servletexception { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, servletexception { servletRequest.setCharacterEncoding("utf-8"); servletResponse.setCharacterEncoding("utf-8"); filterChain.doFilter(servletRequest,servletResponse); } @Override public void destroy() { } }
web.xml中注册filter
<filter> <filter-name>myEncodingFilter</filter-name> <filter-class>com.lingaolu.filter.MyEncondingFilter</filter-class> </filter> <filter-mapping> <filter-name>myEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
重启测试,解决
方式2:使用SpringMvc的过滤器
直接在web.xml中注册SpringMvc的处理乱码的过滤器
<filter> <filter-name>encodingFilter</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>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
重启测试,解决
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。