web17天过滤器,监听器
2017-08-23 23:41
267 查看
1.过滤器
什么是过滤器:Servlet过滤器跟Servlet 十分相似,但它具有拦截客户端(浏览器)请求的功能,Servlet过滤器可以改变请求中的内容。接口方法:init() doFilter() destroy()
常用功能:
1.设置字符集 private static final String DEFAULT_ENCODING = "UTF-8"; private String currentEncoding; /** * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding(currentEncoding); response.setCharacterEncoding(currentEncoding); chain.doFilter(request, response); } /** * @see Filter#init(FilterConfig) */ public void init(FilterConfig fConfig) throws ServletException { String encoding = fConfig.getInitParameter("encoding"); currentEncoding = encoding == null ? DEFAULT_ENCODING :encoding; } 2.过滤客户端传输的请求 String username = request.getParameter("username"); System.out.println(username); if(username == "zhangsan") { chain.doFilter(request, response); }else { HttpServletResponse hsr = (HttpServletResponse) response; hsr.sendError(403); }
url匹配
1. 精准匹配:如:/index.do 2. 路径匹配:如/index/*,/webapp/index/1,/webapp/index/2 3. 扩展匹配:*.jsp 4. 优先级规则:先精准后再模糊、/* 5. /*.action这样会报错
2.监听器
主要监听的事件常用功能统计在线人数
列子:
1.监听人数 public void sessionCreated(HttpSessionEvent se) { // 启动 会话的时候+1 // TODO Auto-generated method stub System.out.println("HttpSessionEvent created"); HttpSession session = se.getSession(); session.setMaxInactiveInterval(5);// 防止关闭后不触发session 给session设置一个触发时间 ServletContext ctx = session.getServletContext();// 获取上下文 AtomicInteger counter = (AtomicInteger) ctx.getAttribute("counter");// 获取上下文中counter属性 int total = counter.incrementAndGet();// 获取当前值自增 System.out.println(total); } public void sessionDestroyed(HttpSessionEvent se) { // TODO Auto-generated method stub System.out.println("HttpSession Destroyed"); HttpSession session = se.getSession(); int time = session.getMaxInactiveInterval(); System.out.println(time);// session 间隔时间 ServletContext ctx = session.getServletContext(); AtomicInteger counter = (AtomicInteger) ctx.getAttribute("counter"); int total = counter.decrementAndGet();// 获取当前的值,并自减 System.out.println(total); } public void contextInitialized(ServletContextEvent sce) { // TODO Auto-generated method stub System.out.println("ServletContextEvent"); ServletContext contextEvent = sce.getServletContext();// 获取上细纹 contextEvent.setAttribute("counter", new AtomicInteger(0));// 线程安全的设置计数常量 }
相关文章推荐
- Web小结---Servlet,JSP,过滤器和监听器,四个作用域和九个内置对象,EL表达式语言,自定义标签,JSTL,国际化与汉字的编码
- JavaEE Web开发之Filter和Listener(过滤器和监听器)
- Java-Web系列(四)--servlet,过滤器,监听器
- JavaWeb中监听器+过滤器+拦截器区别
- web.xml中的监听器(Listener)、过滤器(Filter)
- Web中的监听器 过滤器 拦截器
- web.xml 中的过滤器(拦截器)Filter与监听器Listener的作用和区别?
- javaweb 过滤器和监听器总结
- 监听器过滤器拦截器在web项目中的作用位置
- JavaWeb---在线用户显示与管理---(监听器/过滤器)
- web.xml过滤器和监听器的配置
- javaweb之过滤器监听器
- ssh整合web.xml过滤器和监听器的配…
- Web框架学习篇--Strust1(三) 过滤器、监听器
- java WEB开发:过滤器、监听器、拦截器的区别
- web项目中的监听器,过滤器以及自定义servlet的执行顺序
- java-web 过滤器 & 监听器 & 拦截器
- JavaWeb_day5-监听器和过滤器
- web.xml 中的过滤器(拦截器)Filter与监听器Listener的作用和区别?
- Web小结---Servlet,JSP,过滤器和监听器,四个作用域和九个内置对象,EL表达式语言,自定义标签,JSTL,国际化与汉字的编码