一:SpringBoot入門
1:導入SpringBoot的Maven依賴
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.10.RELEASE</version>
</parent>
<groupId>hhxy</groupId>
<artifactId>01-spring-boot-hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- 修改jdk版本 -->
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!-- springBoot的啓動器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
2:編寫Controller測試類
package com.lwk.controller;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* SpringBoot HelloWorld
* @author 李偉康
*
*/
@Controller
public class HelloWorld {
@RequestMapping("/hello")
@ResponseBody
public Map<String, Object> showHelloWorld(){
Map<String, Object> map = new HashMap<>();
map.put("msg", "HelloWorld");
return map;
}
}
2:編寫SpringBoot啓動類
/**
* SpringBoot 啓動類
* @author 李偉康
*
*/
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
注:啓動器存放的位置。啓動器可以和 controller 位於同一個包下,或者位於 controller 的上一級
包中,但是不能放到 controller 的平級以及子包下。
二:SpringBoot整合JavaEE
1:整合Servlet
1.1:通過註解掃描完成 Servlet
1.1.1:編寫Servlet
/**
*SpringBoot 整合 Servlet 方式一
*
*/
public class FirstServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("FirstServlet..........");
}
}
1.1.2:編寫啓動類
/**
* SpringBoot 整合 Servlet 方式一
*
*
*/
@SpringBootApplication
@ServletComponentScan //在 springBoot 啓動時會掃描@WebServlet,並將該類實例化
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
1.2:通過方法完成Servlet的註冊
1.2.1:編寫Servlet
/**
*SpringBoot 整合 Servlet 方式二
*
*/
public class SecondServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("SecondServlet..........");
}
}
1.2.2:編寫啓動類
/**
* 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;
}
}
2:整合Filter
2.1:通過註解掃描完成 Filter
2.1.1:編寫Filter
@WebFilter(filterName="FirstFilter",urlPatterns="/first")
public class FirstFilter implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2)throws IOException, ServletException {
System.out.println("進入 Filter");
arg2.doFilter(arg0, arg1);
System.out.println("離開 Filter");
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
2.1.2:編寫啓動類
/**
*SpringBoot 整合 Filter 方式一
*
*/
@SpringBootApplication
@ServletComponentScan
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
2.2:通過方法完成 Filter
2.2.1:編寫 Filter
/**
*
*SpringBoot 整合 Filter 方式二
*
*/
public class SecondFilter implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2)throws IOException, ServletException {
System.out.println("進入 SecondFilter");
arg2.doFilter(arg0, arg1);
System.out.println("離開 SecondFilter");
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
2.2.2:編寫啓動類
/**
* SpringBoot 整合 Filter 方式二
*
*
*/
@SpringBootApplication
public class App2 {
public static void main(String[] args) {
SpringApplication.run(App2.class, args);
}
/**
* 註冊 Servlet
* @return
*/
@Bean
public ServletRegistrationBean getServletRegistrationBean(){
ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());
bean.addUrlMappings("/second");
return bean;
}
/**
* 註冊 Filter
*/
@Bean
public FilterRegistrationBean getFilterRegistrationBean(){
FilterRegistrationBean bean = new FilterRegistrationBean(new SecondFilter());
bean.addUrlPatterns("/second");
return bean;
}
}
3:整合Listener
3.1:通過註解掃描完成 Listener
3.1.1:編寫 Listener
@WebListener
public class FirstListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("Listener...init......");
}
}
3.1.2:編寫啓動類
/**
* springBoot 整合 Listener 方式一
*
*
*/
@SpringBootApplication
@ServletComponentScan
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
3.2:通過方法完成 Listener
3.2.1: 編寫 Listener
/**
* springBoot 整合 Listener 方式二。
*
*
*/
public class SecondListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("SecondListener..init.....");
}
}
3.2.2:編寫啓動類
/**
* SpringBoot 整合 Listener 方式二
*
*
*/
@SpringBootApplication
public class App2 {
public static void main(String[] args) {
SpringApplication.run(App2.class, args);
}
/**
* 註冊 listener
*/
@Bean
public ServletListenerRegistrationBean<SecondListener> getServletListenerRegistrationBean(){
ServletListenerRegistrationBean<SecondListener> bean= new
ServletListenerRegistrationBean<SecondListener>(new SecondListener());
return bean;
}
}
4:訪問靜態資源
4.1:classpath/static目錄下
4.2: ServletContext (webapp) 根目錄下
5:文件上傳
5.1:編寫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>
5.2:編寫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;
}
}
5.3:編寫啓動類
/**
* SpringBoot 文件上傳
*
*
*/
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
5.4:resources下添加配置文件application.properties
#設置單個上傳文件的大小
spring.http.multipart.maxFileSize=200MB
#設置一次請求上傳文件的總容量
spring.http.multipart.maxRequestSize=200MB