程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> JSP用過濾器解決request getParameter中文亂碼問題,requestparameter

JSP用過濾器解決request getParameter中文亂碼問題,requestparameter

編輯:關於JSP

JSP用過濾器解決request getParameter中文亂碼問題,requestparameter


(1)客戶端的數據一般是通過HTTP GET/POST方式提交給服務器,在服務器端用request.getParameter()讀取參數時,很容易出現中文亂碼現象。

(2)用過濾器解決request中文亂碼問題。

(3)代碼如下:

package my; 

import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 

public class ChineseFilter implements Filter { //定義了一個過濾器 實現Filter接口 

private FilterConfig config = null; 

public void init(FilterConfig config) throws ServletException { 
this.config = config; 
} 

public void destroy() { 
config = null; 
} 

public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain) throws IOException, ServletException 
{ 
request.setCharacterEncoding("GB2312"); 
chain.doFilter(request, response); //把過濾後的request對象轉發給下一個過濾器處理 
} 
}

(4)部署過濾器。編輯WEB-INF\web.xml文件,添加以下內容:

<filter> 
<filter-name>cf</filter-name> 
<filter-class>my.ChineseFilter</filter-class> 
</filter> 
<filter-mapping> 
<filter-name>cf</filter-name> 
<url-pattern>/*</url-pattern> 
<dispatcher>REQUEST</dispatcher> 
<dispatcher>FORWARD</dispatcher> 
<dispatcher>INCLUDE</dispatcher> 
</filter-mapping>

這裡的<dispatcher></dispatcher>主要是配合RequestDispatcher使用。

1.取值為REQUEST時 表示有請求直接來自客戶端時,過濾器才能被激活,如果請求是來自RequestDispatcher.forward時不激活;

2.取值為FORWARD時 表示如果請求是來自RequestDispatcher.forward時此過濾器才激活;

3.取值為INCLUDE時 表示如果請求是來自RequestDispatcher.include時此過濾器才激活;

4.取值為ERROR時 表示如果請求是來自RequestDispatcher使用“錯誤信息頁”時此過濾器才激活;

5.默認為REQUEST。

(5)創建一個jsp頁面檢驗

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>無標題文檔</title> 
</head> 

<body> 
<% 
String s=request.getParameter("data"); 
out.print(s); 
%> 
</body> 
</html>

(6)OK!到此結束 望你成功!


jsp頁面requestgetParameter("");得到中文亂碼,解決亂碼問題後,判斷是否為空時報錯,應該怎更改?

第一種方法
request.setCharacterEncoding("GBK");

第二種方法
String a=request.getParameter("a");
if(a!=null){
a=new String(a.getBytes("ISO8859_1"),"GBK");
}
 

requestgetparameter()出現中文亂碼

JSP中用request.getParameter提取的中文字符如果是亂碼,則我們只需在處理該中文字符的jsp文件中加入如下代碼即可.
<%
request.setCharacterEncoding("GBK/GB2312");
//設置編碼格式為中文
String title = request.getParameter("title");
//括號內的參數可有可無,但雙引號不可少
out.print(title);
%>
注意:上段代碼必須加在<title></title>標記之間
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved