JSP解决向Action传参乱码问题

来源:互联网 发布:poi 岛风go 网络设置 编辑:程序博客网 时间:2024/06/07 18:41

1:可以写一个字符过滤器来解决

 

package com.capinfotech.filter;import javax.servlet.*;import javax.servlet.http.*;import java.io.*;import java.util.*;public class SetCharacterEncodingFilter extends HttpServlet implements Filter {protected String encoding = null;protected FilterConfig filterConfig = null;protected boolean ignore = true;// Handle the passed-in FilterConfigpublic void init(FilterConfig filterConfig) throws ServletException {this.filterConfig = filterConfig;this.encoding = filterConfig.getInitParameter("encoding");String value = filterConfig.getInitParameter("ignore");if (value == null) {this.ignore = true;} else if (value.equalsIgnoreCase("true")) {this.ignore = true;} else if (value.equalsIgnoreCase("yes")) {this.ignore = true;} else {this.ignore = false;}}// Process the request/response pairpublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {// Conditionally select and set the character encoding to be usedif (ignore || (request.getCharacterEncoding() == null)) {String encoding = selectEncoding(request);if (encoding != null) {request.setCharacterEncoding(encoding);response.setCharacterEncoding(encoding);}}// Pass control on to the next filterchain.doFilter(request, response);}protected String selectEncoding(ServletRequest request) {return (this.encoding);}// Clean up resourcespublic void destroy() {this.encoding = null;this.filterConfig = null;}}

 

在web.xml里进行配置,一定要配置在Struts2的前面

<filter>    <filter-name>setcharacterencodingfilter</filter-name><filter-class>com.capinfotech.filter.SetCharacterEncodingFilter</filter-class>    <init-param>      <param-name>encoding</param-name>      <param-value>UTF-8</param-value>    </init-param>    <init-param>      <param-name>ignore</param-name>      <param-value>true</param-value>    </init-param> </filter>  <filter-mapping>    <filter-name>setcharacterencodingfilter</filter-name>    <url-pattern>/*</url-pattern> </filter-mapping> 

 

2:修改Tomcat下面conf下的server.xml的内容

 <Connector port="8088" protocol="HTTP/1.1"                connectionTimeout="20000"                redirectPort="8443"                useBodyEncodingForURI="true" URIEncoding="utf-8"               />


增加useBodyEncodingForURI="true" URIEncoding="utf-8"

 

3:在struts.xml里或者struts.properties增加struts.i18n.encoding=UTF-8

原创粉丝点击