整合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. 【LiteOS】STM32F103-LiteOS移植教程(详细篇)【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  2. Tensorflow Serving Docker compose 部署服务细节(Ubuntu)

    [摘要] Tensorflow Serving 是tf模型持久化的重要工具,本篇介绍如何通过Docker compose搭建并调试TensorFlow Serving TensorFlow Servi ...

  3. KETTLE实现复杂的流程

    KETTLE是一款将数据从来源端经过抽取(extract).转换(transform).加载(load)至目的端的非常好用的一款ETL工具.学会它,对于跨数据库的表处理或者定时生成文本,excel等常 ...

  4. luogu P2296 寻找道路 |最短路

    题目描述 在有向图 G 中,每条边的长度均为 1,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 路径上的所有点的出边所指向的点都直接或间接与终点连通. 在满足条件 1 的 ...

  5. Undefined symbols for architecture x86_64"_OBJC_CLASS_$_QQApiInterface 怎么搞

    今天上午报了一个这样的错误 解决办法 如此如此 ~~ 然后编译 看看报的什么错误 还是不行的话就重新导入三方库 添加依赖库 结果build success

  6. Hybrid App 应用开发中 9 个必备知识点复习(WebView / 调试 等)

    前言 我们大前端团队内部 ?每周一练 的知识复习计划继续加油,本篇文章是 <Hybrid APP 混合应用专题> 主题的第二期和第三期的合集. 这一期共整理了 10 个问题,和相应的参考答 ...

  7. scikit-learn与数据预处理

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

  8. vs code:sync setting 插件

    sync setting 是同步设置插件 第一步:A机器上下载插件 第二步:通过git生成 token user(个人中心) --> Settings --> Developer sett ...

  9. Electron开发和Web开发对比

  10. apache与tomcat的区别

    1. Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展. 2. Apache和Tomcat都可以做为独立的web服务器来运行,但是A ...