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注解的。
- 运行结果
- 拦截成功
- 创建Filter
- 上述整合Servlet 和Filter 都只用了扫描注解方式,还有配置类方式,此处先不写了,以后再学。
Spring Boot 访问静态资源
- Spring Boot 默认在static文件夹下存放静态资源,在templates文件下存放动态资源
- static 目录
通过 classpath\static 目录访问静态资源,注意存放静态资源的目录 必须是static。
- templates 目录
1:Spring Boot不推荐使用jsp作为视图层技术,而是默认使用thymeleaf来 做动态页面。
- static 目录
- 直接访问 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