Web三大组件的注册



Servlet

@WebServlet(“/user.action”)


<servlet>

</servlet>

<servlet-mapping>

</servlet-mapping>



Filter

@WebFilter()


<filter>

</filter>

<filter-mapping>

</filter-mapping>



Listener

@WebListener


<listener>

<listener-class></listener-class>

</listener>





UserServlet.java

package com.sxt.controller;import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class UserServlet extends HttpServlet {@Overridepublic void init(ServletConfig config) throws ServletException {String env = config.getInitParameter("env");String hello = config.getInitParameter("hello");System.out.println(env+"  "+hello);}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req,resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("hello--UserServlet");}
}
 /*** 创建UserServlet*/@Bean("userServlet")@ConditionalOnClass(value = {UserServlet.class})public UserServlet userServlet(){return new UserServlet();}/*** 注册UserServlet*/@Bean@ConditionalOnBean(value = {UserServlet.class})public ServletRegistrationBean<UserServlet> servletRegistrationBeanUserServlet(UserServlet userServlet){
//    public ServletRegistrationBean<UserServlet> servletRegistrationBeanUserServlet(){
//        UserServlet userServlet=new UserServlet();//创建注册器对象ServletRegistrationBean<UserServlet> registrationBean=new ServletRegistrationBean<>();//注入ServletregistrationBean.setServlet(userServlet);//设置参数registrationBean.addInitParameter("env","UTF-8");registrationBean.addInitParameter("hello","你好");//设置映射registrationBean.addUrlMappings("/user1.action","/user2.action");return registrationBean;}


AppFilter.java

package com.sxt.controller;import javax.servlet.*;
import java.io.IOException;public class AppFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {String env = filterConfig.getInitParameter("env");String hello = filterConfig.getInitParameter("hello");System.out.println(env+"  "+hello);}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {System.out.println("doFilter");chain.doFilter(request,response);}@Overridepublic void destroy() {}
}
/*** 创建Filter*/@Bean("appFilter")@ConditionalOnClass(value = {AppFilter.class})public AppFilter appFilter(){return new AppFilter();}/*** 注册Filter*/@Bean@ConditionalOnBean(value = {AppFilter.class})public FilterRegistrationBean<AppFilter> filterFilterRegistrationBeanAppFilter(AppFilter appFilter){//创建注册器FilterRegistrationBean<AppFilter> registrationBean=new FilterRegistrationBean<>();//注入filterregistrationBean.setFilter(appFilter);//设置参数registrationBean.addInitParameter("env","filter-UTF-8");registrationBean.addInitParameter("hello","filter-你好");//设置映射
//        registrationBean.addUrlPatterns("/*");registrationBean.addServletNames("userServlet");return registrationBean;}


Listener的分类

监听三大作用域

ServletContext

|--ServletContextListener     ServletContextAttributeListener

HttpSession

|--HttpSessionListner     HttpSessionAttributeListener

ServletRequest

|--ServletReqeustListener   ServletRequestAttributeListener


AppListener.java

package com.sxt.controller;import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;public class AppListener implements ServletContextListener {@Overridepublic void contextInitialized(ServletContextEvent sce) {System.out.println("contextInitialized");}@Overridepublic void contextDestroyed(ServletContextEvent sce) {}
}
package com.sxt.config;import com.sxt.controller.AppListener;
import lombok.Data;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;@Configuration
@Component
@ConfigurationProperties(prefix = "web")
@Data
public class WebConfig {private Boolean applistenerEnable=true;/*** 创建Listener*/@Bean@ConditionalOnClass(value = {AppListener.class})public AppListener appListener(){return new AppListener();}@Bean@ConditionalOnBean(value = {AppListener.class})public ServletListenerRegistrationBean<AppListener> servletListenerRegistrationBeanAppListener(AppListener listener){//创建注册器ServletListenerRegistrationBean<AppListener> bean=new ServletListenerRegistrationBean<AppListener>();//注入listenerbean.setListener(listener);bean.setEnabled(applistenerEnable);return bean;}
}

Web三大组件的注册——Servlet、Filter、Listener(监听三大作用域: ServletContext、HttpSession、ServletRequest )相关推荐

  1. JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下)

    JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下) Reference 转载于:https://www.cnblogs.com/Jeremy2001 ...

  2. SpringBoot的Web开发入门案例5—注册Servlets, Filter, Listener

    SpringBoot的Web开发入门案例5-注册Servlets, Filter, Listener 注册Servlet 创建MyServlet类 package com.blu.conf;impor ...

  3. servlet,filter,listener区别

    时间的朋友 随笔 - 2314, 文章 - 3, 评论 - 101, 引用 - 0 servlet/filter/listener/interceptor区别与联系 一.概念: 1.servlet:s ...

  4. servlet/filter/listener/interceptor区别与联系

    2019独角兽企业重金招聘Python工程师标准>>> servlet/filter/listener/interceptor区别与联系 博客分类: java 由于最近两个月工作比较 ...

  5. Spring Boot Web应用程序中注册 Servlet 的方法实例

    Spring Boot Web应用程序中注册 Servlet 的方法实例 本文实例工程源代码:https://github.com/KotlinSpringBoot/demo1_add_servlet ...

  6. Oracle监听注册和sqlnet,Oracle监听的动态注册与静态注册

    Oracle监听 介于Oracle的数据库和客户端之间的通道.因为数据库本身不对外提供服务,所以需要通过监听器来实现. 几个相关的参数: local_listener db_domain remote ...

  7. Oracle监听注册和sqlnet,Oracle监听配置(四)--如何实现静态、动态注册

    Oracle监听配置(四)--如何实现静态.动态注册 第三节我们已经大概了解什么是静态注册和动态注册,下面我们将通过两个例子来更加深入了解它们之间的区别. 静态注册:当listener使用的是非标准端 ...

  8. [vue] vue组件里写的原生addEventListeners监听事件,要手动去销毁吗?为什么?

    [vue] vue组件里写的原生addEventListeners监听事件,要手动去销毁吗?为什么? 需要,原生DOM事件必须要手动销毁,否则会造成内存泄漏 个人简介 我是歌谣,欢迎和大家一起交流前后 ...

  9. Spring Boot注册Servlet三大组件(Servlet, Filter, Listener)

    Spring Boot默认使用的Tomcat的Servlet容器,这个容器我们可以自己替换,比如替换成支持JSP的Servlet容器,这个容器已经帮我们注册好了一个Servlet(Dispatcher ...

最新文章

  1. 图片轮播点击轮播(二)
  2. My first Blog
  3. return 的使用
  4. ACM入门之【约数】
  5. AndroidStudio中调试时提示waiting for debugger的奇葩解决
  6. 人生苦短,我用python——当我在玩python的时候我玩些什么 -
  7. javascript简单拖拽效果
  8. WIN7 7100+TOAD最新版本9.7.2.5切换到SCRIPT显示注释的时候是乱码。表数据中文显示正常!求解决方案。...
  9. executor-cores参数并未对vcores生效的原因分析
  10. Linux下G++编译
  11. js解密学习--steam登入密码解密分析
  12. web前端开发面试题(五)
  13. 阿里云Dataworks
  14. 如何给程序添加数字签名 sign
  15. c语言小球碰壁,小球碰壁效果
  16. Vue2使用记录(待续)
  17. Python 成为最受欢迎的语言靠实力吗?
  18. 行式数据库 VS 列式数据库
  19. Audio的framecount、framesize、sampleRate计算关系
  20. 音频开发工具包LEADTOOLS教程:如何在eDiscovery应用程序使用?

热门文章

  1. jatoolsprinter web打印控件直接打印不弹出
  2. 前端监控和前端埋点方案设计--摘抄
  3. Python内置函数(57)——setattr
  4. 阶段-关口系统--范围界定阶段---学习记录
  5. PMP考试资料:这个项目值得去做吗
  6. wpf中的点击窗口放大放小按钮怎么写_Python tkinter教程01:创建窗口
  7. [雪峰磁针石博客]2018最佳12个开源或免费web服务器和客户端性能测试工具
  8. MySQL8.0新特性——默认使用caching_sha2_password作为身份验证插件
  9. 微信小程序朋友圈分享图片生成方案实现
  10. echarts实现柱状图分页展示