フィルタとリスナーに関連するメソッドと使用

フィルタとリスナー

1つは、コードです

1.コード

フィルタ:

package com.hp.filter;

import javax.servlet.*;

import java.io.IOException;
//@WebFilter(value = "/users/a.jsp",dispatcherTypes = DispatcherType.FORWARD)
public class BFilter implements Filter {
    
    
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    
    
        System.out.println("B拦截器出生");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    
    
        System.out.println("B开始拦截");
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("B拦截结束");
    }

    @Override
    public void destroy() {
    
    
        System.out.println("B拦截器销毁");
    }
}

package com.hp.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

@WebFilter("/*")
public class CountFilter implements Filter {
    
    
    Map<String,Integer> map;
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    
    
        //初始化map
        map=new HashMap<String,Integer>();
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    
    
        String ip=servletRequest.getRemoteAddr();
        ServletContext app = servletRequest.getServletContext();
        if(map.containsKey(ip)){
    
    
            //如果map里面有该ip则获取该ip并获取他的value并且为他自增
            map.put(ip,map.get(ip)+1);
        }else{
    
    
            //如果没有则设置并为他赋值
            map.put(ip,1);
        }
        //再传回application中
        app.setAttribute("map",map);
        //放行
        filterChain.doFilter(servletRequest,servletResponse);
    }

    @Override
    public void destroy() {
    
    

    }
}

package com.hp.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

@WebFilter("/users/*")
public class LoginFilter implements Filter {
    
    
    public void destroy() {
    
    
    }

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
    
    
        //判断是否登录
        HttpServletRequest request= (HttpServletRequest) req;
        Object user = request.getSession().getAttribute("user");
        if (user!=null){
    
    
            chain.doFilter(req, resp);
            System.out.println("放行");
          }else {
    
    
            System.out.println("拦截住,不放行");
            request.getRequestDispatcher("/index.jsp").forward(request,resp);
        }

    }

    public void init(FilterConfig config) throws ServletException {
    
    

    }

}

リスナー:

package com.hp.listener;

import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
import javax.servlet.ServletRequestAttributeEvent;
import javax.servlet.ServletRequestAttributeListener;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
@WebListener
public class AttributeListener implements ServletContextAttributeListener, HttpSessionAttributeListener, ServletRequestAttributeListener {
    
    
    @Override
    public void attributeAdded(ServletContextAttributeEvent app) {
    
    
        System.out.println("app域中有属性新增");
    }

    @Override
    public void attributeRemoved(ServletContextAttributeEvent app) {
    
    
        System.out.println("app域中有属性删除");
    }

    @Override
    public void attributeReplaced(ServletContextAttributeEvent app) {
    
    
        System.out.println("app域中有属性修改");
    }

    @Override
    public void attributeAdded(ServletRequestAttributeEvent req) {
    
    
        System.out.println("req域中有属性新增,新增的属性名和属性值分别是:"+req.getName()+":"+req.getValue());
    }

    @Override
    public void attributeRemoved(ServletRequestAttributeEvent req) {
    
    
        System.out.println("req域中有属性删除,删除的属性名是:"+req.getName());
    }

    @Override
    public void attributeReplaced(ServletRequestAttributeEvent req) {
    
    
        System.out.println("req域中有属性修改,修改前的属性名和属性值分别是:"+req.getName()+":"+req.getValue()+
        ",修改后的属性值是:"+req.getServletRequest().getAttribute(req.getName()));
    }

    @Override
    public void attributeAdded(HttpSessionBindingEvent httpSessionBindingEvent) {
    
    

    }

    @Override
    public void attributeRemoved(HttpSessionBindingEvent httpSessionBindingEvent) {
    
    

    }

    @Override
    public void attributeReplaced(HttpSessionBindingEvent httpSessionBindingEvent) {
    
    

    }
}

package com.hp.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class                                                                               LifeListener implements ServletContextListener, HttpSessionListener, ServletRequestListener {
    
    
    @Override
    public void contextInitialized(ServletContextEvent app) {
    
    
        System.out.println("app出生了");
    }

    @Override
    public void contextDestroyed(ServletContextEvent app) {
    
    
        System.out.println("app销毁了");
    }

    @Override
    public void requestDestroyed(ServletRequestEvent req) {
    
    
        System.out.println("req销毁了");
    }

    @Override
    public void requestInitialized(ServletRequestEvent app) {
    
    
        System.out.println("req出生了");
    }

    @Override
    public void sessionCreated(HttpSessionEvent session) {
    
    
        System.out.println("session出生了");
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent session) {
    
    
        System.out.println("session销毁了");
    }
}

総括する

上記は、フィルターとリスナーに関連するすべてのコードとメソッドです。

おすすめ

転載: blog.csdn.net/StruggleBamboo/article/details/114752122