在做一个全局搜索的时候,遇到一个问题,怎么搜索都搜索不到,最后调试发现是后台接收的参数是乱码,就去百度了一下,发现时tomcat配置文件中的问题,但是这个问题编码问题springmvc也去解决了.
第一种方法
就是不修改tomcat配置,在项目的web.xml文件中去配置一个过滤器,过滤器代码如下(这里我配置的servlet是加上了一个请求地址后缀,只要带有这个后缀的请求全部去请求到springmvc的核心拦截器中的servlet中,为什么设置后缀呢,因为请求访问静态页面的请求不能去拦截,同理访问静态资源的请求不需要经过这个设置编码的过滤器,所以设置了后缀,后缀符合的经过这个过滤器.)
<servlet>
<servlet-name>springMvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:SpringMVC.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springMvc</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
<filter>
<filter-name>characterEncoding</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>characterEncoding</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
第二种方法
就是去修改tomcat的配置文件,打开tomcat的server.xml文件,找到下面的这行代码
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
然后在这一行代码中的标签中插入一个属性 URIEncoding="UTF-8" ,修改后是下面的形式
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>