servlet過濾器亂碼
㈠ Servlet與Servlet之間頁面傳遞的中文亂碼問題,怎麼解決
首先保證所有文件編碼一致
如果還有就寫個過濾器吧,一勞永逸
三、字元編碼的過濾器
import javax.servlet.*;
import java.io.IOException;
/**
* 用於設置 HTTP 請求字元編碼的過濾器,通過過濾器參數encoding指明使用何種字元編碼,用於處理Html Form請求參數的中文問題
*/
public class CharacterEncodingFilter
implements Filter
{
protected FilterConfig filterConfig = null;
protected String encoding = "";
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException
{
if(encoding != null)
servletRequest.setCharacterEncoding(encoding);
filterChain.doFilter(servletRequest, servletResponse);
}
public void destroy()
{
filterConfig = null;
encoding = null;
}
public void init(FilterConfig filterConfig) throws ServletException
{
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
}
}
具體介紹和使用方法教程看這里
http://blog.chinaunix.net/u1/55983/showart_713077.html
㈡ 關於java過濾器解決中文亂碼的
因為你遺漏襲了重要的一步。正確的方法如下:
if(encoding!=null){
//設置request字元編碼
request.setCharacterEncoding(encoding);
//設置response字元編碼
response.setContentType("text/html;charset="+encoding);
response.setCharacterEncoding(encoding);
}
//傳遞給下一個過濾器
chain.doFilter(request,response);
㈢ 為什麼配置的亂碼過濾器解決不了亂碼,求大神解決
因為你遺漏了重要的一步。正確的方法如下內: if(encoding!=null){ //設置容request字元編碼 request.setCharacterEncoding(encoding); //設置response字元編碼 response.setContentType("text/html;charset="+encoding); response.setCharacterEnco...
㈣ 如何使用過濾器解決jsp亂碼
打開web項目,在src中新建一個類,規范一下編程習慣我們就把它放到一個包中去,項目右鍵新建「class」,包名填寫例如「com.test.struts.filters」(習慣是域名反轉),文件名首字母大寫,例如「SetCharacterEncoding」。下面是類中的代碼,實際上就是實現了Filter介面,重寫了一下doFilter函數。
packagecom.test.hibernate.filters;
importjava.io.IOException;
importjavax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;{
/*(non-Javadoc)
*@seecom.sun.net.httpserver.Filter#doFilter(com.sun.net.httpserver.HttpExchange,com.sun.net.httpserver.Filter.Chain)
*/
publicvoiddoFilter(ServletRequestsrequest,ServletResponsesresponse,
FilterChainchain)throwsIOException,ServletException{
HttpServletRequestrequest=(HttpServletRequest)srequest;
HttpServletResponseresponse=(HttpServletResponse)sresponse;
//注意這里請求和響應都強制轉化了一下
request.setCharacterEncoding("UTF-8"); //設置請求編碼「UTF-8」比較通用
response.setCharacterEncoding("UTF-8"); //設置相應編碼
chain.doFilter(srequest,sresponse);//轉發請求
}
publicvoiddestroy(){
//TODOAuto-generatedmethodstub
}
publicvoidinit(FilterConfigarg0)throwsServletException{
//TODOAuto-generatedmethodstub
}
}
web配置文件配置filter文件,打開web.xml文件,在<web-app></web-app>之間加入如下配置,<filter></filter>是設置類路徑的,<filter-mapping></filter-mapping>是用來映射指定路徑文件到filter的。
<filter>
<filter-name>setEncoding</filter-name>
<filter-class>com.test.struts.filters.SetCharacterEncodingFilter</filter-class>
<!--這里還可以使用初始變數
<init-param>
<param-name>name</param-name>
<param-value>value</param-value>
</init-param>
再在SetCharacterEncoding.java的定義一個privateStringencoding=null;
在init函數中加一句this.encoding=filterConfig.getInitParameter("encoding");
-->
</filter>
<filter-mapping>
<filter-name>setEncoding</filter-name><!--這個名稱和上面的要相同-->
<url-pattern>/*</url-pattern><!--所有文件-->
</filter-mapping>
配置完後運行一下項目就不再看到那煩人的亂碼了!
㈤ 求助servlet中文亂碼如何解決。。。
網上的方法,要對應你的不同種情況的,首先保證jsp中編碼是中文的,然後保證伺服器回傳的編碼模式也是一致的,最後把工作空間編碼改成一致就可以
㈥ servlet獲取JSP頁面內容為亂碼怎麼解決
jsp提交數據有兩種方式,一種是post,一種是get,兩種不同的提交方式對中文的處理也不同。
post提交方式只需在servlet中設置好request.setCharacterEncoding("編碼集"); 註:編碼集按照您的需求寫,可以是UTF-8,也可以是GBK或GB2312.
get提交方式則需要轉碼,因為tomcat伺服器編碼集為ISO8859-1,需要手動轉碼,下方代碼是我個人編寫的一個工具類,希望對你有幫助!另外jsp傳遞中文如果用get提交方式,在前台對中文也要
(StringoldString){
StringnewString="";
try{
newString=newString(oldString.getBytes("ISO-8859-1"),"UTF-8");
}catch(UnsupportedEncodingExceptione){
e.printStackTrace();
}
returnnewString;
}如既有可能有post提交方式,也有可能有get提交方式,可以採用修改tomcat的server.xml文件,或採用過濾器,修改server.xml文件方式為:
<ConnectorURIEncoding="utf-8"connectionTimeout="20000"port="8080"protocol="HTTP/1.1"redirectPort="8443"/>
㈦ 在servlet中獲取頁面中文數據時變成亂碼怎麼辦
實在不行,用過濾器解決中文亂碼問題
㈧ 如何配置Filter過濾器處理JSP中文亂碼
注意問題:在學慣用selvert的過濾器filter處理中文亂碼時,在filter配置初始化時用了utf-8處理中文亂碼,而在提交的jsp頁面中卻用了gbk。雖然兩種都可以出來中文亂碼,但是卻造成了處理亂碼的格式不一致。所以編譯出錯。
解決方法:所有地方都用utf-8或gbk
//過濾器類
CharactorFilter.jsp
package cn.com.Filter;
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;
public class CharactorFilter implements Filter { //繼承Filter類
//字元編碼
String encoding=null;
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if(encoding!=null){
//設置request字元編碼
request.setCharacterEncoding(encoding);
//設置response字元編碼
response.setContentType("text/html;charset="+encoding);
}
//傳遞給下一個過濾器
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
//獲取初始化參數
encoding=filterConfig.getInitParameter("encoding");
}
public void destroy() {
// TODO Auto-generated method stub
encoding=null;
}
}
web.xml
<filter> <!--注意這里是filter,不要配置成servlet-->
<filter-name>CharactorFilter</filter-name> <!--過濾器名稱-->
<filter-class>cn.com.Filter.CharactorFilter</filter-class> <!--過濾器的完整類名-->
<init-param> <!--初始化參數-->
<param-name>encoding</param-name> <!--參數名稱-->
<param-value>utf-8</param-value> <!--參數值-->
</init-param>
</filter>
<filter-mapping> <!--過濾器映射-->
<filter-name>CharactorFilter</filter-name><!--過濾器名稱-->
<url-pattern>/*</url-pattern><!--URL映射,給所有頁面處理亂碼-->
</filter-mapping>
㈨ Java 亂碼問題 怎樣寫一個過濾器文件來處理亂碼問題啊
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.http.HttpServletRequest;public class PageEncodeFilter implements Filter { private FilterConfig fConfig;
private String encode;
public void destroy() {
this.fConfig = null;
this.encode = null;
} public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain fc) throws IOException, ServletException {
HttpServletRequest hsr = (HttpServletRequest)arg0;
hsr.setCharacterEncoding(this.encode);
fc.doFilter(arg0, arg1);
} public void init(FilterConfig fConfig) throws ServletException {
this.fConfig = fConfig;
this.encode = this.fConfig.getInitParameter("encode");
}}然後到.xml 下配置 <filter>
<filter-name>PageEncodeFilter</filter-name>
<filter-class>com.popedom.util.PageEncodeFilter</filter-class>
<init-param>
<param-name>encode</param-name>
<param-value>gb2312</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>PageEncodeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
㈩ jsp 中的servlet如何解決亂碼問題啊
1. 在web工程中創建一個實現javax.servlet.Filter 的字元過濾器,如下:
------------------------------------------------------------------
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class EncodingFilter implements javax.servlet.Filter {
private String encoding = "GBK";
public String getEncoding() {
return encoding;
}
public void setEncoding(String encoding) {
this.encoding = encoding;
}
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws java.io.IOException, ServletException {
request.setCharacterEncoding(encoding);
chain.doFilter(request, response);
}
public void init(FilterConfig arg0) throws ServletException {
}
}
----------------------------------------------------------------
2. 在web.xml 文件中加入以下代碼
<!-- 中文亂碼過濾處理 -->
<filter>
<filter-name>encoding</filter-name>
<filter-class>
EncodingFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
-----------------------------------------------------------------
以上應該就可以解決中文亂碼問題了.