过滤器01

简介

  • 本文是2021/06/08整理的笔记
  • 赘述可能有点多,还请各位朋友耐心阅读
  • 本人的内容和答案不一定是最好最正确的,欢迎各位朋友评论区指正改进

过滤器的作用

把相同通用的代码用过滤器实现,会让目标资源共享

过滤器的开发方法

(1) 写一个类实现 Filter 接口
(2) 重写接口的 3 个方法
(3) doFilter()写处理逻辑. 1 chain.doFilter()放行
2 不调用 chain.doFilter()不放行,到不了 servlet 或者 jsp

过滤器的各个方法的执行顺序

1.构造方法
2.初始化方法 init(FilterConfig fConfig)
3.doFilter()方法
4.destroy()方法 销毁方法

FilterConfig 接口的方法

1.getFilterName():返回 xml 配置的 filter 的名字
2.getInitParameter(name):返回初始化的参数的值
3.getInitParameterNames():返回所有的初始化参数的名字
4.getServletContext():返回上下文对象

FilterChain 接口的方法

1.doFilter()方法:
1.如果有下一个过滤器就执行下一个过滤器
2.没有就会执行目标资源(servlet 或者 jsp)

编码过滤器

1.初始化参数 encoding=UTF-8
2.doFilter():设置 encodin

过滤器的配置信息

过滤器的名称和类

过滤的 url

过滤的 url 的访问方式

1.REQUEST:默认的访问方式
1.直接 url 访问
2.超级链接
3.form 的提交
4.重定向
5.静态包含
2.FORWARD
请求转发
3.INCLUDE
动态包含
4.ERROR
错误页面的跳转

初始化参数

一个过滤器可以配置给多个 url

一个 url 可以配置多个过滤器,多个过滤器组成过滤器链,按照配置的顺序执行

<filter>
<filter-name>MyFilter</filter-name>
<filter-class>com.tjetc.filter.MyFilter</filter-class>
<init-param>
<param-name>name</param-name>
<param-value>zs</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/order/*</url-pattern>
<url-pattern>/cart/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>

过滤器实现访问控制

1.什么是访问控制?
有些资源需要登录才能访问,称为访问控制
2.登录过滤器实现访问控制
1.创建/order/order.jsp 订单页面
2.创建登录过滤器 LoginFilter,过滤/order/*的请求
1.HttpServletRequest req=(HttpServletRequest)request;
HttpServletResponse resp=(HttpServletResponse)response;
2.取得 session
HttpSession session=req.getSession();
3.从 session 取得 user
String user=session.getAttribute(“user”);
4.判断 user 是否为 null
1.如果 user==null 代表未登录,重定向到 login.jsp
2.否则,放行

if(user==null){
resp.sendRedirect(req.getContextPath()+"/login.jsp");
}else{
chain.doFilter(request,response);
}

3.login.jsp

<form action="/工程名/LoginServlet" method="post">
用户名:<input type="text" name="username"></br/>
密码:<input type="password" name="password"></br/>
<input type="submit" value="提交"/>
</form>

4.LoginServlet
1.从请求参数获得用户名和密码
2.判断用户名和密码是否正确
1.正确:提示正确信息
2.错误,重定向到 login.jsp 页面

String name=request.getParameter("username");
String password=request.getParameter("password");
if(username.equals("zs") && password.equals("123"){
response.getWrite().print("login success");
}else{
response.sendRedirect(request.getContextPath()+"/login.jsp";
}

防盗链过滤器

1.什么是盗链?
在自己的页面展示不属于自己服务器的上内容,内容是从别的网站上盗用过来,称为盗链. 2.什么是防盗链系统?
防范盗链的系统称为防盗链系统.防止别人通过技术手段盗用本站的资源. 3.防盗链过滤器
1./order/order.jsp
2.防盗链过滤器 FdlFilter
1.本站的资源路径:String baseUrl="http://localhost:8080/0509-fdlfilter/";
2.请求的来路路径 String fromUrl=request.getHeader("referer");
3.boolean b=fromUrl!=null && !fromUrl.startWith(baseUrl);
4.

if(b){//盗链
response.getWriter().print("you are dl");
}else{//本站放行
chai.doFilter(request,response);
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

香鱼嫩虾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值