Spring Boot 开发安卓后端(二)

Spring Boot 整合Servlet

  • 方式:这里只介绍最常用的方法
    • 创建Servlet 包,创建Servlet类
    • 该类继承自HttpServlet 类,加入注解@WebServlet
      package com.example.demo1.Servelet;
      
      import javax.servlet.ServletException;
      import javax.servlet.annotation.WebServlet;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      import java.io.IOException;
      
      /**
       * 整合Servelet方式一
       */
      @WebServlet(name = "FirstServelet",urlPatterns = "/first")
      public class FirstServelet extends HttpServlet {
          @Override
          protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
              System.out.println("First Servelet");
          }
      }
      
    • 然后在启动类处加入注解@ServletComponentScan
      package com.example.demo1;
      
      import org.springframework.boot.SpringApplication;
      import org.springframework.boot.autoconfigure.SpringBootApplication;
      import org.springframework.boot.web.servlet.ServletComponentScan;
      
      @SpringBootApplication
      @ServletComponentScan //在Spring Boot启动时会扫描 @WebServlet 注解,并将该类实例化。
      public class Demo1Application {
      
          public static void main(String[] args) {
              SpringApplication.run(Demo1Application.class, args);
          }
      
      }
      

Spring Boot整合Filter

  • 通过注解扫描方式添加Filter
    • 创建Filter
      • 创建Filter包
      • 创建Filter的一个类
      package com.example.demo1.filter;
      
      import javax.servlet.*;
      import javax.servlet.annotation.WebFilter;
      import java.io.IOException;
      
      /**
       * 整合Filter方式一
       */
      //@WebFilter (filterName = "FirstFilter",urlPatterns = {"*.do","*.jsp"}) //以后缀方式拦截,拦截所有do.jsp结尾
      @WebFilter (filterName = "FirstFilter",urlPatterns = "/fisrt") //拦截fisrt
      public class FirstFilter implements Filter {
      
          @Override
          public void init(FilterConfig filterConfig) throws ServletException {
      
          }
      
          @Override
          public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
      
              System.out.println("进入 First Filter");
              filterChain.doFilter(servletRequest,servletResponse);
              System.out.println("离开First Filter");
          }
      
          @Override
          public void destroy() {
      
          }
      }
      
    • 修改启动类
      • 和修改servlet一样,因为Filer是servlet一部分,所以也是通过@ServletComponentScan来扫描@WebFilter注解的。
      • 运行结果
      • 拦截成功在这里插入图片描述
  • 上述整合Servlet 和Filter 都只用了扫描注解方式,还有配置类方式,此处先不写了,以后再学。

Spring Boot 访问静态资源

  • Spring Boot 默认在static文件夹下存放静态资源,在templates文件下存放动态资源
    • static 目录
      通过 classpath\static 目录访问静态资源,注意存放静态资源的目录
      必须是static
    • templates 目录
      1:Spring Boot不推荐使用jsp作为视图层技术,而是默认使用thymeleaf来
      做动态页面。
      
  • 直接访问 static 包下的静态页面
    static目录下直接创建html文件,浏览器输入地址访问即可。
    
  • 通过Controller层访问 template 的静态页面
    1:创建pageController类来做跳转页面的管理类
    2:通过给类添加@Controller注解
    3:通过@RequestMapping 注解调用函数,访问静态页面,
    注意函数返回url的格式,不需要输入template,因为默认在template目录下
    
    • 代码
    package com.example.demo1.Controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    public class pageController {
        @RequestMapping("/page")
        public String showPage(){
            return  "index.html";
        }
    }
    
    
  • 通过Controller 层访问 static下的html
    • 注意返回字符串的重定向,默认会在template 目录,所以需要重定向
    package com.example.demo1.Controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    /**
     * 通过Controller访问static下的html,需要在返回的字符串中进
     * 行重定向
     */
    @Controller
    public class pageController {
        @RequestMapping("/page")
        public String showPage(){
            return  "redirect:index.html";
        }
    }
    
    
  • 自定义静态资源位置方法此处不写了。

Spring boot 上传文件(基于spring mvc 方法)

  • 编写一个简单得文件上传界面
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form  action="/fileUploadController" method="post" enctype="multipart/form-data">
        <input type="file" name="file"/>
        <input type="submit" value="okok"/>
    </form>
    </body>
    </html>
    
  • 编写响应Controller 文件
    • 此处只是为了写spring boot 操作,所以文件上传函数就实现了个移动盘符操作。

    • 代码

      package com.example.demo1.Controller;
      
      import org.springframework.web.bind.annotation.PostMapping;
      import org.springframework.web.bind.annotation.RestController;
      import org.springframework.web.multipart.MultipartFile;
      
      import java.io.File;
      import java.io.IOException;
      
      /**
      * 文件上传Controller
      */
      @RestController
      public class FileUploadController {
         @PostMapping("/fileUploadController")
         public String fileUpload(MultipartFile file) throws IOException {
             System.out.println(file.getOriginalFilename());
             file.transferTo(new File("D:/"+file.getOriginalFilename()));
             return "ok";
      
         }
      }
      
      
      注意代码:
      1@RestController 此处上传成功后,返回一个字符串,所以使用
      此注解。
      2@PostMapping 因为对应html文件中得 post方法,所以 使用此
      注解。
      3/fileUploadController  对应html中的 form中的action值
      4:MultipartFile  后面定义的参数 ,需要与html中的name相对应。
      
  • 此时基本的上传写完了,但此时的上传文件 有大小限制, 默认1M,所以需要修改可以上传的文件大小。
    -修改application.properties 配置文件
    #配置单个上传文件的大小
    spring.servlet.multipart.max-file-size=10MB
    #配置在一次请求中上传文件的容量的总限制
    spring.servlet.multipart.max-request-size=20MB
    
    
  • 下一讲介绍themeleaf
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值