2、SpringBoot整合Web層技術
阿新 • • 發佈:2020-08-28
整合Servlet方式一(通過註解掃描完成Servlet元件的註冊)
1.建立Serverlet
2.修改啟動類,新增 @ServletComponentScan
新增web依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.3.1.RELEASE</version>
</dependency>
1.建立Serverlet
@WebServlet(name="FirstServlet", urlPatterns = "/first")
public class FirstServlet extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response){
System.out.println("First Servlet...");
}
}
2.修改啟動類,新增 @ServletComponentScan
@SpringBootApplication
@ServletComponentScan//在SpringBoot啟動時會掃描@WebServlet,對該類進行例項化
public class SpringbootwebApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootwebApplication.class, args);
}
}
通過:localhost:8080/first 訪問
整合Servlet方式二(通過方法完成Servlet元件的註冊)
1.建立Serverlet繼承HttpServlet
2.建立Servlet配置類
1.建立Serverlet
public class SecondServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response){
System.out.println("Second Servlet...");
}
}
2.建立Servlet配置類
@Configuration
public class ServletConfig {
// 完成Servlet元件的註冊
@Bean
public ServletRegistrationBean getServletRegistrationBean(){
ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());
//新增該Servlet的訪問路徑
bean.addUrlMappings("/second");
return bean;
}
}
啟動類
@SpringBootApplication
public class SpringbootwebApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootwebApplication.class, args);
}
}
新增@Configuration相當於這個類是一個spring配置檔案上下文,新增@Bean的這個方法會在spring容器啟動的時候進行例項化
通過url:localhost:8080/second 訪問
整合Filter方式一(通過註解掃描完成Filter元件註冊)
1.建立Filter
2.修改啟動類,新增@ServletComponentScan註解
1.建立Filter
//@WebFilter(filterName = "FirstFilter",urlPatterns = {"*.do","*.jsp"})
@WebFilter(filterName = "FirstFilter", urlPatterns = "/first")
public class FirstFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("進入First Filter");
filterChain.doFilter(servletRequest, servletResponse);
System.out.println("離開First Filter");
}
}
2.修改啟動類,新增@ServletComponentScan註解
@SpringBootApplication
@ServletComponentScan
public class SpringbootwebApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootwebApplication.class, args);
}
}
因為Filter本身屬於Servlet的一個子技術,所以通過@ServletComponentScan也可以掃描到@WebFilter的類
通過url:localhost:8080/first 訪問
整合Filter方式二(通過方法完成Filter元件註冊)
1.建立Filter實現Filter
2.建立Filter配置類
1.建立Filter
public class SecondFilter implements Filter{
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("進入Second Filter");
filterChain.doFilter(servletRequest, servletResponse);
System.out.println("離開Second Filter");
}
}
建立Filter配置類
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean getFilterRegistrationBean(){
FilterRegistrationBean bean = new FilterRegistrationBean(new SecondFilter());
// bean.addUrlPatterns(new String[]{"*.do","*.jsp"});
bean.addUrlPatterns("/second");
return bean;
}
}
通過 url:localhost:8080/second
整合Listener方式一(通過註解掃描完成Listener元件註冊)
1.編寫Listener實現ServletContextListener
2.修改啟動類新增@ServletComponentScan
1.編寫Listener
@WebListener
public class FirstListener implements ServletContextListener{
//監聽銷燬的方法
public void contextDestroyed(ServletContextEvent event){
}
// 監聽初始化的方法
public void contextInitialized(ServletContextEvent event){
System.out.println("Listener....Init.....");
}
}
2.修改啟動類新增@ServletComponentScan
@SpringBootApplication
@ServletComponentScan
public class SpringbootwebApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootwebApplication.class, args);
}
}
整合Listener方式二(通過方法完成Listener元件註冊)
1.編寫Listener
2.建立Listenter啟動類
1.編寫Listener
public class SecondListener implements ServletContextListener {
//監聽銷燬的方法
public void contextDestroyed(ServletContextEvent event){
}
// 監聽初始化的方法
public void contextInitialized(ServletContextEvent event){
System.out.println("SecondListener....Init.....");
}
}
2.建立Listenter啟動類
@Configuration
public class ListenerConfig {
@Bean
public ServletListenerRegistrationBean getServletListenerRegistrationBean(){
ServletListenerRegistrationBean bean = new ServletListenerRegistrationBean(new SecondListener());
return bean;
}
}