企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] # 中文问题 在Spring MVC中处理中文问题和Filter处理中文问题是一样的手段 ## 步骤 1 : 先运行,看到效果,再学习 先将完整的项目(向老师要相关资料),配置运行起来,确认可用之后,再学习做了哪些步骤以达到这样的效果。 ## 步骤 2 : 模仿和排错 在确保可运行项目能够正确无误地运行之后,再严格照着教程的步骤,对代码模仿一遍。 模仿过程难免代码有出入,导致无法得到期望的运行结果,此时此刻通过比较**正确答案** ( 可运行项目 ) 和自己的代码,来定位问题所在。 采用这种方式,**学习有效果,排错有效率**,可以较为明显地提升学习速度,跨过学习路上的各个槛。 ## 步骤 3 : 效果 访问地址提交中文 http://127.0.0.1:8080/springmvc/addProduct.jsp 提交数据 ![](https://box.kancloud.cn/7147345af864ed2ee0102adf86db531b_774x148.png) ## 步骤 4 : Filter 修改web.xml ~~~ <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>springmvc</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <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> </web-app> ~~~ ## 步骤 5 : addProduct.jsp 为form 设置method="post" ~~~ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form action="addProduct" method="post"> 产品名称:<input type="text" name="name" value=""><br> 产品价格:<input type="text" name="price" value=""><br> <input type="submit" value="增加商品"> </form> </body> </html> ~~~ > 某些浏览器,会对get方式提交的数据进行二次编码,导致服务端取出数据无法正确解码,所以尽量使用post方式,确保中文可以正常处理。 ## 步骤 6 : 测试 重启tomcat,访问页面 http://127.0.0.1:8080/springmvc/addProduct.jsp 提交数据 ![](https://box.kancloud.cn/7147345af864ed2ee0102adf86db531b_774x148.png) 注: SpringMVC会自动检测类发生的变化,但是web.xml做的改动还是必须重启tomcat才可以看到效果 ## 常见问题 1. 对于filter标签,和CharacterEncodingFilter不懂其作用 > 相对于自己手动实现Filter,springMVC是帮我们完成了实现Filter的相关方法: HttpServletRequest request = (HttpServletRequest) req; request.setCharacterEncoding("UTF-8"); 我们只需要进行xml配置即可