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 {
@Override
public void init(ServletConfig config) throws ServletException {
String env = config.getInitParameter("env");
String hello = config.getInitParameter("hello");
System.out.println(env+" "+hello);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
@Override
protected 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<>();
//注入Servlet
registrationBean.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 {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
String env = filterConfig.getInitParameter("env");
String hello = filterConfig.getInitParameter("hello");
System.out.println(env+" "+hello);
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("doFilter");
chain.doFilter(request,response);
}
@Override
public 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<>();
//注入filter
registrationBean.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 {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("contextInitialized");
}
@Override
public 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>();
//注入listener
bean.setListener(listener);
bean.setEnabled(applistenerEnable);
return bean;
}
}