-
Servlet组件扫描
- @org.springframework.boot.web.servlet.ServletComponentScan
- 指定包路径扫描
- String[] value() default{}
- String[] basePackage() default{}
- Class<?> basePackageClasses() default {}
- 指定包路径扫描
- @org.springframework.boot.web.servlet.ServletComponentScan
-
注解方式注册
- Servlet
- Filter
- 1.实现javax.servlet.Filter
- @org.springframework.web.filter.OncePerRequestFilter
- 1.实现javax.servlet.Filter
- 监听器
代码:
@WebServlet( name = "myServlet", urlPatterns = "/myservlet", initParams = { @WebInitParam(name = "myname", value = "myvalue") } ) public class MyServlet extends HttpServlet { private String value; public void init(ServletConfig servletConfig) throws ServletException { super.init(servletConfig); value = servletConfig.getInitParameter("myname"); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Writer writer = resp.getWriter(); ServletContext servletContext = req.getServletContext(); servletContext.log("myServlet doGet..."); writer.write("<html><body>Hello,World, My value = " + value + "</body></html>"); } }
@WebFilter(servletNames = "myServlet") public class MyFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { ServletContext servletContext = request.getServletContext(); servletContext.log("/myservlet was filtered"); filterChain.doFilter(request, response); } }
@WebListener public class MyServletRequestListener implements ServletRequestListener { @Override public void requestInitialized(ServletRequestEvent sre) { HttpServletRequest request = (HttpServletRequest) sre.getServletRequest(); ServletContext servletContext = request.getServletContext(); servletContext.log("request was Initialized"); } @Override public void requestDestroyed(ServletRequestEvent sre) { HttpServletRequest request = (HttpServletRequest) sre.getServletRequest(); ServletContext servletContext = request.getServletContext(); servletContext.log("request was Destroyed"); } }
-
Springboot API方式注册
代码:
public class MyServlet2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Writer writer = resp.getWriter();
ServletContext servletContext = req.getServletContext();
servletContext.log("myServlet doGet...");
writer.write("<html><body>Hello,World From MyServlet2</body></html>");
}
}
public class MyFilter2 extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
doSomething();
filterChain.doFilter(request, response);
}
public void doSomething() {
RequestAttributes requestAttribute = RequestContextHolder.getRequestAttributes();
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) requestAttribute;
HttpServletRequest request = servletRequestAttributes.getRequest();
ServletContext servletContext = request.getServletContext();
String requestURI = request.getRequestURI();
servletContext.log(requestURI + " was filtered");
}
}
@Bean
public static ServletRegistrationBean servletRegistrationBean() {
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean();
servletRegistrationBean.setServlet(new MyServlet2());
servletRegistrationBean.setName("my-servlet2");
servletRegistrationBean.addUrlMappings("/springboot/myservlet2");
servletRegistrationBean.addInitParameter("myname", "myvalue");
return servletRegistrationBean;
}
@Bean
public static FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new MyFilter2());
filterRegistrationBean.addServletNames("my-servlet2");
filterRegistrationBean.setDispatcherTypes(DispatcherType.REQUEST, DispatcherType.FORWARD, DispatcherType.INCLUDE);
return filterRegistrationBean;
}
@Bean
public static ServletListenerRegistrationBean servletListenerRegistrationBean() {
ServletListenerRegistrationBean servletListenerRegistrationBean = new ServletListenerRegistrationBean();
servletListenerRegistrationBean.setListener(new MyServletRequestListener());
return servletListenerRegistrationBean;
}