Java文字コードフィルタの設定

2663 ワード

(一)フィルタ概念の簡単な説明:
 web        ,web              ,            ,                 ,               。            ,web           ,                   。

開発フィルタステップ(1)フィルタクラスを定義しjavax.servlet.Filterインタフェースを実現する;(2)init()、doFilter()、destory()メソッドを書き換える;(3)フィルタの構成:web.xml.

	filterclassname
	com.xzz.myfilter.filterclassname


	filterclassname
	/*

 :   doFilter()    request response ServletRequest ServletResponse   
	servlet  request response HttpServletRequest HttpServletResponse   

フィルタチェーンの開発
(1)     、       ,  javax.servlet.Filter  ;
(2)  init(),doFilter(),destory()  ;
(3)     :web.xml 。
 :(1)        doFilter()   , chain(request,response),                。
    (2)    : web.xml        。

(二)文字符号化フィルタの設定
(1)      ,  javax.servlet.Filter  ;
(2)  init(),doFilter(),destory()  ;
			①         encode:
				private String encode="UTF-8";
			②  init(FilterConfig filterConfig)  :
				//         
				encode=filterConfig.getInitParamater("encode");
					if(encode==null){
						encode="UTF-8";
					}
			③  doFilter(ServletRequest req, ServletResponse res, FilterChain chain)  :
				//      http    
				HttpServletRequest request=(HttpServletRequest )req;
				HttpServletResponse response=(HttpServletResponse )res;
				//         post
				if("POST".equalsIgnoreCase(request.getMethod())){
					//      
					request.setCharacterEncoding(encode);
					//      
					response.setCharacterEncoding(encode);
					response.setContentType("text/html;charset="+encode);
					//              
					chain.doFilter(request,response);
					//  
					return;
				}
				//              
				chain.doFilter(request,response);
			④  destory()  :
(3)         :web.xml 。
			
				filterclassname
				com.xzz.myfilter.filterclassname
				
				
					encode
					UTF-8
				
			
			
				filterclassname
				/*
			
(4)      
		①  jsp  ,       ,   post;
			
② servlet , doget() : String text=request.getParameter("text"); System.out.println(">>>>>>>"+text);