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>

   <servlet-name>customServlet</servlet-name>
  <servlet-class>zxp.CustomServlet</servlet-class>
</servlet>
<servlet-mapping>
   <servlet-name>customServlet</servlet-name>
   <url-pattern>/</url-pattern>
</servlet-mapping>

3)在启动类上添加注解@ServletConComponentScan,该注解在启动的时候会扫描@WebServlet,并将该类实例化。

2>通过配置类注册bean完成Servlet组件的注册(方式2)

步骤:需要2步

1)自定义一个继承javax.servlet.http.HTTPServlet类的CustomServlet,并实现doGet()或doPost()方法。

2)在启动类或自定义配置类中定义以下方法用于注册Servlet:

@Bean
public ServletRegistrationBean getServletRegistrationBean(){
  ServletRegistrationBean bean = new ServletRegistrationBean(new CustomServlet());
  bean.addUrlMappings("/second");
  return bean;
}
注意:必须使用ServletRegistrationBean。
 

2.springboot整合Filter(2种方式)

1>通过注解扫描完成Filter组件的注册(方式1)

步骤:需要3步

1)自定义一个实现javax.servlet.Filter接口的CustomFilter,并实现doFilter方法。

2)在CustomServlet类上添加注解@WebFilter。

@WebFilter(name="customFilter",urlPatterns={"*/user"}) 

该注解的作用等同于下面的传统的Filter配置

<filter>
   <filter-name>customFilter</filter-name>
   <filter-class>zxp.customFilter</filter-class>
</filter>
<filter-mapping>
   <filter-name>customFilter</filter-name>
  <url-pattern>/user</url-pattern>
</filter-mapping>

3)在启动类上添加注解@ServletConComponentScan,该注解在启动的时候会扫描@WebServlet,并将该类实例化。

2>通过配置类注册bean完成Servlet组件的注册(方式2)

步骤:需要2步

1)自定义一个实现javax.servlet.Filter接口的CustomFilter,并实现doFilter方法。

2)在启动类或自定义配置类中定义以下方法用于注册Filter:

@Bean
public FilterRegistrationBean getFilterRegistrationBean(){
  FilterRegistrationBean bean = new FilterRegistrationBean(new CustomFilter());
  bean.addUrlMappings("/user");
  return bean;
}
注意:了解FilterRegistrationBean类。

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:

@Bean
public ServletListenerRegistrationBean getServletListenerRegistrationBean(){
  ServletListenerRegistrationBean bean = new ServletListenerRegistrationBean(new CustomListener());
  return bean;
}
注意:了解ServletListenerRegistrationBean类。

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的更多相关文章

  1. SpringBoot学习笔记(6)----SpringBoot中使用Servlet,Filter,Listener的三种方式

    在一般的运用开发中Controller已经大部分都能够实现了,但是也不排除需要自己实现Servlet,Filter,Listener的方式,SpringBoot提供了三种实现方式. 1. 使用Bean ...

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

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

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

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

  4. ServletContextInitializer添加 servlet filter listener

    ServletContextInitializer添加 servlet filter listener https://www.cnblogs.com/pomer-huang/p/9639322.ht ...

  5. JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下)

    JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下) Reference

  6. SpringBoot---注册Servlet,Filter,Listener

    1.概述 1.1.当使用  内嵌的Servlet容器(Tomcat.Jetty等)时,将Servlet,Filter,Listener  注册到Servlet容器的方法: 1.1.1.直接注册Bean ...

  7. servlet filter listener interceptor 知识点

    这篇文章主要介绍 servlet filter listener interceptor 之 知识点.博文主要从 概念,生命周期,使命介绍其区别.详情如下:   概念 生命周期 使命 servlet ...

  8. servlet/filter/listener/interceptor区别与联系

    转自:http://www.cnblogs.com/doit8791/p/4209442.html servlet.filter.listener是配置到web.xml中(web.xml 的加载顺序是 ...

  9. 【转】servlet/filter/listener/interceptor区别与联系

    原文:https://www.cnblogs.com/doit8791/p/4209442.html 一.概念: 1.servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台 ...

随机推荐

  1. Java 操作Redis封装RedisTemplate工具类

    package com.example.redisdistlock.util; import org.springframework.beans.factory.annotation.Autowire ...

  2. windows--zabbix-agent添加主机

        1.首先在 C 盘根目录下创建 zabbix 的文件夹 2.将需要的文件拖到该文件夹内(bin/win64) 3.修改 windows 配置文件(zabbix.agent.win.conf)的 ...

  3. Chapter One

    spring-boot-starter-parent spring-boot-starter-parent是一个特殊的Starter,提供了Maven的默认配置,同时还提供了dependency-ma ...

  4. Skpi List跳表

    为什么选择跳表 目前经常使用的平衡数据结构有:B树,红黑树,AVL树,Splay Tree, Treep等. 想象一下,给你一张草稿纸,一只笔,一个编辑器,你能立即实现一颗红黑树,或者AVL树 出来吗 ...

  5. 【转】利用Python将多个PDF合并为一个

    本脚本用来合并pdf文件,输出的pdf文件按输入的pdf文件名生成书签 使用示例如下: python pdfmerge.py -p "D:\pdf-files" -o " ...

  6. package.json 字段说明

    以vue的package.json为例: { // 名称 "name": "vue", // 版本 "version": "2.6 ...

  7. TP5 分页数据加锚点

      TP5 分页数据加锚点跳转到相应位置   有这样一个需求,就是加载评论后,点下一页的时候回到相应的位置.  $comment = Db('comment')->order('addtime' ...

  8. numpy中的mean()函数

    本文链接:https://blog.csdn.net/lilong117194/article/details/78397329mean() 函数定义:numpy.mean(a, axis, dtyp ...

  9. Javascript自定义事件功能与用法实例分析

    原文地址:https://www.jb51.net/article/127776.htm 本文实例讲述了javascript自定义事件功能与用法.分享给大家供大家参考,具体如下: 概述 自定义事件很难 ...

  10. Andorid SQLite数据库开发基础教程(3)

    Andorid SQLite数据库开发基础教程(3) 数据库生成方式 数据库的生成有两种方式,一种是使用数据库管理工具生成的数据库,我们将此类数据库称为预设数据库,另一种是使用代码生成的数据库. 使用 ...