一,Spring Boot 介绍
1,如果使用 Spring 开发一个"HelloWorld"的 web 应用:
• 创建一个 web 项目并且导入相关 jar 包。SpringMVC Servlet
• 创建一个 web.xml
• 编写一个控制类(Controller)
• 需要一个部署 web 应用的服务器 如 tomcat
2,Spring Boot 特点:
• Spring Boot 设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。
• 嵌入的 Tomcat,无需部署 WAR 文件
• Spring Boot 并不是对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方
式。
二,构建 Spring Boot 项目及启动器讲解
1. 使用 maven 构建 SpringBoot 项目
修改JDK版本 pom文件
注入 SpringBoot 启动坐标
<!-- springBoot的启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
SpringBoot 启动器。
所谓的 springBoot 启动器其实就是一些 jar 包的集合。SprigBoot 一共提供 44 启动器。
4.1 spring-boot-starter-web
支持全栈式的 web 开发,包括了 romcat 和 springMVC 等 jar
4.2 spring-boot-starter-jdbc
支持 spring 以 jdbc 方式操作数据库的 jar 包的集合
4.3 spring-boot-starter-redis
支持 redis 键值存储的数据库操作
注意事项:启动器存放的位置。启动器可以和 controller 位于同一个包下,或者位于 controller 的上一级包中,但是不能放到 controller 的平级以及子包下
整合 Servlet
/**
*SpringBoot 整合 Servlet 方式一
*
*<servlet>
* <servlet-name>FirstServlet</servlet-name>
* <servlet-class>com.bjsxt.servlet.FirstServlet</servlet-class>
*</servlet>
*
*<servlet-mapping>
* <servlet-name>FirstServlet</servlet-name>
* <url-pattern>/first</url-pattern>
*</servlet-mapping>
*
*/
@WebServlet(name="FirstServlet",urlPatterns="/first")
public class FirstServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
super.doGet(req, resp);
}
}
编写启动类
/**
* SpringBoot 整合 Servlet 方式一
*
*
*/
@SpringBootApplication
@ServletComponentScan //在 springBoot 启动时会扫描@WebServlet,并将该类实例
化
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
通过方法完成 Servlet 组件的注册
(不加注解 在启动类当中加入方法)
servlet
/**
*SpringBoot 整合 Servlet 方式二
*
*/
public class SecondServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("SecondServlet..........");
}
}
编写启动类
/**
* SpringBoot 整合 Servlet 方式二
*
*
*/
@SpringBootApplication
public class App2 {
public static void main(String[] args) {
SpringApplication.run(App2.class, args);
}
@Bean
public ServletRegistrationBean getServletRegistrationBean(){
ServletRegistrationBean bean = new ServletRegistrationBean(new
SecondServlet());
bean.addUrlMappings("/second");
return bean;
}
}
Filter extends HttpServlet
/**
*SpringBoot 整合 Filter 方式一
*<filter>
* <filter-name>FirstFilter</filter-name>
* <filter-class>com.bjsxt.filter.FirstFilter</filter-class>
*</filter>
*<filter-mapping>
* <filter-name>FirstFilter</filter-name>
* <url-pattern>/first</url-pattern>
*</filter-mapping>
*/
Listener implements ServletContextListener
/**
* springBoot 整合 Listener
*
*<listener>
* <listener-class>com.bjsxt.listener.FirstListener</listener-class>
*</listener>
*/
访问静态资源
SpringBoot 从 resources/static 的目录
注意目录名称必须是 static
在 src/main/webapp 目录名称必须要 webapp
文件上传
Controller
/**
* SpringBoot 文件上传
*
*
*/
//@Controller
@RestController //表示该类下的方法的返回值会自动做 json 格式的转换
public class FileUploadController {
/*
* 处理文件上传
*/
@RequestMapping("/fileUploadController")
public Map<String, Object> fileUpload(MultipartFile filename)throws
Exception{
System.out.println(filename.getOriginalFilename());
filename.transferTo(new
File("e:/"+filename.getOriginalFilename()));
Map<String, Object> map = new HashMap<>();
map.put("msg", "ok");
return map;
}
}
application.proerties
设置单个上传文件的大小
spring.http.multipart.maxFileSize=200MB
设置一次请求上传文件的总容量
spring.http.multipart.maxRequestSize=200MB
resources/static/html页面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>
<form action="fileUploadController" method="post" enctype="multipart/form-data">
上传文件:<input type="file" name="filename"/><br/>
<input type="submit"/>
</form>
</body>
</html>