struts2 중국어 디코딩 해결 방법 공유

적합성 -> jsp에서 action으로 전송될 때의 디코딩 상황, 여기서 GBK를 예로 들면 1.인코딩을 변환하는 filter 파일 위치를 만듭니다. 예: src.util.SetCharacterEncodingFilter.java

package util;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.UnavailableException;

/**
 * Example filter that sets the character encoding to be used in parsing the
 * incoming request
 */
public class SetCharacterEncodingFilter implements Filter {

    /**
     * Take this filter out of service.
     */
    public void destroy() {
    }
    /**
     * Select and set (if specified) the character encoding to be used to
     * interpret request parameters for this request.
     */
    public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain)throws IOException, ServletException {

    request.setCharacterEncoding("gbk");

    //
    chain.doFilter(request, response);
    }

    public void init(FilterConfig filterConfig) throws ServletException {
    }
}

2. 웹을 수정한다.xml,struts의 FilterDispatcher 매핑 전에 2개의 filter를 추가합니다

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 <listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
    <filter>
  <filter-name>Set Character Encoding</filter-name>
  <filter-class>util.SetCharacterEncodingFilter</filter-class>
 </filter>
 <filter-mapping>
     <filter-name>Set Character Encoding</filter-name>
     <url-pattern>/*</url-pattern>
 </filter-mapping>

    <filter>
        <filter-name>struts-cleanup</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts-cleanup</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

   

   
 <filter>
  <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
 </filter>
  <filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
</web-app>
3. 당신의 JSP 헤더에는 <%@ page language='java'pageEncoding='GBK'%>4가 있어야 합니다.struts.xml에서 기본 인코딩 설정을 수정합니다

<struts>
 <constant name="struts.i18n.encoding" value="gbk"></constant>

...
...
...

</struts>

기본적으로 이렇게 하면 대부분의 문자 난자 문제를 해결할 수 있습니다. PS: 데이터베이스에서 문자 난자를 추출하는 경우, 예를 들어 mysql, 데이터베이스에 있는 문자가gbk인지 확인하고 연결 문자열은 문자 인코딩을 지정합니다.

좋은 웹페이지 즐겨찾기