81,094
社区成员
发帖
与我相关
我的任务
分享
import java.io.*;
import java.sql.*;
package ip;
import java.util.*;
import javax.naming.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.sql.DataSource;
import javax.naming.InitialContext;
public class IPfilter implements Filter{
private String sqls= "select url from table_url";
private Hashtable hast= new Hashtable();
private DataSource ds= null;
private Context ctx= null;
private Context get= null;
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
throws ServletException,IOException{
PrintWriter out= response.getWriter();
HttpServletRequest req= (HttpServletRequest)request;
HttpServletResponse res= (HttpServletResponse)response;
String urlr= req.getContextPath();
String remotehosturl= (req.getRemoteAddr()).toString();
if(hast.get(remotehosturl)== null)
res.sendRedirect(urlr);
else
out.println("Error.");
chain.doFilter(request,response);
}
public void init(FilterConfig config)
throws ServletException{
int numberurl=0;
try{
Context ctx= new InitialContext();
if(ctx== null) throw new Exception("InitialContext Failed!");
Context get= (Context)ctx.lookup("java:comp/env");
if(get== null) throw new Exception("Look find DataSource Failed!");
ds = (DataSource)get.lookup("jdbc/Connect");
}catch(Exception e){
}
try{
Connection con= ds.getConnection();
Statement stm= con.createStatement();
ResultSet rs= stm.executeQuery(sqls);
while (rs.next()){
hast.put((String)rs.getString(1),new Integer(++numberurl));
}
stm.close();
con.close();
}catch(Exception e){
}
}
public void destroy(){
}
}
<filter>
<filter-name>ip</fileter-name>
<filter-class>ip.IPfilter<filter-class>
</filter>
//以上为配置你的FILTER CLASS
<filter-mapping>
<filter-name>ip</filter-name>
<url-pattern>/ip</url-pattern>
</filter-mapping>
<Context path="/examples" ...>
...
<Valve
className="org.apache.catalina.valves.RemoteHostValve"
allow="*.mycompany.com,<A href="www.yourcompany.com" target=_blank>www.yourcompany.com</A>" />
<Valve
className="org.apache.catalina.valves.RemoteAddrValve"
deny="192.168.1.*" />
</Context>