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. C# 使用大漠插件, 源码在Github和码云 ..希望对大家有所帮助

    c# 使用大漠插件. 完成 类似 按键精灵的 功能. 方法 注释 正在慢慢的 完善中 目录 仓库 github 码云 准备 效果图 如何运行 1. 注册 大漠dll 到com (资源在 源码 DLL ...

  2. Java SpringBoot 实体类数据自动验证

    package demo.dto; import org.hibernate.validator.constraints.Length; import javax.validation.constra ...

  3. mac环境使用python处理protobuf

    安装 brew install protobuf 然后再安装protobuf需要的依赖 brew install autoconf automake libtool 验证是否安装成功 protoc – ...

  4. laravel删除文件

    laravel删除文件 一.总结 一句话总结: 1.注意disk:disk决定路径 2.删单个文件的时候就用删单个文件的方式,别用删多个文件的方式(也就是参数别数组) public function ...

  5. 免费s账号网站

    下面网址按排序顺序优先使用,数字越小优先级越高 1,https://io.freess.today/ 2,https://free-ss.site/ 3,https://ss.freess.org/ ...

  6. Android日期操作

    第一种方法 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");// ...

  7. intel 性能分析

    分析memory bound,etc https://software.intel.com/en-us/articles/intel-vtune-amplifier-tutorials

  8. VAE论文学习

    intractable棘手的,难处理的  posterior distributions后验分布 directed probabilistic有向概率 approximate inference近似推 ...

  9. realsense d435i問題太多了

    Selecting Windows SDK version 10.0.17134.0 to target Windows 10.0.18362. Internet connection identif ...

  10. Fragment already added问题的解决

      问题 当快速点击切换不同的Fragment的时候部分手机的app竟然挂了,报出了下面的错误 Fragment already added java.lang.IllegalStateExcepti ...