资讯详情

jsp过滤器

1、ip过滤

IpFilter:

package com.cn.filter;  import java.io.IOException;  import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;  public class IpFilter implements Filter {      private String ip;          public void destroy() {              }      public void doFilter(ServletRequest request, ServletResponse response,             FilterChain chain) throws IOException, ServletException {         System.out.println("ipFilter");         //获取请求ip         String clientIp = request.getRemoteAddr();         System.out.println("ip=" ip);         System.out.println("clientIp=" clientIp);                  if(!clientIp.equals(ip)){             chain.doFilter(request, response);         }else{             HttpServletRequest req = (HttpServletRequest)request;             req.getRequestDispatcher("sorry.jsp").forward((HttpServletRequest)request, (HttpServletResponse)response);         }              }      public void init(FilterConfig filterConfig) throws ServletException {         ip = filterConfig.getInitParameter("ip");     }  }

web.xml:

  <!-- 配置过滤器 -->   <filter>       <filter-name>ipFilter</filter-name>       <filter-class>com.cn.filter.IpFilter</filter-class>       <init-param>           <param-name>ip</param-name>           <param-value>127.0.0.1</param-value>       </init-param>   </filter>   <filter-mapping>       <filter-name>ipFilter</filter-name>       <url-pattern>/*</url-pattern>   </filter-mapping>

2.统计访问人数

CountFilter:

package com.cn.filter;  import java.io.IOException;  import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; public class CountFilter implements Filter { int count = 0; //销毁 public void destroy() { } //执行 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("countFilter"); count++; //强转类型 HttpServletRequest req = (HttpServletRequest)request; ServletContext servletContext = req.getSession().getServletContext(); servletContext.setAttribute("count", count); //向下传递请求  chain.doFilter(request, response); } //初始化 public void init(FilterConfig filterConfig) throws ServletException { String cou = filterConfig.getInitParameter("count"); count = Integer.parseInt(cou); } }

CountServlet:

package com.xtkj.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CountServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        this.doPost(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        ServletContext servletContext = request.getSession().getServletContext();
        
        Object count = servletContext.getAttribute("count");
        
        response.setContentType("text/html;charset=gbk");
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
        out.println("<HTML>");
        out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
        out.println("  <BODY>");
        out.print("您是第"+count+"位访问该网站的用户!");
        out.println("  </BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }
}

web.xml

  <filter>
      <filter-name>countFilter</filter-name>
      <filter-class>com.cn.filter.CountFilter</filter-class>
      <!-- 配置默认参数 -->
      <init-param>
          <param-name>count</param-name>
          <param-value>3000</param-value>
      </init-param>
  </filter>
  <filter-mapping>
      <filter-name>countFilter</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>

3、图片防盗(不允许通过地址栏链接打开图片,必须访问index.jsp才能打开图片)

ImgRedirectFilter:

package com.cn.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ImgRedirectFilter implements Filter {
    public void init(FilterConfig filterConfig) throws ServletException {
        //
    }
    
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        
        HttpServletRequest req = (HttpServletRequest)request;
        HttpServletResponse resp = (HttpServletResponse)response;
        String referer = req.getHeader("referer");
        if(referer==null || !referer.contains(req.getServerName())){
            req.getRequestDispatcher("-----错误页面").forward(request, response);
        }else{
            chain.doFilter(req, resp);
        }
    }
    
    public void destroy() {
        //
    }
}

ImgServlet:

package com.cn.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ImgServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        this.doPost(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String name = request.getParameter("name");
        request.getRequestDispatcher("img/"+name).forward(request, response);
    }
}

web.xml:

  <filter>
      <filter-name>ImgRedirectFilter</filter-name>
      <filter-class>com.cn.filter.ImgRedirectFilter</filter-class>
  </filter>
  <filter-mapping>
      <filter-name>ImgRedirectFilter</filter-name>
      <url-pattern>*.jpg</url-pattern>
  </filter-mapping>

index.jsp:

  <body>
    <img src="img/img01.jpg" /><a href="ImgServlet?name=img01.jpg">头像1</a></abbr><br/>
    <img src="img/img02.jpg" /><a href="ImgServlet?name=img02.jpg">头像2</a><br/>
    <img src="img/img03.jpg" /><a href="ImgServlet?name=img03.jpg">头像3</a><br/>
  </body>

   

 

标签: xtkj智能传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司