기사 디렉토리
[Shang Silicon Valley] SpringBoot2 Zero-Basic 입문 튜토리얼 - 강사: Lei Fengyang
Notes
길은 아직 진행 중이고, 꿈은 여전히 기다리고 있다
1. 기본 서블릿 API 사용
이런 방식으로 기본 Servlet API를 사용하는 것이 좋습니다.
1.1, 서블릿
Servlet 3.0 이상에서 제공되는 기본 주석을 사용하십시오.
@WebServlet(urlPatterns = “/my”)
효과: web.xml에 구성을 작성할 필요가 없고 직접 응답하며 Spring 인터셉터가 없으며 urlPatterns: 액세스 경로가 없습니다.
기본 구성 클래스 @ServletComponentScan(basePackages = “com.atguigu.admin.servlet”)에서 기본 서블릿 구성 요소를 검색할 패키지를 지정합니다. 작성하지 않으면 그룹 구성 클래스 아래의 모든 패키지가 기본적으로 검색됩니다.
@WebServlet(urlPatterns = "/my")
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("6666");
}
}
1.2, 필터
Servlet 3.0 이상에서 제공되는 기본 주석을 사용하십시오.
@WebFilter(urlPatterns={"/css/ ","/images/ "})
효과: web.xml, urlPatterns: 차단 경로에 구성을 작성할 필요가 없으며 여러 경로를 차단할 수 있습니다.
@WebFilter(urlPatterns={
"/my"})
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("MyFilter初始化完成");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("MyFilter工作");
chain.doFilter(request, response);
}
@Override
public void destroy() {
System.out.println("MyFilter销毁");
}
}
1.3, 청취자
Servlet 3.0 이상에서 제공되는 기본 주석을 사용하십시오.
@웹리스너
@WebListener
public class MyServletContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("监听项目初始化完成");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("监听项目销毁");
}
}
1.4 네이티브 서블릿이 인터셉터에 의해 인터셉트되지 않는 이유
시스템에는 두 개의 서블릿이 있습니다(스프링 부트: DispatcherServlet–>/ 및 MyServlet -->/my)
1.5 확장: DispatchServlet 등록 방법
● DispatcherServlet 속성은 컨테이너에 자동으로 구성되어 WebMvcProperties에 바인딩되며, 해당 구성 파일 구성 항목은 spring.mvc이다.
● ServletRegistrationBean을 통해 DispatcherServlet을 구성합니다.
● 기본 매핑은 / 경로입니다.
개발을 위해 Tomcat-Servlet을 사용하기 전에는 여러 서블릿 경로가 서로 겹치고 정확한 최적화 원칙을 사용하여 여러 서블릿이 동일한 레이어 경로를 처리할 수 있습니다.
예:
두 개의 경로
A: /my/
B: /
my/1 /my/1이 전송되면 B 경로가 사용되고, /my/2가 전송되면 A 경로가 사용됩니다.
2. RegistrationBean 사용
ServletRegistrationBean, FilterRegistrationBean, ServletListenerRegistrationBean을 사용하여 구성 요소를 등록할 수도 있습니다.
@Configuration
public class MyRegistConfig {
// servlet
@Bean
public ServletRegistrationBean myServlet() {
MyServlet servlet = new MyServlet();
return new ServletRegistrationBean<MyServlet>(servlet, "/my");
}
// filter
@Bean
public FilterRegistrationBean myFilter() {
MyFilter myFilter = new MyFilter();
FilterRegistrationBean filter = new FilterRegistrationBean(new MyFilter());
filter.setUrlPatterns(Arrays.asList("/my"));
return filter;
}
// listener
@Bean
public ServletListenerRegistrationBean myListener() {
MyServletContextListener listener = new MyServletContextListener();
return new ServletListenerRegistrationBean(listener);
}
}