Spring Boot实战:Servlet与Filter深度解析

0 下载量 100 浏览量 更新于2024-09-03 收藏 268KB PDF 举报
"本文将详细介绍如何在Spring Boot项目中使用Servlet和Filter,提供具体的步骤和示例代码,适用于Servlet 3.0及以上版本,旨在帮助学习者或开发者更好地理解和应用这些技术。" 在Spring Boot中集成Servlet和Filter是常见的需求,这有助于我们处理HTTP请求、实现过滤逻辑以及进行自定义的Web服务操作。本文将分为两部分来讲解:Servlet的使用和Filter的使用。 ### 一、Servlet 3.0+ 版本方式 #### 1. 创建Spring Boot工程 首先,创建一个名为`07-servlet`的Spring Boot项目,确保POM.xml配置正确,这里使用的是`spring-boot-starter-parent`版本为`2.1.5.RELEASE`作为父 pom,以便获得Spring Boot的默认配置和依赖管理。 ```xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> ``` #### 2. 添加依赖 为了支持Servlet功能,需要在项目中添加相应的依赖。Spring Boot默认集成了Tomcat服务器,因此无需额外引入Servlet库,但可以添加`spring-boot-devtools`实现热部署。 ```xml <dependencies> <!-- 热部署依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> </dependencies> ``` #### 3. 注册Servlet 在Servlet 3.0+版本中,可以通过注解方式或配置类方式注册Servlet。以下是一个简单的注解方式示例: ```java import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; @WebServlet("/hello") public class MyServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.getWriter().write("Hello, Spring Boot!"); } } ``` 在这个例子中,`@WebServlet("/hello")`注解用于指定Servlet的URL映射。 #### 4. 配置类方式 如果使用配置类方式,可以在`WebMvcConfigurer`或`ServletRegistrationBean`中进行注册。例如: ```java @Configuration public class ServletConfig implements WebApplicationInitializer { @Override public void onStartup(ServletContext servletContext) throws ServletException { AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); context.register(ServletConfig.class); servletContext.addListener(new ContextLoaderListener(context)); ServletRegistration.Dynamic servlet = servletContext.addServlet("myServlet", MyServlet.class); servlet.addMapping("/hello"); } } ``` 在这里,我们创建了一个`ServletRegistrationBean`并设置了Servlet的映射路径。 ### 二、Filter的使用 Filter在Spring Boot中的使用与Servlet类似,可以使用注解或配置类方式。 #### 1. 注解方式 使用`@WebFilter`注解注册Filter: ```java @WebFilter(filterName = "myFilter", urlPatterns = "/*") public class MyFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("Before request processing..."); chain.doFilter(request, response); System.out.println("After request processing..."); } } ``` `filterName`用于指定Filter的名称,`urlPatterns`定义了Filter作用的URL。 #### 2. 配置类方式 在配置类中注册Filter,可以使用`DelegatingFilterProxy`或`FilterRegistrationBean`: ```java @Configuration public class FilterConfig { @Bean public FilterRegistrationBean myFilterRegistration() { FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setFilter(new MyFilter()); registration.setName("myFilter"); registration.addUrlPatterns("/*"); return registration; } } ``` 这里创建了一个`FilterRegistrationBean`,设置Filter实例、名称和URL映射。 通过以上步骤,你可以在Spring Boot项目中成功地使用Servlet和Filter。这种方式灵活且易于理解,适合各种Web应用程序的需求。在实际开发中,可以根据项目需求选择合适的方式进行Servlet和Filter的注册和配置。