前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot整合Servlet,Filter,Listener,访问静态资源

Spring Boot整合Servlet,Filter,Listener,访问静态资源

作者头像
JokerDJ
发布2023-11-27 13:15:34
1880
发布2023-11-27 13:15:34
举报
文章被收录于专栏:JokerDJ

Spring Boot整合Servlet(两种方式)

  1. 新建一个maven项目
在这里插入图片描述
在这里插入图片描述

创建完成后的结构图:

在这里插入图片描述
在这里插入图片描述
  1. 引入pom.xml依赖
代码语言:javascript
复制
	<!--引入父项目-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.4.RELEASE</version>
    </parent>
    <dependencies>
        <!--SpringBoot web启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
第一种方式(通过注解扫描方式完成Servlet组件的注册):
  1. 通过注解扫描方式完成Servlet组件的注册 1.1. 创建一个Servlet
在这里插入图片描述
在这里插入图片描述

1.2. 编写Servlet代码:

代码语言:javascript
复制
@WebServlet(name = "firstServlet",urlPatterns = "/firstServlet") //urlPatterns:访问路径
public class firstServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("进来了firstServlet");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doPost(request,response);
    }

1.3. 编写启动类 创建springboot启动类

在这里插入图片描述
在这里插入图片描述

代码:

代码语言:javascript
复制
@SpringBootApplication
//在spring boot启动时会扫描@WebServlet注解,并创建该类的实例
@ServletComponentScan
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

注意:在启动类上需要加上@ServletComponentScan注解 意思是:在启动时扫描@WebServlet注解 ,创建Servlet的实例

1.4. 运行启动类 ,在浏览器输入localhost:8080/firstServlet

在这里插入图片描述
在这里插入图片描述

控制台输出信息

在这里插入图片描述
在这里插入图片描述
第二种方式(通过方法完成Servlet组件的注册)
  1. 创建一个Servlet
在这里插入图片描述
在这里插入图片描述
  1. 创建springboot启动类
在这里插入图片描述
在这里插入图片描述

在main方法下新建一个注册Servlet组件的方法

代码语言:javascript
复制
@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }

    //添加一个方法,方法名无要求,必须返回ServletRegistrationBean。注册Servlet对象
    @Bean     //主键等价于<bean>标签
    public ServletRegistrationBean<SecondServlet> getServletRegistrationBean(){
        ServletRegistrationBean<SecondServlet> bean=
                new ServletRegistrationBean<SecondServlet>(new SecondServlet(),"/SecondServlet");
        return bean;
    }
}
  1. 运行启动类 在浏览器输入 localhost:8080/SecondServlet
在这里插入图片描述
在这里插入图片描述
  1. 控制台打印信息
在这里插入图片描述
在这里插入图片描述

Springboot整合Filter (和整合Servlet方式差不多)

第一种方式(通过注解扫描方式完成Fliter组件的注册)
  1. 新建一个Filter类
在这里插入图片描述
在这里插入图片描述
  1. 继承Filter父类 实现接口
在这里插入图片描述
在这里插入图片描述

代码如下:

代码语言:javascript
复制
@WebFilter(filterName = "firstFilter", urlPatterns = "/firstFilter")
public class firstFilter implements Filter {
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        System.out.println("----进入FirstFilter-----");
        chain.doFilter(request, response);//放行
        System.out.println("----离开FirstFilter-----");
    }
}
  1. 创建启动类

代码如下:

代码语言:javascript
复制
@SpringBootApplication
//在spring boot启动时会扫描@WebServlet @WebFilter @WebListener注解,并创建该类的实例
@ServletComponentScan
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }

}

运行启动类,在浏览器输入 localhost:8080/firstFilter

在这里插入图片描述
在这里插入图片描述

这里报404是因为没有写放行后的路径;

控制台打印信息:

在这里插入图片描述
在这里插入图片描述
第二种方式(通过方法方式完成Filter组件的注册)
  1. 创建Filter类 不用写@WebFilter注解
在这里插入图片描述
在这里插入图片描述
  1. 启动类
在这里插入图片描述
在这里插入图片描述

代码如下:

代码语言:javascript
复制
@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }

    //添加一个方法
    @Bean
    public FilterRegistrationBean<SecondFilter> getFilterRegistrationBean(){
        FilterRegistrationBean<SecondFilter> bean=
                new FilterRegistrationBean<SecondFilter>(new SecondFilter());
        bean.addUrlPatterns("*.do","*.jsp","/SecondFilter"); //以.do , .jsp , SecondFilter结尾路径的都会进到过滤器
        return bean;
    }
}
  1. 运行启动类 在浏览器输入 localhost:8080/SecondFilter
在这里插入图片描述
在这里插入图片描述

控制台打印信息:

在这里插入图片描述
在这里插入图片描述

Springboot整合Listener (同上)

通过注解扫描方式完成Fliter组件的注册
  1. 创建Listener类
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Listener代码:

代码语言:javascript
复制
@WebListener()
public class firstListener implements ServletContextListener{
    //监听application对象的创建
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("-----------application对象创建-----------------");
    }
}
  1. 创建启动类
在这里插入图片描述
在这里插入图片描述

代码:

代码语言:javascript
复制
@SpringBootApplication
@ServletComponentScan  //在spring boot启动时会扫描@WebServlet @WebFilter @WebListener注解,并创建该类的实例
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}
  1. 运行启动类 看控制台打印信息
在这里插入图片描述
在这里插入图片描述
第二种方式(通过方法完成Listener组件注册)

代码一样 省略代码 直接上代码

  1. 创建Listener类
  2. 启动类
在这里插入图片描述
在这里插入图片描述

代码:

代码语言:javascript
复制
@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
    @Bean
    public ServletListenerRegistrationBean<firstListener> getServletListenerRegistrationBean(){
        ServletListenerRegistrationBean<firstListener> bean=
                new ServletListenerRegistrationBean<firstListener>(new firstListener());
        return bean;
    }
}
  1. 运行启动类 看控制台打印信息
在这里插入图片描述
在这里插入图片描述

Springboot访问静态资源(两种方式)

第一种方式(通过ServletContext的根目录下寻找静态资源)

1.在src/main 下创建一个webapp的目录(目录名称必须为webapp) 在webapp下创建不同目录存放不同的静态资源,如:images 放图片 .

在这里插入图片描述
在这里插入图片描述

2. 运行启动类访问 直接访问资源路径

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第二种方式(从classpath/static的目录下寻找静态资源)

在src/main/resources下创建一个static的目录(目录名称必须为static) 在static下创建不同目录存放不同的静态资源,如:images 放图片 .

在这里插入图片描述
在这里插入图片描述

2. 运行启动类访问浏览器 直接访问资源路径

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

以上就是本教程的相关内容,感谢观看,转载请注明出处

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-11-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Spring Boot整合Servlet(两种方式)
    • 第一种方式(通过注解扫描方式完成Servlet组件的注册):
      • 第二种方式(通过方法完成Servlet组件的注册)
      • Springboot整合Filter (和整合Servlet方式差不多)
        • 第一种方式(通过注解扫描方式完成Fliter组件的注册)
          • 第二种方式(通过方法方式完成Filter组件的注册)
          • Springboot整合Listener (同上)
            • 通过注解扫描方式完成Fliter组件的注册
              • 第二种方式(通过方法完成Listener组件注册)
              • Springboot访问静态资源(两种方式)
                • 第一种方式(通过ServletContext的根目录下寻找静态资源)
                  • 第二种方式(从classpath/static的目录下寻找静态资源)
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档