Spring Boot 开发安卓后端(二)

    技术2022-07-13  67

    Spring Boot 开发安卓后端(二)

    Spring Boot 整合ServletSpring Boot整合FilterSpring Boot 访问静态资源Spring boot 上传文件(基于spring mvc 方法)

    Spring Boot 整合Servlet

    方式:这里只介绍最常用的方法 创建Servlet 包,创建Servlet类该类继承自HttpServlet 类,加入注解@WebServletpackage 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"); } } 然后在启动类处加入注解@ServletComponentScanpackage 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
    Processed: 0.013, SQL: 9