Web三大组件的注册——Servlet、Filter、Listener(监听三大作用域: ServletContext、HttpSession、ServletRequest )
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 )相关推荐
- JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下)
JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下) Reference 转载于:https://www.cnblogs.com/Jeremy2001 ...
- SpringBoot的Web开发入门案例5—注册Servlets, Filter, Listener
SpringBoot的Web开发入门案例5-注册Servlets, Filter, Listener 注册Servlet 创建MyServlet类 package com.blu.conf;impor ...
- servlet,filter,listener区别
时间的朋友 随笔 - 2314, 文章 - 3, 评论 - 101, 引用 - 0 servlet/filter/listener/interceptor区别与联系 一.概念: 1.servlet:s ...
- servlet/filter/listener/interceptor区别与联系
2019独角兽企业重金招聘Python工程师标准>>> servlet/filter/listener/interceptor区别与联系 博客分类: java 由于最近两个月工作比较 ...
- Spring Boot Web应用程序中注册 Servlet 的方法实例
Spring Boot Web应用程序中注册 Servlet 的方法实例 本文实例工程源代码:https://github.com/KotlinSpringBoot/demo1_add_servlet ...
- Oracle监听注册和sqlnet,Oracle监听的动态注册与静态注册
Oracle监听 介于Oracle的数据库和客户端之间的通道.因为数据库本身不对外提供服务,所以需要通过监听器来实现. 几个相关的参数: local_listener db_domain remote ...
- Oracle监听注册和sqlnet,Oracle监听配置(四)--如何实现静态、动态注册
Oracle监听配置(四)--如何实现静态.动态注册 第三节我们已经大概了解什么是静态注册和动态注册,下面我们将通过两个例子来更加深入了解它们之间的区别. 静态注册:当listener使用的是非标准端 ...
- [vue] vue组件里写的原生addEventListeners监听事件,要手动去销毁吗?为什么?
[vue] vue组件里写的原生addEventListeners监听事件,要手动去销毁吗?为什么? 需要,原生DOM事件必须要手动销毁,否则会造成内存泄漏 个人简介 我是歌谣,欢迎和大家一起交流前后 ...
- Spring Boot注册Servlet三大组件(Servlet, Filter, Listener)
Spring Boot默认使用的Tomcat的Servlet容器,这个容器我们可以自己替换,比如替换成支持JSP的Servlet容器,这个容器已经帮我们注册好了一个Servlet(Dispatcher ...
最新文章
- 图片轮播点击轮播(二)
- My first Blog
- return 的使用
- ACM入门之【约数】
- AndroidStudio中调试时提示waiting for debugger的奇葩解决
- 人生苦短,我用python——当我在玩python的时候我玩些什么 -
- javascript简单拖拽效果
- WIN7 7100+TOAD最新版本9.7.2.5切换到SCRIPT显示注释的时候是乱码。表数据中文显示正常!求解决方案。...
- executor-cores参数并未对vcores生效的原因分析
- Linux下G++编译
- js解密学习--steam登入密码解密分析
- web前端开发面试题(五)
- 阿里云Dataworks
- 如何给程序添加数字签名 sign
- c语言小球碰壁,小球碰壁效果
- Vue2使用记录(待续)
- Python 成为最受欢迎的语言靠实力吗?
- 行式数据库 VS 列式数据库
- Audio的framecount、framesize、sampleRate计算关系
- 音频开发工具包LEADTOOLS教程:如何在eDiscovery应用程序使用?
热门文章
- jatoolsprinter web打印控件直接打印不弹出
- 前端监控和前端埋点方案设计--摘抄
- Python内置函数(57)——setattr
- 阶段-关口系统--范围界定阶段---学习记录
- PMP考试资料:这个项目值得去做吗
- wpf中的点击窗口放大放小按钮怎么写_Python tkinter教程01:创建窗口
- [雪峰磁针石博客]2018最佳12个开源或免费web服务器和客户端性能测试工具
- MySQL8.0新特性——默认使用caching_sha2_password作为身份验证插件
- 微信小程序朋友圈分享图片生成方案实现
- echarts实现柱状图分页展示