栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

过滤器、监听器、拦截器的介绍以及用法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

过滤器、监听器、拦截器的介绍以及用法

三个问题

1、什么是监听器?有什么作用?怎样用的?

监听器(listener)就是application、session、request三个对象创建、销毁 

或者往其中添加修改删除属性时

自动执行代码的功能组件。

用法:

(1)定义一个类去实现ServletContextListener接口

public class BannerListener implements ServletContextListener {

	
	@Override
	public void contextInitialized(ServletContextEvent arg0) {
		
		ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
		IBannerService bannerService = app.getBean(IBannerService.class);
		List bannerList = bannerService.findAllShowBanner();

		ServletContext application = arg0.getServletContext();
		application.setAttribute("bannerList", bannerList);
	}

	
	@Override
	public void contextDestroyed(ServletContextEvent arg0) {
		// TODO Auto-generated method stub

	}
}

(2)web.xm里面的配置


	
		org.springframework.web.context.ContextLoaderListener
	
	
		contextConfigLocation
		classpath:applicationContext.xml
	
	
		com.phonemarket.listener.BannerListener
	

2、什么是过滤器?有什么作用?怎样用的?

过滤请求的,对请求进行过滤,有“通行证”则放行,没有就指定它跳到哪个页面。

过滤器用法:

自定义一个类实现Filter接口

public class ManagerFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
        Object user = httpServletRequest.getSession().getAttribute("user");
        if (user == null){
            //返回登录页面
            httpServletRequest.getRequestDispatcher("/pages/user/login.jsp").forward(servletRequest, servletResponse);
        }else {
            //放行
            filterChain.doFilter(servletRequest, servletResponse);
        }
    }

    @Override
    public void destroy() {

    }
}

web.xml的配置


    
        ManagerFilter
        com.java.filter.ManagerFilter
    
    
        ManagerFilter
        
        /pages/manager/*
        /manager/bookServlet
        /orderServlet
    

3、什么是拦截器?有什么作用?怎样用的?

拦截器也是过滤请求的,作用感觉和过滤器差不多,但他们还是有区别的,拦截器是spring框架的,过滤器是javaweb的三大组件之一(servlet、listener、filter)

拦截器用法:

三个方法,请求之前执行、controller获取数据后返回视图页面前执行、跳转完页面后执行。

普遍都是重写第一个方法,进行一些身份的验证

(1)定义一个拦截器类实现 HandlerInterceptor 接口

public class AdminLoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
        Admins admin = (Admins) httpServletRequest.getSession().getAttribute("admin");
        if(admin!=null){
            return true;
        }
        httpServletResponse.sendRedirect(httpServletRequest.getContextPath()+"/view/admin");
        return false;
    }

    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {

    }
}

(2)、这一部分是要写在 springmvc.xml的配置文件里面的,设置 拦截路径+绑定拦截器


		
		
			
			
			
		

		
			
			
		
	

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/852343.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号