过滤器
实现过滤器的步骤
1、创建普通的Java类
2、实现Javax.servlet.Filter接口,并实现对应的方法
设置web.xml的配置文件
过滤器链
如果有多个过滤器,拦截顺序为web.xml中的配置顺序,谁先配置谁先执行
放行时,如果有下一个过滤器,会自动放行到下一个过滤器,如果没有则放行到指定资源
请求时:先配置先执行,响应时:相反的顺序执行
字符集过滤器
处理post请求 request.setCharacterEncoding(“UTF-8”);
get请求
得到请求类型 String method = request.getMethod();
判断是否是get请求 if(“GET”.equalsIgnoceCase(method))
得到服务器版本 String serverInfo = request.getServletContext().getServerInfo();//Apache Tomcat/8.0.45
通过截取,得到具体的版本号 String versionStr =serverInfo.substring(serverInfo("/")+1),serverInfo.indexOf("."));
判断服务器的版本是否是Tomcat7以下版本 if(versionStr !=null && Integer.parseInt(versionStr)<8 )
实现javax.servlet.Fileter的接口
init(FilterConfig filterConfig)
服务器自动调用,初始化方法,只执行一次,在服务器启动时就初始化
doFilter(ServletRequest request, ServletResponse response)
过滤方法,每次请求时都会调用
destroy()
销毁方法,服务器自动调动,只会执行一次,在关闭服务器时触发
非法访问拦截
默认拦截所有资源
什么情况需要拦截
用户访问一些需要登录成功之后才能访问的资源
什么时候放行
1、指定页面,放行(无需登录即可访问的页面,比如登录页面、注册页面)
2、指定资源,放行(静态资源,放行:存放在statics目录下的资源放行)
3、指定操作,放行(无需用户登录即可执行的操作,放行:比如登录操作、注册操作)
4、登录状态,放行(session作用域中是否存在指定对象)
如果以上情况都不满足,则拦截跳转到登录界面
过滤器
最新推荐文章于 2023-02-07 18:49:56 发布