天天看點

Servlet2.3 filter 開發(z)

绠€鍗?Servlet2.3 filter 寮€鍙?

浣滆€咃細娑﹀悕

涓€锛氱畝浠?

鏂扮殑 Java Servlet 2.3 瑙勮寖鏈変笉灏戞渶婵€鍔ㄤ漢蹇冪殑鍔熻兘锛屽叾涓箣涓€渚挎槸 filter (杩囨護鍣?銆俧ilter鍙互鏀瑰彉涓€涓姹傦紙request锛夋垨鑰呮槸淇敼鍝嶅簲锛坮esponse锛夈€俧ilter涓嶆槸涓€涓猻ervlet锛屽畠鍙槸涓€涓猻ervlet鎺ュ彈鍒拌姹傚墠鐨勯澶勭悊鍣ㄣ€傚氨鏄锛岀敤鎴峰彂閫佷竴涓姹傜粰servlet鏃訛紝鍦╯ervlet澶勭悊涔嬪墠锛岃繖涓猣ilter棣栧厛鎵ц锛岀劧鍚庢墠鏄痵ervlet鐨勬墽琛屻€?

浜岋細浣滅敤

filter鍙互鐢ㄥ湪涓嬮潰鍑犱釜鏂歸潰

1锛氳闂壒瀹氳祫婧愶紙Web 椤點€丣SP 椤點€乻ervlet锛夋椂鐨勮韓浠?

2锛氳闂祫婧愮殑璁闆綍

3锛氳闂祫婧愮殑杞崲

涓夛細缂栧啓filter

涓€涓猣ilter 蹇呴』瀹炵幇javax.servlet.Filter 鎺ュ彛锛屽嵆瀹炵幇涓嬮潰鐨勪笁涓柟娉曪細

1: doFilter(ServletRequest, ServletResponse, FilterChain)锛氳繖鏄竴涓畬鎴愯繃婊よ涓虹殑鏂規硶銆傝繖鍚屾牱鏄笂娓歌繃婊ゅ櫒璋冪敤鐨勬柟娉曘€傚紩鍏ョ殑 FilterChain 瀵矽薄鎻愪緵浜嗗悗缁繃婊ゅ櫒鎵€瑕佽皟鐢ㄧ殑淇℃伅銆?

2: init(FilterConfig)锛氳繖鏄竴涓鍣ㄦ墍璋冪敤鐨勫垵濮嬪寲鏂規硶銆傚畠淇濊瘉浜嗗湪绗竴娆?doFilter() 璋冪敤鍓嶇敱瀹瑰櫒璋冪敤銆傛偍鑳借幏鍙栧湪 web.xml 鏂囦歡涓寚瀹氱殑鍒濆鍖栧弬鏁般€?

3: destroy()锛氬鍣ㄥ湪鐮村潖杩囨護鍣ㄥ疄渚嬪墠锛宒oFilter()涓殑鎵€鏈夋椿鍔ㄩ兘琚瀹炰緥缁堟鍚庯紝璋冪敤璇ユ柟娉曘€?

鍥涳細绀轟緥

鍔熻兘锛氶檺鍒跺鎴風 IP 鐨勮闂?

浠g爜濡備笅锛?

package com.Servlet.filter;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

import javax.servlet.Filter;

public class myfilter implements Filter

{

private FilterConfig filterConfig = null;

public void init(FilterConfig filterConfig)

{

this.filterConfig = filterConfig;

}

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws ServletException, IOException

{

try

{

res.setContentType("text/html;charset=GBK");

PrintWriter out = res.getWriter();

String remoteAddr = ((HttpServletRequest) req).getRemoteAddr();

if ((remoteAddr.indexOf("127.0.0.1") != -1) || (remoteAddr.indexOf("localhost") != -1)) { //杩欓噷鍋氬垽鏂?

out.println("<html><head></head><body>");

out.println("<h1>鍝堝搱锛孖P 127.0.0.1 鍜?IP localhost 涓嶈兘璁塊棶鏈綉绔檦~</h1>");

out.println("</body></html>");

out.close();

return;

}

else

{

out.println("<html><head></head><body>");

out.println("<h1>鎭枩锛屼綘宸茬粡鎴愬姛璁塊棶鏈綉绔欎簡~~</h1>");

out.println("</body></html>");

out.close();

}

}

catch (Exception e)

{

e.printStackTrace();

}

}

public void destroy()

{

}

}

瀹炵幇鎬濊礬锛氶€氳繃ServletRequest绫葷殑getRemoteAddr()鏂規硶寰楀埌璁塊棶杩欎釜搴旂敤鐨勫鎴風ip锛岀劧鍚庡杩欎釜ip浣滀竴浜涘鐞嗭紝濡傛灉涓嶇鍚堟潯浠訛紝鍙互闄愬埗璁塊棶銆傝繖鏍峰彲浠ュ緢濂界殑淇濇姢搴旂敤銆?

浜旓細閰嶇疆

浠?Weblogic 涓轟緥锛氭瘡涓嬌鐢╢ilter鐨勫簲鐢ㄧ殑web.xml绫諱技涓嬮潰

<?xml version="1.0" ?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<welcome-file-list>

<welcome-file>index.html</welcome-file>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

// 涓嬮潰鏄繃婊ゅ櫒鐨勯厤缃?

<filter>

<filter-name>MyFilter</filter-name> //杩欓噷鏄疐ilter鐨勫悕瀛楋紝闅忎究浣犳€庝箞璧?

<filter-class>com.Servlet.filter.myfilter</filter-class> //Filter鐨勭被鍚嶏紝娉ㄦ剰鍖呭惈package

</filter>

<filter-mapping>

<filter-name>MyFilter</filter-name>//涓庝笂闈㈢殑淇濇寔涓€鑷?

<url-pattern>/*</url-pattern> //瀵規墍鏈夎祫婧愬簲鐢ㄦfilter

</filter-mapping>

</web-app>