Listener Filter Servlet的执行顺序通常为: 监听器、过滤器、servlet
@RestController中的主Servlet都是DispatcherServlet,其默认的url-pattern为“/”。也可以自己添加Servlet,有2种方式:1)代码实现方式; 2)注解方式
代码实现方式: 通过ServletRegistrationBean、FilterRegistrationBean、ServletListenerRegistrationBean实现
实例:
package com.test.conf;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.embedded.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.test.servlet.TestServletByCode;
@Configuration
public class ServletRegistrationConf {
@Autowired
private TestServletByCode testServletByCode;
@Bean
public ServletRegistrationBean servletRegistrationBean() {
return new ServletRegistrationBean(testServletByCode, "/ts/testCodeServlet");
}
}
package com.test.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Service;
@Service
public class TestServletByCode extends HttpServlet{
private static final long serialVersionUID = -8685285401859800066L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doGet====");
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doPost===");
}
}
注解方式: 在 SpringBootApplication 上使用@ServletComponentScan 注解,Servlet、Filter、Listener 可以直接通过 @WebServlet、@WebFilter、@WebListener 注解自动注册
实例:
package com.test;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@SpringBootApplication
@ServletComponentScan
public class MainApplication implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(MainApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
System.out.println("spring boot running........");
}
}
package com.test.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class TestServletContextListener implements ServletContextListener{
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("ServletContex初始化");
System.out.println(sce.getServletContext().getServerInfo());
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("ServletContex销毁");
}
}
package com.test.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
@WebFilter(urlPatterns="/*",filterName="testFilter")
public class TestFilterByAnnotation implements Filter {
@Override
public void destroy() {
System.out.println("过滤器销毁");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println("执行过滤操作");
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig config) throws ServletException {
System.out.println("过滤器初始化");
}
}
package com.test.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(urlPatterns="/ts/testWebServlet", description="Servlet的说明")
public class TestServletByAnnotation extends HttpServlet{
private static final long serialVersionUID = -8685285401859800066L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doGet*******");
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doPost*********");
}
}
注:@ServletComponentScan在1.3版以后才有,需添加对应版本,如:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.4.0.RELEASE</version>
</dependency>
转载于:https://my.oschina.net/superwind20/blog/1524139
分享到:
相关推荐
"Spring Boot的listener(监听器)简单使用实例详解" 在Spring Boot中,listener(监听器)是一种非常重要的组件,它可以帮助我们在应用程序启动和停止时执行一些特定的任务。今天,我们将详细介绍Spring Boot的...
继续深入学习,你还可以了解Servlet的过滤器、监听器、会话管理以及MVC框架如Spring MVC中的Servlet应用等高级主题。在实际开发中,Servlet常与JSP、JSF、Struts、Spring Boot等技术结合,构建出强大的企业级Web应用...
例如,要注册一个Servlet组件,首先需要编写一个继承自HttpServlet的Servlet实现类,然后创建一个ServletRegistrationBean的Bean,将Servlet实例包装后添加到Spring Boot的Bean容器中,并且可以设置Servlet的加载...
Spring Boot底层的自动化都是由这些SPI实现类来实现的,包括初始化、监听器、自动配置导入监听器、自动配置导入过滤器、自动配置、失败分析器、可用模板提供者等。 6. 获取main方式 Spring Boot找到main方式的...
在早期的Java Web应用中,`web.xml`是部署描述符,用于定义Servlet、过滤器、监听器等核心组件。然而,随着Spring的发展,特别是Spring 3.0引入的Java配置特性,我们可以通过编写Java类来完成这些配置,使得配置过程...
Java Servlet是Java平台上的一个核心技术,用于构建动态web应用程序。Servlet是一种服务器端的Java小程序,它可以接收并响应...同时,关注最新技术趋势,如Spring Boot和微服务架构,这些都将扩展Servlet的使用场景。
4. **Filter**: 为了实现Session共享,Spring Session 使用一个自定义的Servlet过滤器(`DelegatingSessionFilter`),这个过滤器负责拦截HTTP请求,处理Session相关操作。 5. **Spring Boot集成**: 如果使用Spring...
六、Servlet的过滤器Filter Servlet API还提供了Filter接口,允许在请求到达Servlet之前对其进行预处理,或者在响应返回给客户端之后进行后处理。Filter可以实现URL级别的拦截、登录检查等功能。 七、...
2. **Servlet容器**:如Tomcat、Jetty等,它们负责管理Servlet的生命周期,加载Servlet类,创建Servlet实例,并调用其方法来处理请求和响应。 3. **Servlet API**:主要包括`javax.servlet`和`javax.servlet.http`...
5. **多线程模型**:Servlet默认是线程安全的,因为服务器会为每个请求创建一个新的线程,所以开发者需要注意并发问题,避免在Servlet实例中使用静态变量存储请求相关数据。 6. **过滤器(Filter)**:Servlet API...
6. **spring-web**: 为Web应用程序提供了基础支持,包括HTTP多部分解析、Servlet监听器、过滤器等。 7. **spring-webmvc**: 也称为Spring MVC,是Spring中的Web应用模型-视图-控制器实现,提供了一种组织和处理HTTP...
Spring Cloud是基于Spring Boot实现的云应用开发工具集,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)操作的...
这些在web.xml中配置,实例中可能涉及登录验证、字符编码转换等过滤器。 8. **文件上传与下载**:JavaWeb可以处理文件上传和下载,使用Servlet API或者第三方库如Apache Commons FileUpload。实例中可能包含文件...
- 每个Servlet实例通常对应多个线程,服务器接收到请求后,会在一个已存在的Servlet实例上创建新线程来处理请求,提高并发性能。 - 注意线程安全问题,避免在Servlet中使用非线程安全的全局变量。 5. **Servlet...
6. **spring-web.jar**:提供了与Web相关的功能,如Servlet监听器、过滤器,以及HTTP客户端支持。 7. **spring-webmvc.jar**:Spring MVC是Spring Web模块的一部分,是一个模型-视图-控制器框架,用于构建Web应用...
6. **过滤器和监听器** - Servlet API中还包括Filter和Listener接口,它们能增强应用的功能,比如实现登录验证、字符编码转换、会话管理等。 7. **Web容器** - 如Tomcat、Jetty等,它们提供运行Servlet和JSP的环境...
`WEB-INF/web.xml`是传统的部署描述符,定义了Servlet、过滤器和监听器等组件及其配置。 6. **Servlet与JSP**: Servlet是Java编写的服务器端组件,处理HTTP请求并生成响应。JSP(JavaServer Pages)是一种视图技术...
虽然Spring Boot推荐使用注解驱动的配置,但在这个例子中,可能还涉及到一些传统Web应用的配置,比如Servlet容器的配置、过滤器或者监听器的设置,因此保留了`web.xml`。 这个项目作为一个综合实例,演示了如何将...
如果需要更复杂的功能,如session管理、过滤器等,就需要使用Servlet容器。 在实际项目中,我们通常不会从零开始编写整个HTTP服务器和Servlet引擎,而是选择已有的成熟框架,如Spring Boot,它提供了内置的Tomcat...