導航:首頁 > 凈水問答 > jsp過濾器處理中文字元編碼

jsp過濾器處理中文字元編碼

發布時間:2021-03-09 16:01:41

1. 如何使用過濾器解決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>

配置完後運行一下項目就不再看到那煩人的亂碼了!

2. 對付jsp亂碼的亂碼過濾器要怎麼添加啊

正常頁面間傳輸 把編碼統一 utf-8 或 gbk 其實不會出現亂碼問題。
如果在資料庫提取數據傳給頁面,可能會出現亂碼問題。這時可在struts中設置編碼。
或加一個過濾器。過濾器具體操作如下:
1:在你寫JAVA類的地方新建個 類。filter 內容:
package com.yourcompany.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 filter implements Filter{

public void destroy() {
}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
chain.doFilter(request, response);
}

public void init(FilterConfig arg0) throws ServletException {
}

}
2:在web.xml添加 映射文件(註:<filter-class>寫你過濾器類的路徑</filter-class>)
<filter>
<filter-name>fileter</filter-name>
<filter-class>com.yourcompany.filter.filter</filter-class>
</filter>
<filter-mapping>
<filter-name>fileter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

3.如還有不明白的 HI我

3. JSP中文編碼 我編寫的過濾器似乎沒有實現servlet的過濾功能。

額。。。
你是在servlet中直接輸出的啊。。
哪有什麼jsp頁面,還有就是你的過濾器只設置了request編碼,有設置response編碼麽?
還有就是要將過濾器映射到要過濾的文件。。。。

4. 關於java過濾器解決中文亂碼的

因為你襲遺漏了重要的一步。正確的方法如下:

if(encoding!=null){
//設置request字元編碼
request.setCharacterEncoding(encoding);
//設置response字元編碼
response.setContentType("text/html;charset="+encoding);
response.setCharacterEncoding(encoding);
}
//傳遞給下一個過濾器
chain.doFilter(request,response);

5. JSP過濾器過濾中文亂碼

response.setContentType("text/html;charset=gbk");試試、過濾器有時候也不管用的。你要的話,請追問。。

6. jsp用過濾器解決中文亂碼問題的方法

定義一過濾器,實現Filtter介面
public
class
EncodingFilter
implements
Filter
{
@Override
public
void
destroy()
{
//
TODO
Auto-generated
method
stub
}
@Override
public
void
doFilter(ServletRequest
req,
ServletResponse
resp,
FilterChain
chain)
throws
IOException,
ServletException
{
//
TODO
Auto-generated
method
stub
HttpServletRequest
request=(HttpServletRequest)req;
HttpServletResponse
response=(HttpServletResponse)resp;
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
chain.doFilter(req,
resp);
}
@Override
public
void
init(FilterConfig
filterConfig)
throws
ServletException
{
//
TODO
Auto-generated
method
stub
}
}
web.xml文件中,配置過濾器
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>pers.filter.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
以上這篇jsp用過濾器解決中文亂碼問題的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

7. 如何配置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>

8. jsp頁面中文亂碼,怎麼解決

jsp頁面也需要設置轉碼的:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
response.setContentType("text/html;charset=UTF-8");

處理文件:(.java)
轉碼的三種方法:
1、 接受參數時進行編碼轉換
String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8"); 這樣的話,每一個參數都必須這樣進行轉碼。很麻煩。但確實可以拿到漢字。
2、在請求頁面上開始處,執行請求的編碼代碼, request.setCharacterEncoding("UTF-8"),把提交內容的字元集設為UTF-8。這樣的話,接受此參數的頁面就不必在轉碼了。直接使用
String str = request.getParameter("something");即可得到漢字參數。但每頁都需要執行這句話。
這個方法也就對post提交的有效果,對於get提交和上傳文件時的enctype="multipart/form-data"是無效的。稍後下面單獨對這個兩個的亂碼情況再進行說明。
3、為了避免每頁都要寫request.setCharacterEncoding("UTF-8"),建議使用過濾器對所有jsp進行編碼處理。

9. JSP Filter過濾器設置編碼問題。。。

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;

importorg.omg.CORBA.Request;

{

@Override
publicvoiddestroy(){
//TODOAuto-generatedmethodstub

}

@Override
publicvoiddoFilter(ServletRequestreq,ServletResponseres,
FilterChainchain)throwsIOException,ServletException{
//TODOAuto-generatedmethodstub
System.out.println("字元編碼過濾器");

HttpServletRequestrequest=(HttpServletRequest)req;
HttpServletResponseresponse=(HttpServletResponse)res;

request.setCharacterEncoding("UTF-8");
chain.doFilter(request,response);
}

@Override
publicvoidinit(FilterConfigconfig)throwsServletException{
//TODOAuto-generatedmethodstub
}

}

以上就是Filter過濾器的代碼, 都設置成UTF-8 支持中文, 寫好了以上代碼之後,要在web.xml文件中進行配置。

10. jsp頁面經過濾器過濾後中文成為亂碼

統一使用utf-8試試看

閱讀全文

與jsp過濾器處理中文字元編碼相關的資料

熱點內容
帝豪4s店換汽油濾芯多少錢 瀏覽:125
廢水處理廠工作危害 瀏覽:985
環氧樹脂增強玻璃鋼的拉伸強度 瀏覽:538
污水井什麼情況抽排 瀏覽:27
樹脂仿陶瓷材料 瀏覽:793
s榮威350空氣過濾芯 瀏覽:855
杭州過濾芯多少錢一個 瀏覽:346
季銨鹽對超濾影響 瀏覽:601
鉀離子對超濾膜管的影響 瀏覽:835
飲水機怎麼燒到六十度就不燒了 瀏覽:307
濾芯怎麼畫圖 瀏覽:231
ro膜100g和50g的區別 瀏覽:404
可用蒸餾法提取的精油 瀏覽:821
蘇州高壓風機進口過濾器 瀏覽:808
電泳污水中鹽分 瀏覽:74
水的深度處理和回用技術研究 瀏覽:297
第三代名爵6的空調濾芯在哪裡 瀏覽:173
反滲透膜混膠 瀏覽:933
福建含銻污水處理價格怎麼樣 瀏覽:47
湖水可以直接進去超濾膜 瀏覽:709