过滤器Filter的简单应用

来源:互联网 发布:网络教育学制 编辑:程序博客网 时间:2024/05/22 15:38
我认为:过滤器的基本原理就是,开始加载的时候就设定一些访问条件,当访问者访问某些特定的页面时,由于与从配置文件中读取的一些过滤信息相符合,因此就对那个用户的某些功能加以限制,也就是过滤的功能。
过滤器Filter的简单应用 - lishirong - The CTO of LiShirong
 

1.首先要实现一个过滤器

package filter;
import java.io.*;

import javax.servlet.*;
import javax.servlet.http.*;


public class AddressFilter implements Filter{
private FilterConfig filterConfig=null;
private String addressProhibited=null;
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
this.filterConfig=filterConfig;
addressProhibited=filterConfig.getInitParameter("addressProhibited");
//读取配置文件中的参数
}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
//获取客户端ip地址
String address=((HttpServletRequest)request).getRemoteAddr();
System.out.println("address="+address);
if(address.equals(addressProhibited)) {
response.setContentType("text/html;charset=GBK");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>这个地址禁止访问</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1 align='center'>这个地址禁止访问</h1>");
out.println("</body>");
out.println("</html>");
out.flush();
return;//结束当前方法,不调用后续的过滤器链或Web资源
}
//调用后续的过滤器链(如果没有后续的过滤器就访问Web资源)
chain.doFilter(request, response);
}
public void destroy() {
// TODO Auto-generated method stub
this.filterConfig=null;
}
}




2.其次,是在配置文件中设置过滤信息,以便过滤器读取相关信息

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  <filter>
   <filter-name>AddressFilter</filter-name>
   <filter-class>filter.AddressFilter</filter-class>
   <init-param>
   <param-name>addressProhibited</param-name>
   <param-value>192.168.1.1</param-value>
   </init-param>
  </filter>
  
  <filter-mapping>
   <filter-name>AddressFilter</filter-name>
   <url-pattern>/hello.jsp</url-pattern>
  </filter-mapping>
  
  
  
</web-app>



3.访问相关页面并进行测试。
0 0
原创粉丝点击