在request时,先得到访问的ip.对比一下限制的ip,如果符合的.就给提示页面

解决方案 »

  1.   

    不会把,用这么笨的方法,那如果我要限制一万个ip地址,那我是不是要写一万个ip地址呀?
    好像在tomcat的配置文件里可以设置的,但我不知道怎么设置?
      

  2.   

    不要太指望主要作为jsp和servlet容器的tomcat作太多的web服务器的功能,这个时候你要想到和其他web服务器整,让web服务器去控制。
      

  3.   

    web服务器只能控制自己范围内的服务吧,像这种tomcat外挂的服务,它应该控制不了吧,tomcat自己应该能够控制的吧
      

  4.   

    同意 kypfos(深圳不是我的家)
      

  5.   

    写一个FILTER
    你可以把你要限制的IP存入数据库,在FILTER运行的时候从数据库里取出做判断以下是一个例子(不过是调用了数据池的)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(){
    }}
    当然了,此外你还要修改web.xml配置文件<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>
    //以上为配置该FILTER所监控的页面,本例为监控/ip目录下的所有文件
      

  6.   

    把TOMCAT与APACEH整合在一起比较好限制
      

  7.   

    首先非常感谢allan1031(唐加西亚~米兰),你的意思是不是在每个程序里都要调用这个class呀?那样岂不是很麻烦? 听说把tomcat服务挂到系统服务里去,在hosts里就可以控制住了,不知道怎么做呀
      

  8.   

    靠,是不是没人看过tomcat文档?tomcat4系统自带了一个ip过虑器
      

  9.   

    汗~~文档里有吗
    我这个是通用与所有的JSP/SERVLET服务器的
    此外,这个FILTER是由TOMCAT在启动的时候自动加载的
    并不需要每个程序都调用
      

  10.   

    在web.xml中设置Filter就行了,不必调用。
    <filter>
      <name><name><class></class>
    <filter>
    <filter-mapping>
      <name></name><url-pattern></url-pattern>
    </filter-mapping>
      

  11.   

    我也找了一阵了,tomcat\resin如何建立IP ACCESS,但未果,只好用Apache了
      

  12.   


    <Context path="/examples" ...>
      ...
      <Valve className="org.apache.catalina.valves.RemoteHostValve"
             allow="*.mycompany.com,www.yourcompany.com"/>
      <Valve className="org.apache.catalina.valves.RemoteAddrValve"
             deny="192.168.1.*"/>
      ...
    </Context>  
       See Remote Address Filter and Remote Host Filter for more information about the configuration options that are supported.
      

  13.   

    如果是tomcat的话是...../tomcat/conf/server.xml
      

  14.   

    rootwuyu(wuyu) 此方法我已经试过,可以!
      

  15.   

    如果是tomcat的话是...../tomcat/conf/server.xml
    我的tomcat是3.2的,也可以吗?
    rootwuyu(wuyu),你说的那些是要添加的内容还是原本文件里就有那个选项,直接修改就可以了?
      

  16.   

    我在tomcat32里设了一下,好像不行啊
      

  17.   

    在linux里安装防火墙限制吗?没试过,请教一下!
      

  18.   

    我的问题!请高手帮忙!
    我的配置都好了,启动了tomcat后,跳出了一连串的字符(如端口号和http的版本等),但是在浏览器里(http://localhost:8080)并没有出现欢迎界面!!我的iis占用的是80端口!请问着是为何???我是找不出来什么原因??
      

  19.   

    allan1031(唐加西亚~米兰)佩服你的想象力。可是每个请求都要查询数据库么?  slowly
      

  20.   

    zengchangliu(程序人生) 你有好的办法吗?
      

  21.   

    zengchangliu(程序人生) 
    可是他说要限定一组IP啊
    不放到数据库的话就只能放到配置文件了

    可以在服务器启动的时候加载
    不过这样似乎有点占内存
      

  22.   

    可以的,我就是在tomcat里的server.xml里设置的
      

  23.   

    限制IP通常只需要在登录页面验证即可。用过滤器意义不大,并不是每个用户操作都需要验证IP。
    对于验证IP地址更经常用的是某个指定IP范围内,例如192.168.0.0-192.168.255.255。
      

  24.   

    IPv4中定义IP地址分为4段xxx.xxx.xxx.xxx即段1.段2.段3.段4
    IP范围可以存储在文件或者数据库中,对于某个IP是否位于范围内算法如下:
    四段比较算法(适用IPv4)——
    produce:CheckParaGraphIP()//按段比较IP,参数IP段;
    1、CheckParaGraphIP(段1)//IP段1比较,若不位于指定范围内则设置结果标识转5;
    2、CheckParaGraphIP(段2)//IP段2比较,若不位于指定范围内则设置结果标识转5;
    3、CheckParaGraphIP(段3)//IP段3比较,若不位于指定范围内则设置结果标识转5;
    4、CheckParaGraphIP(段4)//IP段4比较,若不位于指定范围内则设置结果标识转5;
    5、比较成功则设置成功标识并退出。以上算法页可使用正则表达式实现。
      

  25.   

    在数据库中存储需要限制的IP地址,重载RequestProcessor的process方法,在控制页面转向之前,通过request.getRemoteAddr()获取用户IP,与数据库中比较,如果属于限制的范围,就不让用户转向用户请求的页面,而转向一个禁止用户转向的提示页面。或者在页面里面,判断用户的IP地址是否有效,如果无效,重新转向一个页面,提示禁止该用户使用