Web三大组件的注册——Servlet、Filter、Listener(监听三大作用域: ServletContext、HttpSession、ServletRequest )
生活随笔
收集整理的這篇文章主要介紹了
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 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内嵌WEB服务器加载原理
- 下一篇: 数据源配置和自动管理