적절한 상황 -> jsp에서 행동으로 전달할 때 gbk를 예로 들어 보자.
1. 변환 인코딩을위한 필터를 만듭니다
파일 위치의 예 : src.util.setcharacterencodingfilter.java
코드 사본은 다음과 같습니다.
패키지 유틸리티;
import java.io.ioexception;
javax.servlet.filter import;
javax.servlet.filterchain import;
javax.servlet.filterconfig import;
javax.servlet.servletexception import;
javax.servlet.servletrequest import;
Javax.Servlet.ServletResponse 가져 오기;
Javax.Servlet.UnaVailableException 가져 오기;
/**
* 문자 인코딩을 구문 분석에 사용하도록 설정하는 필터 예제 필터
* 들어오는 요청
*/
공개 클래스 setcharacterencodingfilter는 필터 {
/**
*이 필터를 사용하지 마십시오.
*/
공개 무효 파괴 () {
}
/**
* 사용될 문자 인코딩을 선택하고 설정 (지정된 경우)
*이 요청에 대한 요청 매개 변수 해석.
*/
공개 void dofilter (Servletrequest 요청, ServletRepponse 응답,
FilterChain 체인) IoException, servleTexception {
request.setcharacterencoding ( "gbk");
// 컨트롤을 다음 필터로 전달합니다
Chain.dofilter (요청, 응답);
}
public void init (FilterConfig FilterConfig) servletexception {
}
}
2. Struts의 FilterDispatcher 매핑 전에 Web.xml을 수정하고 2 개의 필터를 추가하십시오.
코드 사본은 다음과 같습니다.
<? xml 버전 = "1.0"encoding = "utf-8"?>
<Web-App 버전 = "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 ">
<리스너>
<Leater-Class> org.springframework.web.context.contextloaderListener </Learger-Class>
</Listener>
<필터>
<filter-name> 문자 인코딩 설정 </filter-name>
<filter-class> util.setcharacterencodingfilter </filter-class>
</필터>
<필터 매핑>
<filter-name> 문자 인코딩 설정 </filter-name>
<Url-pattern>/*</url-pattern>
</필터 매핑>
<필터>
<filter-name> struts-cleanup </filter-name>
<filter-class> org.apache.struts2.dispatcher.actionContextCleanup </filter-class>
</필터>
<필터 매핑>
<filter-name> struts-cleanup </filter-name>
<Url-pattern>/*</url-pattern>
</필터 매핑>
<필터>
<filter-name> struts2 </filter-name>
<filter-class> org.apache.struts2.dispatcher.filterdispatcher </filter-class>
</필터>
<필터 매핑>
<filter-name> struts2 </filter-name>
<Url-pattern>/*</url-pattern>
</필터 매핑>
</web-app>
3. JSP 헤더가 있어야합니다
<%@ page language = "java"pageencoding = "gbk"%>
4. struts.xml에서 기본 인코딩 설정을 수정하십시오
코드 사본은 다음과 같습니다.
<struts>
<constant name = "struts.i18n.encoding"value = "gbk"> </constant>
...
...
...
</struts>
기본적으로 이것은 대부분의 들어오는 캐릭터의 문제를 해결할 수 있습니다.
추신 : 데이터베이스가 MySQL과 같이 garbled 문자를 추출하면 데이터베이스의 문자가 GBK인지 확인하고 연결 문자열은 문자 인코딩을 지정합니다.
<속성 이름 = "url"value = "jdbc : mysql : // localhost/database? useUnicode = true & characterencoding = gbk"> </property>