Spring Boot 开发安卓后端(二)
Spring Boot 整合ServletSpring Boot整合FilterSpring Boot 访问静态资源Spring boot 上传文件(基于spring mvc 方法)
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
;
@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
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
;
@WebFilter (filterName
= "FirstFilter",urlPatterns
= "/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
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
;
@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