導航:首頁 > 凈水問答 > 編寫過濾器統一編碼

編寫過濾器統一編碼

發布時間:2021-03-13 00:03:48

1. 在HTML頁面寫一個過濾器,實現傳進SERVLET的CLASS文件裡面的編碼機制統一

在頁面的請求裡面傳遞中文時候,會變成亂碼,所以每次請求都需要 request.setCharacterEncoding("utf-8");
周睿羊做很麻煩,在web.xml裡面寫一個添加一個過濾器
<filter>
<filter-name>CharacterFilter</filter-name>
<filter-class>cn.zcq100.util.CharacterFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CharacterFilter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>

然後建立一個類,實現import javax.servlet.Filter;介面
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chian) throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
chian.doFilter(request, response);
}
這樣每次請求的時候都會先通過這個過濾器過濾。

2. 怎麼使用過濾器解決中文亂碼

首先有web.xml中配置
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>net.tom.servlet.filter.EncodingFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
//net.tom.servlet.filter.EncodingFilter是其包和類所在的地址

我給你的DEMO是統一設為utf-8

你可以改一下就可以了

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;
/********************
* 過濾編碼.用於把編碼統一為:utf-8
* @author jiangqh
*
*/
public class EncodingFilter implements Filter {

public EncodingFilter() {
}

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 {

}

}

3. 在java中,使用過濾器編碼過濾亂碼時,過濾器的編碼怎麼寫

public void doFilter(ServletRequest srequest, ServletResponse sresponse,
FilterChain chain) throws IOException, ServletException {
if (null != encoding) {
HttpServletRequest request = (HttpServletRequest)srequest;
HttpServletResponse response = (HttpServletResponse)sresponse;

// 對請求進行編碼設置
request.setCharacterEncoding(encoding); //把請求用指定的方法編碼
response.setContentType("text/html");
response.setCharacterEncoding(encoding); //把返回響應指定 編碼方式
System.out.println("------------過濾編碼-------------" + encoding);
}
// 把處理許可權交給下一個過濾器
chain.doFilter(srequest, sresponse);
}//這是核心方法
正好項目中有用到

4. get請求使用了過濾器修改編碼,為什麼還是亂碼

你對getParameter的修改有問題,去掉編碼的轉碼。Filter運行在Controller之前,Filter已經設置接收編碼為utf8了

5. 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文件中進行配置。

6. eclipse web項目的編碼過濾器,統一設置成UTF-8

過濾器中的內容:
private static final long serialVersionUID =85757L;

private String encoding;

public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {

arg0.setCharacterEncoding(encoding);

arg1.setCharacterEncoding(encoding);

arg2.doFilter(arg0, arg1);

}

public void init(FilterConfig arg0) throws ServletException {

encoding=arg0.getInitParameter("encoding");

}

web.xml文件中 添加過濾器
<filter>
<filter-name>類名</filter-name>
<filter-class>類名全路徑(包括包名)</filter-class>
<init-param><!--參數 與過濾器中的encoding對應 encoding的實際值是utf-8-->
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>

7. 編碼過濾器可以統一java工程中的編碼,但是他是怎麼實現的呢

原理:

當在 web.xml 中注冊了一個 Filter 來對某個 Servlet 程序進行攔截處理時,這個 Filter 就成了 Servlet 容器與該
Servlet 程序的通信線路上的一道關卡,該 Filter 可以對 Servlet 容器發送給 Servlet 程序的請求和 Servlet 程序回送給
Servlet 容器相應進行攔截,可以決定是否將請求繼續傳遞給 Servlet 程序,以及對請求和相應信息是否進行修改。
在一個 web 應用程序中可以注冊多個 Filter 程序,每個 Filter 程序都可以對一個或一組 Servlet 程序進行攔截。
若有多個 Filter 程序對某個 Servlet 程序的訪問過程進行攔截,當針對該 Servlet 的訪問請求到達時,web 容器將把多個 Filter 程序組合成一個 Filter 鏈(過濾器鏈)。Filter 鏈中各個 Filter 的攔截順序與它們在應用程序的 web.xml 中映射的順序一致。

實現步驟:
首先編寫Filter的實現類程序。
其次,需要把實現的Filter添加到Web應用程序中,也就是說,需要在Web部署描述文件Web.xml中聲明該Filter。
最後,將相關聯的Filter與應用程序一起打包並部署。

8. 有了filter,還需要在界面上設置編碼嗎

用Filter吧,它的名字是過濾器,可以批量攔截修改servlet的請求和響應。

我們編寫一個EncodingFilter.java,來批量設置請求編碼。

package anni; 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 EncodingFilter implements Filter {

public void init(FilterConfig config) throws ServletException {}

public void destroy() {}

public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException, ServletException {

request.setCharacterEncoding("gb2312");
chain.doFilter(request, response);
}

}
在此EncodingFilter實現了Filter介面,Filter介面中定義的三個方法都要在EncodingFilter中實現,其中doFilter()的代碼實現主要的功能:為請求設置gb2312編碼並執行chain.doFilter()繼續下面的操作。
與servlet相似,為了讓filter發揮作用還需要在web.xml進行配置。

<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>anni.EncodingFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

filter標簽部分定義使用的過濾器,filter-mapping標簽告訴伺服器把哪些請求交給過濾器處理。這里的/*表示所有請求,/表示根路徑,*(星號)代表所有請求,加在一起就變成了根路徑下的所有請求。
這樣,所有的請求都會先被EncodingFilter攔截,並在請求里設置上指定的gb2312編碼。

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

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

閱讀全文

與編寫過濾器統一編碼相關的資料

熱點內容
edi證書分類 瀏覽:349
gl41hyy型過濾器 瀏覽:757
蘭州高揚程污水泵多少錢 瀏覽:681
怎麼給倉鼠製作小的飲水機 瀏覽:977
凈水器怎麼加熱水的 瀏覽:474
吸塵器用什麼樣的濾芯 瀏覽:699
污水處理廠如何治理污泥 瀏覽:138
上虞偷建化工廠排污水怎麼舉報 瀏覽:478
前置凈水器為什麼漏水 瀏覽:343
收廢水銀 瀏覽:347
核電廠的廢水溫度有多少度 瀏覽:520
中山有機污水處理哪裡有做 瀏覽:563
陶瓷板過濾容易堵 瀏覽:166
純水機和超濾機哪個好 瀏覽:58
水處理領導視察如何介紹 瀏覽:1000
凈水處理公司在五行中屬什麼五行 瀏覽:647
沁園凈水機三個濾芯大概多少錢 瀏覽:673
iii類污水是什麼意思 瀏覽:269
台式飲水機不製冷怎麼修 瀏覽:429
江蘇污水環保設備多少錢 瀏覽:246