你的解决方案说老实话我看太复杂要实现过滤,很简单写一个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()
{
}
}
不同的页面可以实现不同种类的过滤
这样的好处就是对页面的透明的,不要修改任何页面
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()
{
}
}
不同的页面可以实现不同种类的过滤
这样的好处就是对页面的透明的,不要修改任何页面
解决方案 »
- 谁有关于java的基础类的文档或电子书呀!!
- Java中用什么类实现定时功能?
- 关于java包的问题
- 有偿转让Java即时通信工具源代码及设计文档
- 一个未排序整数数组,有正负数,,,,
- 对于JTree,有哪个方法是遍历所有节点?!
- 请教--做过邮件系统的朋友,如何对qmail进行操作(100分,在线等候)
- 希望你能告诉我这是什么错误?
- 关于导入不同包中同名类的问题
- 使用ObjectInputStream出现的错误:java.io.StreamCorruptedException: invalid stream header
- 请教各为高手Base64编码问题
- YuLimin(阿敏当兵) 你能就代码中的某些片段给我一些详细讲解吗?谢谢
所有的请求和链接和标单提交都指向它
他负责所有的跳转
只不过 跳转就麻烦了
还可以把他放到request或者session中
这样页面就可以取到了啊
这个办法也可以实现,不过这样的话确实有很多问题(例如:在判断时,已经进入服务器内部),我的想法:在端口处拦截用户访问信息,然后判断,如果不合法,就禁止访问!看看有什么好的方法,多谢!
当然,界面要时时刷新的,这个也很重要!
现在最大的问题是,我们不能判断用户的IP是否正确,只能够判断用户的访问信息,例如:访问页面名称,访问频率等!
多谢关注!
多谢!
再确定是否响应,如果响应,PASS到真正的80服务器上去(当然这两个服务器可以
部署在一台机器上)。可是来的请求是千变万化的,如果是GET方式,还好直接处理
处理,如果是POST的方式,有可能还带multipart数据格式,你处理的就多了,差不多
就是一个WEB服务器了,呵呵
(是调用了数据池的)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下,结果失败,因为虚拟机的对端口的优先级别不如服务器高~~~所以,真要写监听程序,除非你能确保你的程序的优先级比你的服务器高~~这个似乎需要要整合服务器那的代码~~否则~~~
你可以试试Port relay. 我以前做过一点。
Port Relay工作在Socket层,层次低。
Port Relay主要通过建立不同的Socket,
然后内部连接起来,
取得对于Socket建立的连接层的控制。
以前看过一个例子,代码还是很简单的。
现在手上没有。
你可以到网上查一下。