绠€鍗?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>