1. 程式人生 > >Servlet編碼過濾器(Post和get方式都支援)

Servlet編碼過濾器(Post和get方式都支援)

package com.pdsu.filter;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

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;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;

/**
 * 類說明:字元過濾器
 * 
 * @author 作者: LiuJunGuang
 * @version 建立時間:2011-11-18 下午07:05:51
 */
public class CharacterEncodingFilter implements Filter {
	private String encode = "UTF-8";// 預設UTF-8編碼

	public void init(FilterConfig filterConfig) throws ServletException {
		String encoding = filterConfig.getInitParameter("encode");
		if (encoding != null) {
			encode = encoding;
		}
	}

	public void doFilter(ServletRequest req, ServletResponse resp,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest) req;
		HttpServletResponse response = (HttpServletResponse) resp;
		// 設定request編碼
		request.setCharacterEncoding(encode);
		// 設定相應資訊
		response.setContentType("text/html;charset=" + encode);
		response.setCharacterEncoding(encode);
		chain.doFilter(new CharacterEncodingRequest(request), response);
	}

	public void destroy() {

	}

}

/**
 * 對Get方式傳遞的請求引數進行編碼
 */
class CharacterEncodingRequest extends HttpServletRequestWrapper {
	private HttpServletRequest request = null;

	public CharacterEncodingRequest(HttpServletRequest request) {
		super(request);
		this.request = request;
	}

	/**
	 * 對引數重新編碼
	 */
	@Override
	public String getParameter(String name) {
		String value = super.getParameter(name);
         if(value == null)
               return null;
         String method = request.getMethod();
		if ("get".equalsIgnoreCase(method)) {
			try {
				value = new String(value.getBytes("ISO8859-1"),
						request.getCharacterEncoding());
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
		}
		return value;
	}

}

在web.xml中新增如下內容:

<filter>
  	<filter-name>characterEncodingFilter</filter-name>
  	<filter-class>com.pdsu.filter.CharacterEncodingFilter</filter-class>
  	<init-param>
  		<param-name>encode</param-name>
  		<param-value>UTF-8</param-value>
  	</init-param>
  </filter>
  <filter-mapping>
  	<filter-name>characterEncodingFilter</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>


相關推薦

Servlet編碼過濾器Postget方式支援

package com.pdsu.filter; import java.io.IOException; import java.io.UnsupportedEncodingException; import javax.servlet.Filter; import j

過濾器-解決全站字元亂碼POSTGET中文編碼問題

servlet: POST:request.setCharacterEncoding(“utf-8”); GET: String username = request.getParameter(“username”); username = new String(use

解決全站字符亂碼POSTGET中文編碼問題

{} tomcat ont throws turn nco cat doget pro 1 說明 亂碼問題: 獲取請求參數中的亂碼問題; POST請求:request.setCharacterEncoding(“utf-8”); GET請求:new String(r

Http javapostget方式

inf log href www param client get char comm 用java發送post和get請求的兩種方式 1.URL 2.httpclient 第一種方式: URL形式發送請求 第二種方式: commons-httpclient-3.1.jar;

http請求的postget方式的區別

在網上找了post和get請求方式的不同和區別,感覺這個比較好,轉載過來和大家分享! Http定義了與伺服器互動的不同方法,最基本的方法有4種,分別是GET,POST,PUT,DELETE。URL全稱是資源描述符,我們可以這樣認為:一個URL地址,它用於描述一個網路上的

java使用PostGet方式提交Http請求通用

很多api提供了java的post,get方式呼叫返回結果的介面,以下記錄基礎通用的傳送請求並接收返回引數的方式:package com.taray.test; import java.io.BufferedReader; import java.io.IOException

如何解決POSTGET方式的中文亂碼問題

一:確保表單所在的頁面按照指定的字符集開啟★在HTML頁面中使用meta標記可以確保瀏覽器按照指定的字符集進行解碼頁面,並限定表單提交時的資料編碼方式:<meta http-equiv="content-type" content="text/html;charset=utf-8">:完成ISO-

C#帶cookie PostGet方式傳送資料,保持cookie

在實際程式設計中,可能需要讀取特定網頁的資訊,但很多網站需要使用者登入後,才能夠獲取相關的頁面內容,這就需要程式設計者先臨時儲存當前的cookie,在C#中可以使用CookieContainer 物件來儲存登入後的Cookie資訊,這樣,在每次傳送資料的時候,附加上Cookie資訊,就可以了。       

ajaxController相互傳遞json資料的實現postget

post和get兩種方式的程式碼略有不同(如get需要手動處理中文亂碼),下面給出具體實現: 1、post方式 前端程式碼: <script type="text/javascript" src="<c:url value="/lib/jquery.min.js"/&

原生ajax post get 方式傳值

<script type='text/javascript'> function closes (){ var r=confirm("確定要刪除嗎") if (r==true){

提交Form表單,POSTGET方式的傳值問題。

<form action="${pageContext.request.contextPath }/UserServlet?id=123" method="get"> userame:<input type="text" name="username"&

Httpclient重寫postget方式連線伺服器

package com.cetron.common.utils.Http; import com.google.gson.Gson; import org.apache.http.HttpEntity; import org.apache.http.client.Cli

HTTP協議介紹POSTGET、Content-Type

什麼是HTTP? 超文字傳輸協議(HyperText Transfer Protocol -- HTTP)是一個設計來使客戶端和伺服器順利進行通訊的協議。 HTTP/1.1 協議規定的 HTTP 請求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE

HTML提交方式postget區別實驗

des url action 通過 性別 清除數據 map pass pack HTML提交方式post和get區別(實驗) 一、post和get區別 get提交,提交的信息都顯示在地址欄中。 post提交,提交的信息不顯示地址欄中,顯示在消息體中。 二、客戶端代碼

C++使用libcurl做HttpClient業務觀摩,用C++封裝過程式代碼,postget的數據,最好url編碼,否則+會變成空格good

com 如果 msvc 是否 out tle source rac 無需 當使用C++做HTTP客戶端時,目前通用的做法就是使用libcurl。其官方網站的地址是http://curl.haxx.se/,該網站主要提供了Curl和libcurl。Curl是命令行

Servlet過濾器Filter監聽器Listener

卸載 ons str alt 用戶 監聽 實際應用 .com except 過濾器 過濾器是一個java組件,可以攔截發送至某個servelet,jsp頁面或靜態頁面的請求,可以在響應發送到客戶之前進行攔截 工作原理: 過濾器類必須實現 Filter 接口,包含的方法如下

C#傳送簡單的postget請求轉載

POST傳送請求及接受響應流程  根據目標地址址建立HttpWebRequest物件 設定響應的請求引數------Method、ContentType 等 使用HttpWebRequest物件獲取請求流並且寫入訊息體    使用H

Django框架—— 基本配置:app註冊、模板配置、靜態檔案配置、資料庫連線配置postget

app註冊、模板配置、靜態檔案配置、資料庫連線配置post和get 一、app 在Django中,APP可以用以下類比 大學 --------------------專案 計算機學院------------app01 土木學院 ------------ app02 1、app建立 方

HTTP請求方法之header原來不光只有postget啊~~

以前一直以為HTTP請求只有POST和GET方法(知識最常用的),後來看一篇簡書,裡面提到還有HEAD方法,再查查資料發現不止這3個。。。 據RFC2616標準(現行的HTTP/1.1)得知,通常有以下8種方法:OPTIONS、GET、HEAD、POST、PUT、DELET

request請求獲取引數(postget兩種方式)

提交表單程式碼: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </h