Spring Boot入門

一: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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章