通过idea Srping initializr脚手架工具创建项目,并选择web启动器,spring-web启动器
选择阿里脚手架镜像 https://star.aliyun.com/
创建Servlet
方法一 通过注解创建Servlet
创建第一个servlet
首页创建包
- 创建servlet类 extents HttpServlet
- 添加@webServlet注解
- 在启动类中添加@ServletComponentSca513n
在srpint boot启动时会扫描@webServlet注解
package servlet;
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;
@WebServlet(name="servlet",urlPatterns = "fisrt")
public class FiirstServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
System.out.println("servlet");
}
}
方法二 通过配置类创建Servlet
- 通过@Configuration配置类创建servlet
- 创建SecondSevlet数
- 创建ServletConfig类并添加@Configuration
package com.example.sprintbootdemo.config;
import com.example.sprintbootdemo.servlet.SeconServlet;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ServletConfig {
@Bean
public ServletRegistrationBean getservlet(){
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new SeconServlet());
servletRegistrationBean.addUrlMappings("/second");
return servletRegistrationBean;
}
}
创建filter
方式一 通过注解创建filter
创建FirstFilter并添加@WebFilter
在启动器中添加@ServletComponentScan
package com.example.sprintbootdemo.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter(filterName = "Filter",urlPatterns = "/first")
public class FirstFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("进入First");
filterChain.doFilter(servletRequest,servletResponse);
System.out.println("离开First");
}
@Override
public void destroy() {
}
}
创建Listener
方式一 通过注解创建listener
- 创建FirstListener类
- 实现ServletContextListener 接口
- 重写contextDestroyed方法(销毁时被调用)
- 重写contextInitialized方法(初始化时调用)
- 添加@WebListener注解
package com.example.sprintbootdemo.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class FirstLisenter implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent sce) {
}
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("Listener ... Init");
}
}
运动程序 Listener 初始化方式被调用
- 创建 SendListener类
- 实现ServletContextListener 接口
- 重写contextDestroyed方法(销毁时被调用)
- 重写contextInitialized方法(初始化时调用)
- 创建listener配置类
- 注解配置类@Configuration
- 添加getservletContextListener方法
package com.example.sprintbootdemo.config;
import com.example.sprintbootdemo.listener.SendListener;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
@Configuration
public class ListenerConfig {
@Bean
public ServletListenerRegistrationBean getservletContextListener(){
ServletListenerRegistrationBean bean = new ServletListenerRegistrationBean(new SendListener());
return bean;
}
}
运行程序,secondListener被调用