当前位置: 首页> 汽车> 行情 > 下载淘宝app免费下载安装_微信开发者工具简介_域名查询万网_上海seo网站优化

下载淘宝app免费下载安装_微信开发者工具简介_域名查询万网_上海seo网站优化

时间:2025/7/15 21:06:14来源:https://blog.csdn.net/2302_79981885/article/details/143663666 浏览次数: 0次
下载淘宝app免费下载安装_微信开发者工具简介_域名查询万网_上海seo网站优化

前言

这一节比较短,比较简单

1.概述

在这里插入图片描述
如果一些资源里面的代码都一样,那么就可以写在这个过滤器里面,因为请求都会经过这个过滤器的

还有就是我们前面写的代码,可以直接访问表,比如输入brand.jsp,但是这样理论是不行的,访问每一个资源都要判断一下,登录了没有,这种通用的操作,就可以放在过滤器里面,放在过滤器里面看用户是否登录了,访问一个资源,没有登录的话,就直接跳转到登录页面
统一编码也可以放在过滤器里面

2. 快速入门

在这里插入图片描述
@WebFilter的意思就是什么资源都会拦截
在这里插入图片描述
这个index.jsp是默认执行的
在这里插入图片描述
过滤器是Web的三大组件之一,所以我们一般在web下创建一个包
在这里插入图片描述

导第四个包
在这里插入图片描述

在这里插入图片描述
我们这里没有放行,就发现了,index.jsp没有显示出我们的效果了
在这里插入图片描述
说明过滤器被执行了,但是没有放行,就被拦在过滤器那里了

        filterChain.doFilter(servletRequest, servletResponse);//这个就是我们这个方法的参数

在这里插入图片描述
在这里插入图片描述
现在就有了

3. 执行流程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.1 Tomcat版本过高

但这里要在JavaScript中打印数据到控制台,Tomcat的版本必须要高才行,但我们这个编译器的插件只有7版本,所以不行,所以我们改用我们本地的Tomcat,在编辑配置里面增加这个资源的Tomcat,还有一点就是我们本地的Tomcat的版本是11,这个版本太高了,从Tomcat10版本开始,javax全部改为了javata,就是在导包的时候,包不对应,所以我们的Tomcat11就无法运行servlet,但还是可以运行jsp的
所以我们要把原来的pom.xml里面的javax.servlet给注释掉,用新的javata.servlet,然后全部导的javax包换成javata
在这里插入图片描述
在这里插入图片描述
这样我们在选择Filter的包的时候,就要选择import jakarta.servlet.*;这个包哦
这样以来,我们的Tomcat11就可以正常运行了,但是Tomcat7就不可以了

但没事的,用高版本的
可以参考这篇文章

3.2 继续

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
有这个我们可以看出,程序会把index默认的执行两遍
但还是这样的道理,放行前请求执行一次,放行后响应执行一次

        //1.放行前,对Request数据进行处理,servletResponse里面没有数据//放行//放行后,servletResponse才有数据,对这个进行处理

4.使用细节

4.1 拦截路径的配置

在这里插入图片描述

@WebFilter("/hello.jsp")

这样写就意味着,只有访问hello.jsp,Filter才会生效

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
右键全部删除,就会清空控制台,前面两个是默认页面的执行,不用管
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
所以过滤器没有被执行

4.2 过滤器链

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
现在我们两个过滤器都配置为/*

这样的话,就会FilterDemo默认先执行,FilterDemo2后执行
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
所以FilterDemo会在FilterDemo2的前面,ASCII后面的就后执行

5.案例

在这里插入图片描述
在这里插入图片描述

因为所有资源访问的时候,都要去判断有没有登录,所以/*
登录与没有登录的区别,登录了就把用户对象放在session里面了
在这里插入图片描述
现在我们切换为原来的brand-demo

其实我们也有filter的模版
在这里插入图片描述
直接启用实时模版

在这里插入图片描述
在文件这里新建一个即可

在这里插入图片描述

记得把webFilter这里增加一下
在这里插入图片描述

        HttpServletRequest req=(HttpServletRequest)request;//把request强转为HttpServletRequest//1.判断session里面有user这个键HttpSession session = req.getSession();Object user = session.getAttribute("user");//2.判断user是否为nullif(user!=null){//登陆过了//放行chain.doFilter(request, response);}else{//没有登陆,跳转到登录页面req.setAttribute("login_msg","您尚未登录!");req.getRequestDispatcher("/login.jsp").forward(req, response);//req与request用谁都可以}

在这里插入图片描述
在这里插入图片描述
这里为什么我们输入index.html但是显示的却是login的,为什么呢,因为浏览器有缓存
在这里插入图片描述

在这里插入图片描述
然后点删除数据,就没有了
在这里插入图片描述

在这里插入图片描述
图片就没有了!

为什么呢,因为图片这个css资源也被拦截了,这些资源的访问也需要用户登录了,才能访问,所以我们看到的是这个丑样子,如果没有输出缓存,就是好看的样子
如果在过滤器中,与登录相关的资源要放行,不能拦截,不然就很丑,然后就是没有账号,我们要注册,这个注册的资源也要放行掉
在这里插入图片描述

        HttpServletRequest req=(HttpServletRequest)request;//把request强转为HttpServletRequest//判断访问资源路径是否和登录注册相关//@WebServlet("/loginServlet")下面写的路径就是这里的路径String[] urls={"/login.jsp","/imgs/","/css/","/loginServlet","register.jsp","/registerServlet","/checkCodeServlet"};//登录页面,图片,css,登录servlet,注册jsp,注册servlet,验证码//下面就要判断我们访问的路径是否包含上面数组的任何一项,包含的话,就应该放行//获取当前访问的资源路径String url = req.getRequestURL().toString();//循环判断for (String u : urls) {if(url.contains(u)){//找到了//放行chain.doFilter(request, response);return;//后面的代码就不用执行了,这个资源放行就放行了,放行了就不用干什么了}}

在这里插入图片描述
在这里插入图片描述
这样后面都可以正常执行了

6. Listener

在这里插入图片描述
这个用的不多
第一个类型的监听是application的
ServletContextListener代表整个Web应用,ServletContextListener一被创建,就代表Web应用创建成功了,,就可以做一些初始化动作
在这里插入图片描述


@WebListener
public class ContextLoaderListener implements ServletContextListener {@Overridepublic void contextInitialized(ServletContextEvent servletContextEvent) {//加载资源System.out.println("ContextLoaderListener...");}@Overridepublic void contextDestroyed(ServletContextEvent servletContextEvent) {//释放资源}
}

在这里插入图片描述
在这里插入图片描述

总结

下一节讲AJAX

关键字:下载淘宝app免费下载安装_微信开发者工具简介_域名查询万网_上海seo网站优化

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: