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类,它们存在的目的如下: 在请求访问后端资源时拦截它 管理从服务器返回给客户端的响应 下面列出了多种常用的过滤器类型: 认证过滤器 数据压缩 ...
随机推荐
- Leetcode 209.长度最小的子数组 By Python
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组.如果不存在符合条件的连续子数组,返回 0. 示例: 输入: s = 7, nums = [2, ...
- Android 可展开列表组件 ExpandableListView
ExpandableListView 是ListView的子类,它把应用中的列表项分为几组,每组里可包含多个列表项. 所显示的列表项应该由ExpandableListAdapter 接口提供,实现Ex ...
- 【BZOJ5321】[JXOI2017]加法(贪心)
[BZOJ5321][JXOI2017]加法(贪心) 题面 BZOJ 洛谷 题解 显然二分答案,算一下每个点至少要覆盖的次数.从左往右考虑如果这个点覆盖次数不够,就会选择覆盖这个点的.右端点最大的线段 ...
- [luogu3810][bzoj3262]陌下花开【cdq分治】
题目描述 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),用三个整数表示.现在要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一朵花B要美丽,当且仅Sa&g ...
- 逆向并查集 HYSBZ1015星球大战starwar
星球大战starwar HYSBZ - 1015 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系 ...
- 初入webform的杂七杂八
客户端---IIS(Internet Information Services的缩写,意为互联网信息服务管理器)---.NET framework---数据库 1.Repeater控件:对应的集合有5 ...
- Python之模块和包
一.模块 1.什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编 ...
- Python函数--装饰器进阶
开放封闭原则 1.对扩展是开放的 为什么要对扩展开放呢? 我们说,任何一个程序,不可能在设计之初就已经想好了所有的功能并且未来不做任何更新和修改.所以我们必须允许代码扩展.添加新功能. 2.对修改是封 ...
- Codeforces Round #518 (Div. 2) B LCM
传送门 https://www.cnblogs.com/violet-acmer/p/10163375.html 题解: 这道题有点意思,有点数学的味道. 根据定义“[a,b] / a”可得这求得是l ...
- jenkins学习:jenkins+maven
之前配置了jenkins+gitlab,jenkins已经可以从gitlab上面拉取代码了,执行项目构建还要加一个maven. 1.配置全局的maven 系统管理-全局工具配置-配置maven的地址 ...