整合servlet

1.继承HttpServlet

2.添加@WebServlet注解

@WebServlet(name="FirstServlet",urlPatterns="/firstServlet")
public class FirstServlet extends HttpServlet{ @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doGet");
// 解决json中文乱码
resp.setContentType("text/json;charset=UTF-8");
resp.setCharacterEncoding("UTF-8");
PrintWriter out = resp.getWriter();
String str ="{\"name\":\"欧女士\",\"sex\":\"30岁啦\"}";
out.println(str);
out.flush();
out.close();
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doPost");
} }

3.在启动类添加@ServletComponentScan

@SpringBootApplication
@ServletComponentScan
public class AppMain {
public static void main(String[] args) {
SpringApplication.run(AppMain.class, args);
}
}

浏览器访问

整合filter

1.实现Filter

2.添加注解 @WebFilter(filterName=“FirstFilter”,urlPatterns={".do",".jsp","/first"})
新建FirstFilter过滤器

@WebFilter(filterName="FirstFilter",urlPatterns={"*.xx","/firstFilter"})
public class FirstFilter implements Filter{
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
throws IOException, ServletException {
System.out.println("==="+arg0.getParameter("sign"));
/* if("no".equals(arg0.getParameter("sign"))){
return;
}*/
arg2.doFilter(arg0, arg1);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}

新建HelloController

@RestController
public class HelloController {
@GetMapping("/firstFilter")
public String firstFilter(String sign){
System.out.println("---"+sign);
return "firstFilter";
}
}

3.启动类添加 @ServletComponentScan

浏览器访问

整合listener

1.实现 ServletContextListener

2.添加WebListenter注解
新建FirstListener 监听器

@WebListener
public class FirstListener implements ServletContextListener{
@Override
public void contextDestroyed(ServletContextEvent arg0) { }
@Override
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("---contextInitialized---");
} }

3.启动类添加 @ServletComponentScan

访问静态资源

访问静态资源springboot有两种方式

第一种

在/resources下建static文件夹,名字一定要命名为static。如图

新建list.html文件

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户列表</title>
</head>
<body>
用户列表界面<br/>
<img alt="图片" src="/image/3.jpg">
</body>
</html>

浏览器访问,如图

第二种

在src/main/webapp ,在main下建文件夹webapp,如图

文件上传

1.新建fileUpload.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>
<form action="/helloFileUpdate" method="post" enctype="multipart/form-data">
上传文件:<input type="file" name="filename"><br/>
<input type="submit" value="提交">
</form>
</body>
</html>

2.新建HelloController

@RestController
public class HelloController { @RequestMapping("/helloFileUpdate")
public Object helloFileUpdate(MultipartFile filename){
System.out.println("文件名称"+filename.getOriginalFilename());
Map<String,Object> retMap = new HashMap<String,Object>();
try {
filename.transferTo(new File("D:\\upload\\"+filename.getOriginalFilename()));
retMap.put("sign", "ok");
retMap.put("mes", "文件上传成功");
} catch (IllegalStateException | IOException e) {
e.printStackTrace();
retMap.put("sign", "ok");
retMap.put("mes", "文件上传失败");
}
return retMap;
}
}

3.配置上传文件大小等

编辑application.yml文件,添加如下配置

spring:
http:
multipart:
maxFileSize: 1MB
maxRequestSize: 5MB

注:maxFileSize表示单个上传文件的大小,maxRequestSize表示多个文件一共的大小

异步上传文件

很多时候我们是异步上传图片的,选择后就上传然后进行浏览

1.新建fileUploadAjax.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>文件上传</title>
<script src="/plug/jquery/jquery-1.11.3.min.js"></script>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data" id="resource">
上传文件:<input type="file" name="filename" id="filename"><br/>
标&nbsp;&nbsp;题:<input type="text" name="title" id="title"><br/>
备&nbsp;&nbsp;注:<input type="text" name="remark" id="remark"><br/>
<input onclick="subResource()" type="button" value="提交"><br/>
<img alt="没有上传图片" src="D:/upload/1.png" id="img1">
</form>
</body>
<script type="text/javascript">
function subResource(){
//$("form").serialize() 与new FormData 区别
var formData = new FormData($("#resource")[0])
$.ajax({
url: "/helloFileUpdate",
type: 'POST',
data: formData,
async: false,
cache: false,
contentType: false,
processData: false,
success: function (data) {
$("#img1").attr("src",data.filePath);
},
error: function (data) {
alert(data)
}
});
} </script> </html>

