你的解决方案说老实话我看太复杂要实现过滤,很简单写一个filter就可以了路克
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class JspControl extends HttpServlet implements Filter
{
      private FilterConfig filterConfig;
      public void init(FilterConfig filterConfig)
      {
            this.filterConfig = filterConfig;
      }     public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
      {
              //在这里过滤
      }      public void destroy()
      {
      }
}
不同的页面可以实现不同种类的过滤
这样的好处就是对页面的透明的,不要修改任何页面

解决方案 »

  1.   

    用一个servlet
    所有的请求和链接和标单提交都指向它
    他负责所有的跳转 
    只不过 跳转就麻烦了
      

  2.   

    每次调用页面都会调filter啊比如显示ip,就很适合在filter中做啊filter取好ip,然后做过滤,如果是非法ip,则转到错误页面
    还可以把他放到request或者session中
    这样页面就可以取到了啊
      

  3.   

    jokerjava(冷血) 
    这个办法也可以实现,不过这样的话确实有很多问题(例如:在判断时,已经进入服务器内部),我的想法:在端口处拦截用户访问信息,然后判断,如果不合法,就禁止访问!看看有什么好的方法,多谢!
    当然,界面要时时刷新的,这个也很重要!
      

  4.   

    to:Yssss1980(浪子雪影) 
    现在最大的问题是,我们不能判断用户的IP是否正确,只能够判断用户的访问信息,例如:访问页面名称,访问频率等!
    多谢关注!
    多谢!
      

  5.   

    我看你够呛,你要的可以简化为,一台机器侦听80,确定CLIENT的IP,请求内容,
    再确定是否响应,如果响应,PASS到真正的80服务器上去(当然这两个服务器可以
    部署在一台机器上)。可是来的请求是千变万化的,如果是GET方式,还好直接处理
    处理,如果是POST的方式,有可能还带multipart数据格式,你处理的就多了,差不多
    就是一个WEB服务器了,呵呵
      

  6.   

    FILTER是可以判断IP的,只要结合JSP的跳转功能,恩,我这里有一个用SERVLE的例子,也有IP检测的,你凑合着看下吧
    (是调用了数据池的)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目录下的所有文件
    此外,如果直接写监听程序的话,JAVA应该有点困难,因为我曾经尝试做过一个监听的程序,在IIS下,结果失败,因为虚拟机的对端口的优先级别不如服务器高~~~所以,真要写监听程序,除非你能确保你的程序的优先级比你的服务器高~~这个似乎需要要整合服务器那的代码~~否则~~~
      

  7.   

    就是说你用来监视端口的SOCKET可能收不到信息
      

  8.   

    看来你是一定不要用filter了? :)
    你可以试试Port relay. 我以前做过一点。
      

  9.   

    filter工作在servlet层;
    Port Relay工作在Socket层,层次低。
    Port Relay主要通过建立不同的Socket,
    然后内部连接起来,
    取得对于Socket建立的连接层的控制。
    以前看过一个例子,代码还是很简单的。
    现在手上没有。
    你可以到网上查一下。