web基础开发(五)
2017-06-17 17:01
148 查看
之前有事耽误,今天又回到了web的学习。想想大神们都在学习最新的kotlin,而我还在苦逼的java后台,想想。。。。。。算了,还是赶紧开始吧!!
过滤器
过滤器是服务器端组件,它可以截取用户端的请求与响应数据,并对信息进行过滤。过滤器应用场景
比如:我们在登录一些网站的时候,如果我们没有登录,查看一些内容的时候,就会跳出网页来提示先登录。这里就是过滤用户请求,先进行登录。拦截器工作原理
需要注意的是:过滤器在web服务器启动时,过滤器就开始生效。
过滤器的生命周期
实例化方法是在web服务器启动的时候执行,只执行一次。
初始化是在创建过滤器实例的时候执行,只执行一次,在这个方法中可读取web.xml文件中过滤器的参数。
dofilter是每次进行过滤的时候执行。
destory方法是在关闭服务器执行。
过滤器使用
创建filter类配置web.xml
public class FirstFilter implements Filter { @Override public void destroy() { // TODO Auto-generated method stub } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub chain.doFilter(arg0, arg1); } @Override public void init(FilterConfig filterConfig) throws ServletException { // TODO Auto-generated method stub } }
注意需要实现Filter接口,是javax.servlet.Filter 包下。
一定要注意在执行dofilter方法时,一定要放行chain.doFilter(arg0, arg1)。
在dofilter获取request、response代码如下:
HttpServletRequest request =(HttpServletRequest) arg0; HttpServletResponse response = (HttpServletResponse) arg1;
需要注意的是,filter-name必须一致。url配置,如果是/*就是过滤所有,如果是/index*,就是过滤所有index的。具体的大家试一下就知道了。配置的时候建议用
,比较简单。
过滤器疑惑
过滤器是能改变用户请求web资源,也能改变用户访问路径。最简单,如果你访问网站他会让你先登录。过滤器是不能处理用户的请求,因为它不是servlet。
过滤器链
一个web项目可以有多个过滤器。必须多个过滤器的url—parttern路径一致,才可以生成过滤器链。
过滤器的分类
request (默认的 )forwardd
include
error
在使用error的类别时,需要先进行error-page的配置。
error code 就是类似404,500。location是发生改错t跳转的页面。
然后在进行error的过滤,并将过滤器类别设置为error。
Servlet 3.0新功能
添加了过滤器的ansy的分类,该分类可以在执行dofilter方法时,进行异步处理,不需要让用户等待时间长。需要注意value和urlpatterns不能同时使用。
过滤实际使用场景
在使用过滤器,我们需要放行的路径的方法
通过配置过滤器初始化参数配置的时候路径之间区分采用的是;间隔。
具体使用代码如下:
private FilterConfig config; @Override public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub config =arg0; String nofilter = config.getInitParameter("nofilter"); String[] nofiltervalues = nofilter.split(";"); for(int i = 0;i<nofiltervalues.length;i++){ if(request.getRequestURL().indexOf(nofiltervalues[i])!=-1){ System.out.println(nofiltervalues[i]+"fffffffffff"); arg2.doFilter(arg0, arg1); return; }else{ continue; } } if(request.getSession().getAttribute("username")!=null){ arg2.doFilter(arg0, arg1); }else{ System.out.println("20000"); response.sendRedirect("login.jsp"); } }
相关文章推荐
- JavaWeb开发知识总结(一)-(oracle_基础)
- Jsp开发基础知识+九大隐式对象+11个内置对象+标签库(实际web开发中的典型)
- Web前端开发基础 第四课(CSS元素分类)
- 9月黄金推荐:IT零基础系列套餐(J2EE、ASP.NET、android、hadoop、数据库、游戏开发、web前端开发)
- JavaWeb基础(3)—— JavaWeb 开发基础知识
- 0. 尚硅谷_佟刚_JavaWEB_JavaWEB 开发基础
- java-web国际化开发基础和实现国际化显示的登入页面详解
- web基础开发(二)
- 安卓开发 WebView基础
- Spring MVC 4.1.3 + MyBatis零基础搭建Web开发框架(注解模式)
- web前端开发基础:什么是 HTML?
- JavaWeb 开发基础(零)
- Python全栈开发之17、tornado和web基础知识
- JavaWeb开发基础--JSP入门
- web前端开发基础环境配置
- Vaadin - 来自北欧的 Web 应用开发利器,第 1 部分: Vaadin 的基本概况和基础开发
- web基础开发(一)
- javaweb开发基础及Tomcat服务器的简单使用、配置
- 【麦子学院】02.web前端开发之HTML+CSS基础入门
- 【原创翻译】认识MVC设计模式:web应用开发的基础(基础篇)