注:("form").serialize()和newFormData(("form").serialize()和 new FormData(("form").serialize()和newFormData((‘#uploadForm‘)[0])都是序列化表单,实现表单的异步提交,但是二者有区别:首先,前者,只能序列化表单中的数据 ,比如文本框等input select等的数据,但是对于文件,比如文件上传,无法实现,那么这时候,FormData就上场了

2.新建HelloController

@RestController
public class HelloController { @RequestMapping("/helloFileUpdate")
public Object helloFileUpdate(MultipartFile filename,String remark,String title){
System.out.println("文件名称"+filename.getOriginalFilename()+" remark="+remark+" title="+title);
Map<String,Object> retMap = new HashMap<String,Object>();
try {
File file = new File("D:\\upload\\"+filename.getOriginalFilename());
filename.transferTo(file);
retMap.put("sign", "ok");
retMap.put("filePath", file.getAbsolutePath());
retMap.put("mes", "文件上传成功");
} catch (IllegalStateException | IOException e) {
e.printStackTrace();
retMap.put("sign", "ok");
retMap.put("mes", "文件上传失败");
}
return retMap;
}
}

多文件上传

只要把接收参数 MultipartFile filename 修改为 MultipartFile[] filename 数组即可

springboot整合web开发(整合servlet、filter、listener、访问静态、文件上传)的更多相关文章

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

    目录 Spring Boot整合Servlet(两种方式) 第一种方式(通过注解扫描方式完成Servlet组件的注册): 第二种方式(通过方法完成Servlet组件的注册) Springboot整合F ...

  2. iOS开发之网络编程--使用NSURLConnection实现文件上传

    前言:使用NSURLConnection实现文件上传有点繁琐.    本文并没有介绍使用第三方框架上传文件. 正文: 这里先提供用于编码测试的接口:http://120.25.226.186:3281 ...

  3. servlet 通过 FileItem 实现多文件上传

    [本文简介] 一个servlet 多文件上传的简单例子. [依赖包] commons-fileupload-1.3.1.jar commons-io-2.2.jar [依赖包下载] commons-f ...

  4. 一个简单的QQ隐藏图生成算法 通过jQuery和C#分别实现对.NET Core Web Api的访问以及文件上传

    一个简单的QQ隐藏图生成算法   隐藏图不是什么新鲜的东西,具体表现在大部分社交软件中,预览图看到的是一张图,而点开后看到的又是另一张图.虽然很早就看到过这类图片,但是一直没有仔细研究过它的原理,今天 ...

  5. 【温故知新】Java web 开发(三)Form表单与上传下载文件

    简介:在一和二的基础之上,这次来记录下如何在页面提交表单数据,以及文件的上传和下载整个流程,请求也不仅限于GET了,也有POST了. 1. 为了方便,在 webapp 下直接新建一个 index.ht ...

  6. 通过jQuery和C#分别实现对.NET Core Web Api的访问以及文件上传

    准备工作: 建立.NET Core Web Api项目 新建一个用于Api请求的UserInfo类 public class UserInfo { public string name { get; ...

  7. iOS开发之结合asp.net webservice实现文件上传下载

    iOS开发中会经常用到文件上传下载的功能,这篇文件将介绍一下使用asp.net webservice实现文件上传下载. 首先,让我们看下文件下载. 这里我们下载cnblogs上的一个zip文件.使用N ...

  8. 2020最新Servlet+form表单实现文件上传(图片)

    servlet实现文件上传接受 这几天学了一点文件上传,有很多不会,在网查了许多博客,但是最新的没有,都比较久了 因为我是小白,版本更新了,以前的方法自己费了好久才弄懂,写个随笔方便以后查找 代码奉上 ...

  9. [转]web.xml中servlet ,filter ,listener ,interceptor的作用与区别

    原文链接:https://blog.csdn.net/netdevgirl/article/details/51483273 一.概念: 1.servlet:servlet是一种运行服务器端的java ...

  10. Servlet中使用getInputStream进行文件上传

    据说古老了点,所以代码比较繁琐,主要用于处理文件的地方太多. 下节用SERVLET3.0的Part进行操作一下. form.html: <!DOCTYPE html> <html&g ...

随机推荐

  1. 2019-2020-1 20199304《Linux内核原理与分析》第二周作业

    计算机工作原理 存储程序计算机模型 冯·诺依曼体系结构 冯·诺依曼体系结构如图所示: 冯·诺依曼体系结构包含五大部分 运算器:在控制器的统一控制下,负责对数据进行加工.完成各种运算,如算术运算.逻辑运 ...

  2. 谈一谈个人利用Java的mysql的知识完成的数据库的项目-----用户信息管理系统

    首先,我先简述一下自己做的过程啊,相信大家来找这样的博客,也都是为了完成自己课程任务吧.我也一样是一名大一的学生,是为了自己的课程任务而开始做数据库的项目的.因为还没学mysql吗,所以是自己找视频啊 ...

  3. 判断一个坐标点是否在封闭曲线内的方法(swift)

    //用playground运行即可 import UIKit var str = "Hello, playground" let lTestPointsOne : [(Double ...

  4. 配置aria2

    Mac 用户肯定都受够了百度网盘在自己电脑上的糟糕体验,至少我是如此:安装官方的 App,经常下载时中断,有时甚至 Bug 般连续中断,无奈使用浏览器下载,速度却是令人挠头.花点时间来配置 aria2 ...

  5. 一条数据的HBase之旅,简明HBase入门教程2:数据模型

    [摘要] 上一篇文章讲了HBase项目与应用概况信息,这篇文章讲述HBase的数据模型以及一些基础概念,数据模型可以说决定了HBase适合于什么应用场景. 华为云上的NoSQL数据库服务CloudTa ...

  6. 华为eNSP路由交换-静态路由

    静态路由 一. 静态路由及默认路由基本配置 1.1实验内容 在由三台路由器所组成的简单网络中,R1和R3各连着一台PC,现在要求能够实现PC-1和PC-2之间的通信.本实验将通过配置基本的静态路由和默 ...

  7. 阿里巴巴主导的“华山版《Java 开发手册》”简介

    1."83行代码计划"项目介绍(转自github): 2018年9月22日,在2018杭州云栖大会上,召开<码出高效:Java 开发手册>新书发布会,并宣布将图书所有收 ...

  8. 服务容错保护hystrix

    灾难性雪崩效应 如何解决灾难性雪崩效应 降级 超时降级.资源不足时(线程或信号量)降级,降级后可以配合降级接口返回托底数据.实现一个 fallback 方法, 当请求后端服务出现异常的时候, 可以使用 ...

  9. ZOJ-1709

    The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSu ...

  10. eclipse Outline里图标的含义

    source: http://www.cnblogs.com/qdwyg2013/p/6489019.html 先说颜色: 绿色:public 黄色:protected 蓝色:no modifier ...