4.5-springboot与web开发(五)_沉鱼的字符串的博客-爱代码爱编程
目录
6、Web原生组件注入(Servlet、Filter、Listener)
6.1、使用Servlet API 注入(Servlet、Filter、Listener)
6.2、使用RegistrationBean 注入(比较简便,只需要在Config配置类中注入即可生效)
6、Web原生组件注入(Servlet、Filter、Listener)
6.1、使用Servlet API 注入(Servlet、Filter、Listener)
目录结构
1.Servlet组件注入
步骤:
1.必须继承 httpServlet
2.要加 @WebServlet(urlpatterns=“/my”) , 注解设置访问路径
3.使用 Servlet API
在Application启动类中添加扫包:
@ServletComponentScan(basePackages = "com.tulingxueyuan.request")
Application启动类,下同1.2.3条
package com.tulingxueyuan.request;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
//3.对于SpringBoot中使用原生的组件注入,servlet要配置扫描器,@ServletComponentScan(basePackages = "com.tulingxueyuan.request")
@ServletComponentScan(basePackages = "com.tulingxueyuan.request")
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
MyServlet.java
package com.tulingxueyuan.request.servlet;
import javax.jws.WebService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//1.必须继承httpservlert
//2.要加@WebServlet(urlpatterns="/my"),注解设置访问路径
@WebServlet(urlPatterns = "/my")
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("66666");
}
}
2.Filter组件注入
步骤:
1.自定义的Filter(过滤器)必须实现,Javax 下Servlet 的 Filter类,然后重写方法。
2.最后在类上标注@WebFilter 注解,另外对于SpringBoot中使用原生的组件注入,servlet要配置扫描器,@ServletComponentScan(basePackages = "com.tulingxueyuan.request")
MyFilter.java
package com.tulingxueyuan.request.servlet;
import javax.jws.WebService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//1.必须继承httpservlert
//2.要加@WebServlet(urlpatterns="/my"),注解设置访问路径
@WebServlet(urlPatterns = "/my")
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("66666");
}
}
3.Listener组件注入
步骤:
1.实现自定义监听器,需要实现 ServletContextListener接口,然后添加@WebListener注解,重写方法,
2.在启动类上配置
@ServletComponentScan(basePackages = “com.tulingxueyuan.request.servlet”)注解,用以扫描包
package com.tulingxueyuan.request.servlet;
import lombok.extern.slf4j.Slf4j;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
//1.实现自定义监听器,需要实现 ServletContextListener接口,然后添加@WebListener注解,重写方法,
//2.在启动类上配置@ServletComponentScan(basePackages = "com.yan")注解,用以扫描包
@WebListener
@Slf4j
public class MyServletContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
log.info("MyServletContextListener监听到项目初始化完成");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
log.info("MyServletContextListener监听到项目销毁");
}
}
6.2、使用RegistrationBean 注入(比较简便,只需要在Config配置类中注入即可生效)
包括下面3个:
- ServletRegistrationBean
- FilterRegistrationBean
- ServletListenerRegistrationBean
package com.tulingxueyuan.request.servlet;
//import jdk.nashorn.internal.objects.NativeReferenceError;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.servlet.ServletContextListener;
import java.util.Arrays;
@Configuration
public class MyRegistrationConfig {
@Bean
public ServletRegistrationBean myServlet(){
MyServlet myServlet = new MyServlet();
return new ServletRegistrationBean(myServlet,"/my","/my02");
}
@Bean
//Filter拦截器
public FilterRegistrationBean myFilter(){
MyFilter myFilter = new MyFilter();
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(myFilter);
filterRegistrationBean.setUrlPatterns(Arrays.asList("/my","/css/*"));
//
return filterRegistrationBean;
}
@Bean
//Listener监听器
public ServletListenerRegistrationBean myListener(){
MyServletContextListener myServletContextListener = new MyServletContextListener();
return new ServletListenerRegistrationBean(myServletContextListener);
}
}