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>

  

jsp过滤器的更多相关文章

  1. JSP 过滤器

    JSP教程 - JSP过滤器 JSP过滤器是可用于拦截来自客户端的请求或处理来自服务器的响应的Java类. 过滤器可用于执行验证,加密,日志记录,审核. 我们可以将过滤器映射到应用程序部署描述符文件w ...

  2. JSP-Runoob:JSP 过滤器

    ylbtech-JSP-Runoob:JSP 过滤器 1.返回顶部 1. JSP 过滤器 JSP 和 Servlet 中的过滤器都是 Java 类. 过滤器可以动态地拦截请求和响应,以变换或使用包含在 ...

  3. springboot jsp,过滤器,拦截器

    springboot使用jsp,过滤器,拦截器(拦截器与过滤器区别重点) jsp使用配置 一 创建springboot项目在maven中暂时只添加两个Dependencies :devtools(热部 ...

  4. jsp 过滤器 Filter 配置

    .如果要映射过滤应用程序中所有资源: <filter>    <filter-name>loggerfilter</filter-name>    <filt ...

  5. JSP过滤器Filter配置过滤类型汇总

    一.配置方法1 映射过滤应用程序中所有资源<filter>    <filter-name>loggerfilter</filter-name>    <fi ...

  6. JSP介绍(4)--- JSP 过滤器

    过滤器是可用于 Servlet 编程的 Java 类,可以实现以下目的: 在客户端的请求访问后端资源之前,拦截这些请求. 在服务器的响应发送回客户端之前,处理这些响应. 过滤器通过 Web 部署描述符 ...

  7. [jsp学习笔记] jsp过滤器

  8. jsp提交表单数据乱码,内置对象,以及过滤器

    jsp提交表单数据乱码解决方案 通过form表单给服务器提交数据的时候,如果提交的是中文数据,那么可能会出现乱码,如果表单的请求方式是post请求,那么可以使用如下方案解决乱码: 在调用getPara ...

  9. Servlet和JSP中的过滤器都是Java类

    JSP 过滤器 Servlet和JSP中的过滤器都是Java类,它们存在的目的如下: 在请求访问后端资源时拦截它 管理从服务器返回给客户端的响应 下面列出了多种常用的过滤器类型: 认证过滤器 数据压缩 ...

随机推荐

  1. IISEXPRESS64位运行

    调试时使用IISEXPRESS 64位.经网上查找这样开启

  2. Vue中的slot内容分发

    ①概述: 简单来说,假如父组件需要在子组件内放一些DOM,那么这些DOM是显示.不显示.在哪个地方显示.如何显示,就是slot分发负责的活. ②默认情况下 父组件在子组件内套的内容,是不显示的. 例如 ...

  3. 逆元(inv)

    当求解公式:(a/b)%m 时,因b可能会过大,会出现爆精度的情况,所以需变除法为乘法: 设c是b的逆元,则有b*c≡1(mod m): 则(a/b)%m = (a/b)*1%m = (a/b)*b* ...

  4. js 触摸的Event--获取触摸位置

    继上一篇js原生拖拽之后,现在又来写一下移动端touch列表,获取触摸位置.pc端的event事件,鼠标的位置信息在上一篇,点此进入上一篇. touch有3个事件:touchstart,touchmo ...

  5. webpack入门(三)webpack的api

    终于到了webpack api这一篇,我都等不及了0.0; webpack is fed a configuration object. Depending on your usage of webp ...

  6. 编写高质量代码:改善Java程序的151个建议 --[117~128]

    编写高质量代码:改善Java程序的151个建议 --[117~128] Thread 不推荐覆写start方法 先看下Thread源码: public synchronized void start( ...

  7. pre标签内文本自动换行

    pre标签内文本自动换行 给pre标签添加一个css样式 pre { white-space: pre-wrap; /* css-3 */ white-space: -moz-pre-wrap; /* ...

  8. What can Reactive Streams offer EE4J?

    https://developer.lightbend.com/blog/2018-02-06-reactive-streams-ee4j/index.html By James Roper (@jr ...

  9. apt could not get lock

    很多次遇到,就是记不住. sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock sudo rm /var/lib/apt/li ...

  10. Lisp经典算法

    求平方根 SUCCESSIVE AVERAGING DUE TO HERON OF ALEXANDRIA ** TO FIND AN APPROXIMATION TO SQRT(X) ** MAKR ...