springboot(3):整合Servlet,filter,listener
1.springboot整合Servlet(2种方式)
添加maven依赖:spring-boot-starter-web
1>通过注解扫描完成Servlet组件的注册(方式1)
步骤:需要3步
1)自定义一个继承javax.servlet.http.HTTPServlet类的CustomServlet,并实现doGet()或doPost()方法。
2)在CustomServlet类上添加注解@WebServlet:
@WebServlet(name="customServlet",urlPatterns={"/"})
该注解的作用等同于下面的传统的Servlet配置
<servlet>
3)在启动类上添加注解@ServletConComponentScan,该注解在启动的时候会扫描@WebServlet,并将该类实例化。
2>通过配置类注册bean完成Servlet组件的注册(方式2)
步骤:需要2步
1)自定义一个继承javax.servlet.http.HTTPServlet类的CustomServlet,并实现doGet()或doPost()方法。
2)在启动类或自定义配置类中定义以下方法用于注册Servlet:
2.springboot整合Filter(2种方式)
1>通过注解扫描完成Filter组件的注册(方式1)
步骤:需要3步
1)自定义一个实现javax.servlet.Filter接口的CustomFilter,并实现doFilter方法。
2)在CustomServlet类上添加注解@WebFilter。
@WebFilter(name="customFilter",urlPatterns={"*/user"})
该注解的作用等同于下面的传统的Filter配置
3)在启动类上添加注解@ServletConComponentScan,该注解在启动的时候会扫描@WebServlet,并将该类实例化。
2>通过配置类注册bean完成Servlet组件的注册(方式2)
步骤:需要2步
1)自定义一个实现javax.servlet.Filter接口的CustomFilter,并实现doFilter方法。
2)在启动类或自定义配置类中定义以下方法用于注册Filter:
3.springboot整合Listener(2种方式)
具体要监听哪些组件就实现相应的监听器接口,这里实现的是ServletContextListener接口。
1>通过注解扫描完成Listener组件的注册(方式1)
步骤:需要3步
1.自定义一个实现javax.servlet.ServletContextListener接口的CustomListener。
2)在CustomListener类上添加注解@WebListener,不需要设置参数。
3)在启动类上添加注解@ServletConComponentScan,该注解在启动的时候会扫描@WebServlet,并将该类实例化。
2>通过配置类注册bean完成Listener组件的注册(方式2)
步骤:需要2步
1)自定义一个实现javax.servlet.Filter接口的CustomFilter,并实现doFilter方法。
2)在启动类或自定义配置类中定义以下方法用于注册Listener:
3.springboot可以直接访问的静态资源
springboot可以直接访问的静态资源的路径必须符合以下两种情况:
1.静态资源位于classpath/static
该路径在myeclipse的web项目中就是src/main/resources目录下的static文件夹。
注意:目录名必须为static。
2.静态资源位于ServletContext的根目录下
该路径在myeclipse的web项目中就是src/main/webapp目录下。
4.文件上传
文件上传需要2个jar: commons-fileupload-1.3.3.jar和commons-io-2.6.jar
步骤:
1.创建控制器Controller。
由于需要通过访问指定的URL实现文件上传,因此需要创建controller类,在该类在创建处理上传的方法。
2.定义处理文件上传的方法。
@RequestMapping(value="/upload")
public String testUpload(@RequestParam("file") MultipartFile file) throws IOException{
/*将文件上传到服务器的哪里*/
InputStream in=file.getInputStream();
String fileName=file.getOriginalFilename();
byte[] b=new byte[1024];
OutputStream out=new FileOutputStream("E:\\"+fileName);
int len=-1;
/*将文件以字节流的形式写到文件中*/
while((len=in.read(b))!=-1){
out.write(b, 0, len);
}
out.close();
in.close();
System.out.println("上传成功");
return "success"; //跳转到成功页面
}
代码中的注解@RequestParam的参数file指的是form表单中的参数,至此文件上传的处理已经完成了。
3.在HTML或jsp页面中创建上传文件的表单。
<h3>以下表单用于测试文件上传功能</h3>
<!-- 文件上传只能使用post方式,且enctype的值必须为multipart/form-data -->
<form action="test/upload" method="post" enctype="multipart/form-data">
文件:<input name="file" type="file"><br>
<input type="submit" value="文件上传">
</form>
至此文件上传的功能已经完成了。
上面完成的只是基础的文件上传,并未设置文件单次上传的大小以及上传文件的总量。
接下来在application.properties配置文件中配置上传的属性:
#设置单个文件上传的大小
spring.http.multipart.maxFileSize=200MB
#设置一次请求上传文件的总容量
spring.http.multipart.maxRequestSize=400MB
springboot(3):整合Servlet,filter,listener的更多相关文章
- SpringBoot学习笔记(6)----SpringBoot中使用Servlet,Filter,Listener的三种方式
在一般的运用开发中Controller已经大部分都能够实现了,但是也不排除需要自己实现Servlet,Filter,Listener的方式,SpringBoot提供了三种实现方式. 1. 使用Bean ...
- SpringBoot整合WEB开发--(九)整合Servlet,Filter,Listener
简介: 如果需要整合第三方框架时,可能还是不得不使用Servlet,Filter,Listener,Springboot中也有提供支持. @WebServlet("/my") pu ...
- Spring Boot整合Servlet,Filter,Listener,访问静态资源
目录 Spring Boot整合Servlet(两种方式) 第一种方式(通过注解扫描方式完成Servlet组件的注册): 第二种方式(通过方法完成Servlet组件的注册) Springboot整合F ...
- ServletContextInitializer添加 servlet filter listener
ServletContextInitializer添加 servlet filter listener https://www.cnblogs.com/pomer-huang/p/9639322.ht ...
- JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下)
JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下) Reference
- SpringBoot---注册Servlet,Filter,Listener
1.概述 1.1.当使用 内嵌的Servlet容器(Tomcat.Jetty等)时,将Servlet,Filter,Listener 注册到Servlet容器的方法: 1.1.1.直接注册Bean ...
- servlet filter listener interceptor 知识点
这篇文章主要介绍 servlet filter listener interceptor 之 知识点.博文主要从 概念,生命周期,使命介绍其区别.详情如下: 概念 生命周期 使命 servlet ...
- servlet/filter/listener/interceptor区别与联系
转自:http://www.cnblogs.com/doit8791/p/4209442.html servlet.filter.listener是配置到web.xml中(web.xml 的加载顺序是 ...
- 【转】servlet/filter/listener/interceptor区别与联系
原文:https://www.cnblogs.com/doit8791/p/4209442.html 一.概念: 1.servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台 ...
随机推荐
- C++多重继承分析——《虚继承实现原理(虚继承和虚函数)》
博客转载:https://blog.csdn.net/longlovefilm/article/details/80558879 一.虚继承和虚函数概念区分 虚继承和虚函数是完全无相关的两个概念. 虚 ...
- VirtualAlloc加载shellcode免杀一点记录
一个很好的学习网站 推荐一下: https://docs.microsoft.com/zh-cn/windows/win32/api/ 0x01 VirtualAlloc VirtualAlloc: ...
- 基于Redis的分布式锁到底安全吗(下)?
2017-02-24 自从我写完这个话题的上半部分之后,就感觉头脑中出现了许多细小的声音,久久挥之不去.它们就像是在为了一些鸡毛蒜皮的小事而相互争吵个不停.的确,有关分布式的话题就是这样,琐碎异常,而 ...
- 02_02Session中Config的参数设置
import tensorflow as tfimport numpy as np # todo 学习 Session中的参数Config=tf.ConfigProto()的使用.重点是GPU相关的参 ...
- [V5] ARM: dts: Change i2s compatible string on exynos5250【转】
本文转载自:https://patchwork.kernel.org/patch/2845464/ Padmavathi VennaAug. 16, 2013, 4:26 a.m. UTC This ...
- C# ffmpeg 视频处理格式转换具体案例
C# ffmpeg 视频处理格式转换 C# ffmpeg 视频处理格式转换avi到MP4格式 1.代码如下: using System;using System.Diagnostics; namesp ...
- JVM内存空间划分与作用
虚拟机栈:Stack Fame 栈桢 程序计数器(Program Counter): 本地方法栈:主要用于处理本地方法 堆(Heap): JVM管理的最大一块内存空间 方法区(Method Area) ...
- 关于Android8.0 静态注册广播 行为变更的说明。
Andorid 8.0 对广播的使用做了变更. 当广播接收器使用静态注册方式使用时,除了一些例外,这个接收器接收不到隐式广播. 注意这个“隐式”是重点. 看了网上几篇文章,对这个变更理解有误.错误的理 ...
- 转「服务器运维」如何解决服务器I/O过高的问题
问题缘起: 当我习惯性地用top查看任务运行状态时,发现我运行的100个任务,只有3个在运行,其他都在摸鱼状态.同时发现我的任务进程都是"D"状态(未截图),而不是R(运行)状态. ...
- postgresql 大写问题
postgresql数据库中,表名和字段名一般用小写.如果某个用了大写,请注意,要用双引号进行标识,否则数据库不会识别.