请求中文乱码
- 在web.xml中配置spring自带的过滤器
org.springframework.web.filter.CharacterEncodingFilter
,只可以解决请求
| |
| <filter> |
| <filter-name>encoding</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> |
| |
- 也可以自己写一个过滤器,注册在web.xml中,以下代码过滤器可以解决请求和响应的中文乱码问题
| |
| |
| |
| public class GenericEncodingFilter implements Filter { |
| |
| @Override |
| public void destroy() { |
| } |
| |
| @Override |
| public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { |
| |
| HttpServletResponse myResponse=(HttpServletResponse) response; |
| myResponse.setContentType("text/html;charset=UTF-8"); |
| |
| |
| HttpServletRequest httpServletRequest = (HttpServletRequest) request; |
| |
| HttpServletRequest myrequest = new MyRequest(httpServletRequest); |
| chain.doFilter(myrequest, response); |
| } |
| |
| @Override |
| public void init(FilterConfig filterConfig) throws ServletException { |
| } |
| |
| } |
| |
| |
| class MyRequest extends HttpServletRequestWrapper { |
| |
| private HttpServletRequest request; |
| |
| private boolean hasEncode; |
| |
| public MyRequest(HttpServletRequest request) { |
| super(request); |
| this.request = request; |
| } |
| |
| |
| @Override |
| public Map getParameterMap() { |
| |
| String method = request.getMethod(); |
| if (method.equalsIgnoreCase("post")) { |
| |
| try { |
| |
| request.setCharacterEncoding("utf-8"); |
| return request.getParameterMap(); |
| } catch (UnsupportedEncodingException e) { |
| e.printStackTrace(); |
| } |
| } else if (method.equalsIgnoreCase("get")) { |
| |
| Map<String, String[]> parameterMap = request.getParameterMap(); |
| if (!hasEncode) { |
| for (String parameterName : parameterMap.keySet()) { |
| String[] values = parameterMap.get(parameterName); |
| if (values != null) { |
| for (int i = 0; i < values.length; i++) { |
| try { |
| |
| values[i] = new String(values[i] |
| .getBytes("ISO-8859-1"), "utf-8"); |
| } catch (UnsupportedEncodingException e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| } |
| hasEncode = true; |
| } |
| return parameterMap; |
| } |
| return super.getParameterMap(); |
| } |
| |
| |
| @Override |
| public String getParameter(String name) { |
| Map<String, String[]> parameterMap = getParameterMap(); |
| String[] values = parameterMap.get(name); |
| if (values == null) { |
| return null; |
| } |
| return values[0]; |
| } |
| |
| |
| @Override |
| public String[] getParameterValues(String name) { |
| Map<String, String[]> parameterMap = getParameterMap(); |
| String[] values = parameterMap.get(name); |
| return values; |
| } |
| } |
响应
-
//produces:指定响应体返回类型和编码@RequestMapping(value = "/json1",produces = "application/json;charset=utf-8")
-
使用spring自带的响应配置,可以在springmvc的配置文件上添加一段消息StringHttpMessageConverter转换配置!
| <mvc:annotation-driven> |
| <mvc:message-converters register-defaults="true"> |
| <bean class="org.springframework.http.converter.StringHttpMessageConverter"> |
| <constructor-arg value="UTF-8"/> |
| </bean> |
| <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> |
| <property name="objectMapper"> |
| <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"> |
| <property name="failOnEmptyBeans" value="false"/> |
| </bean> |
| </property> |
| </bean> |
| </mvc:message-converters> |
| </mvc:annotation-driven> |
| 错误翻译:初始化Bean |
| org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter |
| 失败,导致@RequestMapping不能用 |
| Caused by中的信息:工程中缺少依赖com/fasterxml/jackson/(caused by是导致该错误的原因,项目报错时重点看caused by) |
可能需要导入依赖
| |
| <dependency> |
| <groupId>com.fasterxml.jackson.core</groupId> |
| <artifactId>jackson-databind</artifactId> |
| <version>2.9.4</version> |
| </dependency> |
| <dependency> |
| <groupId>com.fasterxml.jackson.core</groupId> |
| <artifactId>jackson-annotations</artifactId> |
| <version>2.9.4</version> |
| </dependency> |
| <dependency> |
| <groupId>com.fasterxml.jackson.core</groupId> |
| <artifactId>jackson-core</artifactId> |
| <version>2.9.4</version> |
| </dependency> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix