Spring Boot整合Servlet(两种方式)

  1. 新建一个maven项目



    创建完成后的结构图:

  2. 引入pom.xml依赖
	<!--引入父项目-->
<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代码:

@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启动类



代码:

@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

  2. 创建springboot启动类



    在main方法下新建一个注册Servlet组件的方法
@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

  2. 控制台打印信息

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

第一种方式(通过注解扫描方式完成Fliter组件的注册)

  1. 新建一个Filter类

  2. 继承Filter父类 实现接口



    代码如下:
@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. 创建启动类



    代码如下:
@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注解

  2. 启动类



    代码如下:
@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代码:
@WebListener()
public class firstListener implements ServletContextListener{
//监听application对象的创建
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("-----------application对象创建-----------------");
}
}
  1. 创建启动类



    代码:
@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. 启动类



    代码:
@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. 运行启动类访问浏览器 直接访问资源路径



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

Spring Boot整合Servlet,Filter,Listener,访问静态资源的更多相关文章

  1. spring boot整合servlet、filter、Listener等组件方式

    创建一个maven项目,然后此项目继承一个父项目:org.springframework.boot 1.创建一个maven项目: 2.点击next后配置父项目及版本号 3.点击finish后就可查看p ...

  2. spring boot 2.x 系列 —— spring boot 整合 servlet 3.0

    文章目录 一.说明 1.1 项目结构说明 1.2 项目依赖 二.采用spring 注册方式整合 servlet 2.1 新建过滤器.监听器和servlet 2.2 注册过滤器.监听器和servlet ...

  3. Spring Boot 整合Servlet

    冷知识,几乎用不到 在spring boot中使用Servlet有两种实现方法: 方法一: 正常创建servlet,然后只用注解@ServletComponentScan package clc.us ...

  4. Spring Boot整合Servlet、Filter、Listener

    整合 Servlet   方式一:   编写 servlet package com.bjsxt.controller; import javax.servlet.ServletException; ...

  5. SpringBoot整合WEB开发--(九)整合Servlet,Filter,Listener

    简介: 如果需要整合第三方框架时,可能还是不得不使用Servlet,Filter,Listener,Springboot中也有提供支持. @WebServlet("/my") pu ...

  6. spring boot 2.x拦截器导致静态资源404终极解决办法

    首先添加application文件static路径,我的是yml文件 spring: mvc: static-path-pattern: /static/**然后注册拦截器类如下方法; @Overri ...

  7. Spring Boot 整合 Web 开发

    这一节我们主要学习如何整合 Web 相关技术: Servlet Filter Listener 访问静态资源 文件上传 文件下载 Web三大基本组件分别是:Servlet,Listener,Filte ...

  8. spring boot默认访问静态资源

    演示spring boot默认可以直接访问静态资源的2种方法: 第一种:在src/main/resources资源目录下创建一个名为"static"的文件夹(该文件夹的名称是规定死 ...

  9. Spring Boot整合实战Spring Security JWT权限鉴权系统

    目前流行的前后端分离让Java程序员可以更加专注的做好后台业务逻辑的功能实现,提供如返回Json格式的数据接口就可以.像以前做项目的安全认证基于 session 的登录拦截,属于后端全栈式的开发的模式 ...

随机推荐

  1. 【30分钟学完】canvas动画|游戏基础(6):坐标旋转探究

    前言 本篇主要讲坐标旋转及其应用,这是编程动画必不可少的技术. 阅读本篇前请先打好前面的基础. 本人能力有限,欢迎牛人共同讨论,批评指正. 坐标旋转 模拟场景:已知一个中心点(centerX,cent ...

  2. JZOJ 5305. 【NOIP2017提高A组模拟8.18】C (Standard IO)

    5305. [NOIP2017提高A组模拟8.18]C (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Description ...

  3. 【猫狗数据集】利用tensorboard可视化训练和测试过程

    数据集下载地址: 链接:https://pan.baidu.com/s/1l1AnBgkAAEhh0vI5_loWKw提取码:2xq4 创建数据集:https://www.cnblogs.com/xi ...

  4. 关于form表单:hover没有修改表单子元素样式

    原来在写todolist的时候遇到的一个问题 是关于form表单的hover属性设置背景颜色 想要实现的效果如下: 但是一开始直接给form加hover选择器的时候是这样: 可以看到这样子直接加会使得 ...

  5. 安装部署hyperledger fabric1.0

    安装环境 CentOS7 1.安装Docker Docker Hub在国外,安装会较慢,可用国内镜像DaoCloud.可执行以下命令安装Docker. sudo yum install -y yum- ...

  6. PPP协议(简述)

    PPP协议(链路层协议):用于点对点信道.互联网用户通常需要连接到某个ISP(运营商)之后才能接入到互联网,PPP协议是用户计算机和ISP(运营商)进行通信时所使用的数据链路层协议.该协议可支持同一时 ...

  7. vscode 对于 md的编写 左侧 大纲 很重要!!

    vscode 对于 md的编写 左侧 大纲 很重要!!

  8. Checkbox 勾上 不让勾下 同步手动刷新复选框状态 iview

    <Checkbox v-show="!disabledForm" ref="youwubianhuaRef" :value="youwubian ...

  9. vue 阻止冒泡 @click.stop=

    vue 阻止冒泡 @click.stop= vue中处理冒泡标准姿势 事件修饰符 Vue.js 为 v-on 提供了事件修饰符,修饰符是由点开头的指令后缀来表示的.这些事件修饰符主要有以下几个: st ...

  10. 【vue生命周期】- 详解

    这篇文章通俗易懂,写的不错,本文转载至:https://www.cnblogs.com/happ0/p/8075562.html 详解Vue Lifecycle 先来看看vue官网对vue生命周期的介 ...