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>
jsp过滤器的更多相关文章
- JSP 过滤器
JSP教程 - JSP过滤器 JSP过滤器是可用于拦截来自客户端的请求或处理来自服务器的响应的Java类. 过滤器可用于执行验证,加密,日志记录,审核. 我们可以将过滤器映射到应用程序部署描述符文件w ...
- JSP-Runoob:JSP 过滤器
ylbtech-JSP-Runoob:JSP 过滤器 1.返回顶部 1. JSP 过滤器 JSP 和 Servlet 中的过滤器都是 Java 类. 过滤器可以动态地拦截请求和响应,以变换或使用包含在 ...
- springboot jsp,过滤器,拦截器
springboot使用jsp,过滤器,拦截器(拦截器与过滤器区别重点) jsp使用配置 一 创建springboot项目在maven中暂时只添加两个Dependencies :devtools(热部 ...
- jsp 过滤器 Filter 配置
.如果要映射过滤应用程序中所有资源: <filter> <filter-name>loggerfilter</filter-name> <filt ...
- JSP过滤器Filter配置过滤类型汇总
一.配置方法1 映射过滤应用程序中所有资源<filter> <filter-name>loggerfilter</filter-name> <fi ...
- JSP介绍(4)--- JSP 过滤器
过滤器是可用于 Servlet 编程的 Java 类,可以实现以下目的: 在客户端的请求访问后端资源之前,拦截这些请求. 在服务器的响应发送回客户端之前,处理这些响应. 过滤器通过 Web 部署描述符 ...
- [jsp学习笔记] jsp过滤器
- jsp提交表单数据乱码,内置对象,以及过滤器
jsp提交表单数据乱码解决方案 通过form表单给服务器提交数据的时候,如果提交的是中文数据,那么可能会出现乱码,如果表单的请求方式是post请求,那么可以使用如下方案解决乱码: 在调用getPara ...
- Servlet和JSP中的过滤器都是Java类
JSP 过滤器 Servlet和JSP中的过滤器都是Java类,它们存在的目的如下: 在请求访问后端资源时拦截它 管理从服务器返回给客户端的响应 下面列出了多种常用的过滤器类型: 认证过滤器 数据压缩 ...
随机推荐
- HNOI2019
省选总结 day0 写了下平时不经常写的模板,像什么\(LCT\),圆方树,\(exlucas\)之类的,但是一个都没考. day1 提前十几分钟进了考场,可以提前动电脑,赶紧把\(vimrc\)打了 ...
- linux中监控CPU、内存和磁盘状态的shell脚本。(centos7)
这篇博客中所写的脚本,在实际工作中并没有什么卵用,工作中并不会用到这种脚本去监控.不过自己写一遍,可以让初学者对CPU.内存.磁盘等一些基础知识和基础命令更加了解. 1.利用vmstat工具监控CPU ...
- HDU 5950 Recursive sequence(矩阵快速幂)
题目链接:Recursive sequence 题意:给出前两项和递推式,求第n项的值. 题解:递推式为:$F[i]=F[i-1]+2*f[i-2]+i^4$ 主要问题是$i^4$处理,容易想到用矩阵 ...
- NOIP2018保卫王国
题目大意:给一颗有点权的树,每次规定两个点选还是不选,求这棵树的最小权点覆盖. 题解 ZZ码农题. 要用动态dp做,这题就是板子,然鹅并不会,留坑代填. 因为没有修改,所以可以静态倍增. 我们先做一遍 ...
- Go 语言 HTTP Server 源码分析
http://www.codeceo.com/go-http-server-code.html
- P1886 P2216 单调队列模板
何为单调队列? 单调队列是一个队列(废话) 而且必须同时满足下标单调和值单调两个单调特性. 跟优先队列不同,优先队列直接使用堆(heap)来实现,如何删去特定下标元素?不明. 本人喜欢用单调队列存下标 ...
- 利用selenium并使用gevent爬取动态网页数据
首先要下载相应的库 gevent协程库:pip install gevent selenium模拟浏览器访问库:pip install selenium selenium库相应驱动配置 https: ...
- Linux由浅入深学习 (转)
转自 => 作者:Vamei 出处:http://www.cnblogs.com/vamei 走进Linux 我从这一部分开始走入Linux.Raspbian是Linux的一个发行版本,而Lin ...
- semantic ui框架学习笔记三
网格系统 基本网格 <div class="ui grid"> <div class="column"></div> < ...
- 2018最完整ITTO分节整理指导(PMP项目管理入门必备)
2018年项目管理基础教材<PMBOK>指南进行了改版,之前的一些PMP资料没有太大帮助,反而会让大家记忆混淆,用最新的会好一些,今天小编就把搜集到的2018年项目管理最详细的ITTO的P ...