1. 程式人生 > >快速建立一個基於SpringBoot與Maven的專案

快速建立一個基於SpringBoot與Maven的專案

基礎SpringBoot與maven專案

根目錄
│  .classpath.project
│  pom.xml
│  README.md
│
├─src
│  ├─main
│  │  ├─java
│  │  │  └─com
│  │  │      └─iamzwhui
│  │  │          └─springboottest
│  │  │              │  GateSpringBootApplication.java
│  │  │              │
│  │  │              └─test
│  │  │                  ├─controller
│  │  │                  │      TestController.java
│ │ │ │ TestRestController.java │ │ │ │ │ │ │ └─service │ │ ├─resources │ │ │ application.properties │ │ │ │ │ └─webapp │ │ │ test.html │ │ │ │ │ └─WEB-INF │ │ ├─js │ │ └─jsp │ │ test.jsp

一、建立

1、先建立maven專案

選擇專案型別

  • Ctrl+n喚出建立視窗
  • 搜尋maven
  • 選擇maven project
  • 點選next

選擇專案模板

  • 勾選create a simple project
  • 勾選use default workspace location(不要修改)
  • 點選next

完善專案資訊

  • group id(專案字首)
    • 例如com.iamzwhui
  • artifact id(專案名稱)
    • 例如SpringBootTest
  • version(專案版本)
    • 例如0.0.1-SNAPSHOT
  • packaging(打包方式)
    • 例如war
  • 其他(暫時不需要)
  • 點選finish

若沒有報錯,則maven專案建立完成

2、往maven新增SpringBoot

新增pom資訊

  • 找到當前maven專案的pom.xml檔案
  • 新增SpringBoot
<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>

    <!--此專案基本資訊 -->
    <groupId>com.iamzwhui</groupId>
    <artifactId>SpringBootTest</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <!--打包格式:SpringBoot使用JSP時需打包為war型別 -->
    <packaging>war</packaging>

    <!--繼承SpringBoot預設的父工程-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.0.RELEASE</version>
    </parent>

    <!--配置資訊 ,jdk建議1.7或者以上,使用SprintBoot會少很多麻煩-->
    <properties>
        <java.version>1.7</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <!--<tomcat.version>7.0.52</tomcat.version> --><!-- 如果jdk1.6,需要放開這個版本的tomcat來適配1.6 -->
    </properties>

    <!--依賴管理 -->
    <dependencies>
        <!-- SpringBoot的web元件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- 熱更新 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>springloaded</artifactId>
            <version>1.2.5.RELEASE</version><!--$NO-MVN-MAN-VER$-->
        </dependency>
        <!-- tomcat 的支援.-->
        <dependency> 
            <groupId>org.springframework.boot</groupId> 
            <artifactId>spring-boot-starter-tomcat</artifactId> 
            <scope>provided</scope> 
        </dependency> 
        <!-- jsp 的支援.-->
        <dependency> 
            <groupId>org.apache.tomcat.embed</groupId> 
            <artifactId>tomcat-embed-jasper</artifactId> 
            <scope>provided</scope> 
        </dependency>
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>jstl</artifactId>
        </dependency>
        <!-- 工具 -->
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-devtools</artifactId>
        </dependency>
        <!-- 測試模組 -->
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-test</artifactId>
          <scope>test</scope>
        </dependency>
    </dependencies>

    <!--構建外掛 -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

若沒有報錯,則SpringBoot新增完成

  • jdk建議1.7或者以上,使用SprintBoot會少很多麻煩

二、設定

1、建立SpringBoot的入口

建立GateSpringBootApplication.java

  • 位置為src/main/java/com/iamzwhui/springboottest/GateSpringBootApplication.java
  • 添加註解@SpringBootApplication
    • 它是一個複合註解,包括以下功能
      • @ComponentScan
        • 包掃描,掃描當前路徑下所有的@Controller、@Service等
      • @SpringBootConfiguration
        • 設定當前類是配置類
        • 會將當前類內以@Bean標記的方法的新增到spring容器中
        • 簡單來說就是可以在這裡加key:value,例如map.put(“username”,”iamzwhui”)

          @Bean
          public Map config() {
          Map map = new HashMap();
          map.put("username", "iamzwhui");
          return map;
          }
        • 在其他類可以通過ConfigurableApplicationContext物件獲取到username
      • @EnableAutoConfiguration
        • SpringBoot自動配置,想知道詳情可以自行百度,這裡不詳解

實現EmbeddedServletContainerCustomizer

  • 可以自定義容器,非必須,想知道詳情可以自行百度,這裡不詳解

繼承SpringBootServletInitializer

  • 是spring對servlet初始化元件,想知道詳情可以自行百度,這裡不詳解

具體程式碼如下:

package com.iamzwhui.springboottest;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.stereotype.Controller;

//******************************
//******************************
/**
 * Spring入口類
 * @author iamzwhui
 * @since 20180825
 */
//******************************
//******************************
/**
 * @RestController
 * 是一個複合註解,直接返回json,包括以下功能
 * @ResponseBody
 * @Controller
 * 如果需要返回jsp、html等,請使用@Controller
 */
//@RestController
/**
 * @SpringBootConfiguration
 * 承自@Configuration,標註當前類是配置類
 * 會將當前類內宣告的一個或多個以@Bean註解標記的方法的例項納入到spring容器中,並且例項名就是方法名
 */
//@SpringBootConfiguration
/**
 * @SpringBootApplication
 * 是一個複合註解,包括以下功能
 * @ComponentScan
 * @SpringBootConfiguration
 * @EnableAutoConfiguration
 */
@SpringBootApplication
public class GateSpringBootApplication extends SpringBootServletInitializer implements EmbeddedServletContainerCustomizer {

    /**
     * 標註了@SpringBootApplication
     * 表示這個是Spring應用的入口
     * 是Spring應用的配置起點,可以配置Spring上下文
     * 需要在這個Spring應用的入口類中新增一個main()方法
     * 在main()方法中呼叫Spring Boot的SpringApplication類的run()方法,以啟動該Spring應用
     */
    public static void main(String[] args) {
        SpringApplication.run(GateSpringBootApplication.class, args);
    }

    /**
     * EmbeddedServletContainerCustomizer
     * web容器的例項化,比如tomcat
     * 在這裡可以設定伺服器的配置,比如埠
     */
    public void customize(ConfigurableEmbeddedServletContainer container) {
        container.setPort(8080);
    }

    /**
     * SpringBootServletInitializer
     * 若要展示jsp頁面
     * 則必須繼承SpringBootServletInitializer類重寫裡面的方法
     */
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(GateSpringBootApplication.class);
    }
}

2、建立controller

註解說明

/**
 * class前面設定註解
 * 配置@EnableAutoConfiguration,根據新增的jar依賴自動配置Spring
 * 配置@Controller,則return test,其實返回的是/WEB-INF/jsp/test.jsp
 *      前提是需要配置檔案內容(src/main/source/application.properties)
 *      spring.mvc.view.prefix=/WEB-INF/jsp/
 *      spring.mvc.view.suffix=.jsp
 * 配置@RestController,則返回的直接是test字串
 */

基於@Controller建立TestController

package com.iamzwhui.springboottest.test.controller;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

//@RestController
@Controller
//@EnableAutoConfiguration
public class TestController {

    @RequestMapping("/testController")
    public String test(){
        return "test";
    }
}

基於@RestController建立TestRestController

package com.iamzwhui.springboottest.test.controller;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
//@Controller
//@EnableAutoConfiguration
public class TestRestController {

    @RequestMapping("/testRestController")
    public String test(){
        return "test";
    }
}

建立前端檔案

  • jsp檔案
    • 路徑:src/main/webapp/WEB-INF/jsp/test.jsp
    • 內容:

      <%@ page
      language="java"
      contentType="text/html; charset=UTF-8"
      pageEncoding="UTF-8"%>
      <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
      <html>
      <head>
      <meta
      http-equiv="Content-Type"
      content="text/html; charset=UTF-8">
      <title>jsp</title>
      </head>
      <body>
      this is jsp
      </body>
      </html>
  • html檔案
    • 路徑:src/main/webapp/test.html
    • 內容:

      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="UTF-8">
      <title>html</title>
      </head>
      <body>
      this is html
      </body>
      </html>

建立配置檔案

  • 位置:src/main/source/application.properties
  • 內容:
################# 專案  #####################
#訪問的根目錄
#server.context-path=/

################# 伺服器  #####################
#埠
#server.port=8080
#session超時
#server.session-timeout=30
#編碼格式
#server.tomcat.uri-encoding=utf-8

################# jsp  #####################
#這裡添加了之後,在controller裡面return jsp頁面的名稱即可,這裡會預設新增前後綴
#例如return test,其實返回的是/WEB-INF/jsp/test.jsp
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
#關閉預設模板引擎
#spring.thymeleaf.cache=false
#spring.thymeleaf.enabled=false
#server.servlet.jsp.init-parameters.development=true

三、執行

1、執行專案

  • 專案右鍵
  • 選擇debug as
  • 選擇第一個maven build
  • 如果之前沒有執行過,需要輸入執行指令
    • 第一次,會彈出介面
    • 在name中輸入隨意名稱
      • 例如clean and run
    • 在goals中輸入指令
      • clean package spring-boot:run(意思是打包執行專案)
    • 點選debug確定即可
    • 專案啟動完成
      • console列印:Tomcat started on port(s): 8080 (http)
      • console列印:FrameworkServlet ‘dispatcherServlet’: initialization completed in 34 ms
  • 若要修改指令
    • 專案右鍵
    • 選擇debug as
    • 選擇底部的debug configuration
    • 左邊看板找到你起的名稱
    • 右邊找到goals修改指令

2、請求專案

測試如下:

請求testRestController

- http://localhost:8080/testRestController
- 返回test字串

請求testController

- http://localhost:8080/testController
- 返回/WEB-INF/jsp/test.jsp頁面

請求html

- http://localhost:8080/test.html
- 返回/webapp/test.html頁面

四、問題

相關推薦

快速建立一個基於SpringBootMaven專案

基礎SpringBoot與maven專案 根目錄 │ .classpath │ .project │ pom.xml │ README.md │ ├─src │ ├─main │ │ ├─java │ │ │ └─com │ │

快速建立一個基於Gradle構建的SpringBoot Web專案SpringBoot-01)

快速建立一個基於Gradle構建的SpringBoot Web專案 在建立SpringBoot專案之前需要提前配置好電腦環境:JDK 、Gradle。 首先我們會通過 SpringBoot 官方提供的 Spring Initializr 這樣的一個專

Intellij IDEA通過SVN匯入基於Springbootmaven專案以及對已有專案做更新

一.匯入外部maven專案 點選“+”,輸入SVN地址並下載專案 彈出視窗,選擇new window(自己覺得哪個好就選哪個) 等待執行完畢,執行完後會出現以下情況,就需要配置一下你的maven庫了 配置Maven 彈出視窗,選擇new window(自己覺得哪個好就選哪個) 配置

SpringBoot】手把手使用IDEA快速建立一個SpringBoot專案

微信公眾號: 關注可獲得更多幹貨。問題或建議,請公眾號留言; 關注小編微信公眾號獲取更多資源 手把手使用IDEA快速建立一個SpringBoot專案 目錄 1.New Project

快速建立一個springboot專案

  本文主要介紹使用spring官方網站快速生成springboot腳手架 1.開啟網站  https://start.spring.io 2.填寫專案資訊以及maven依賴(新增web,devtools依賴即可) 3.解壓生成的zip檔案,然後在id

基於springboot多模組專案使用maven命令打成war包放到伺服器上執行的問題

首先,大家看到這個問題,可能並不陌生,而且腦子裡第一映像就是使用mava中的clear package 或者 clear install進行打包,然後在專案中的target資料夾下面找到xxx.war,將這個war包放到外接的tomcat伺服器下的webapps下面,最後執行tomcat的bin資料夾下面的s

如何建立一個基於 .NET Core 3 的 WPF 專案

在 Connect(); 2018 大會上,微軟釋出了 .NET Core 3 Preview,以及基於 .NET Core 3 的 WPF;同時還發布了 Visual Studio 2019 預覽版。不過 Visual Studio 2019 的預覽版中並沒有攜帶 WPF on .NE

建立一個基於Spring IO Platform的多模組Gradle專案

最近有同學問我,能不能讓我弄一個基於Spring-Platform的多模組Gradle專案的例子,最近終於試著弄了一下,所以寫篇文章介紹一下。 首先介紹一下Spring IO Platform,它主要為了幫助我們管理專案中龐大的類庫的版本。做過專案的同學都肯定

如何快速建立一個VUE專案(介紹專案結構)

建立vue專案流程 1.安裝node.js 首先檢視一下你的node.js是否安裝成功,如果安裝成功第一步可以略過。 驗證是否安裝成功 node -v #檢視nodejs版本號 比如:v8.4.0 如果未安裝,windows 在官網下載安裝包,直接安裝即可

springboot】【一】用idea建立一個簡易springboot專案

在idea中File->new->project選擇Spring Initializr (spring初始化程式)2.如果你用過maven name這個你應該認識了3.選擇spring元件,由於是web專案,先選擇webTemplateEngines 中有Free

建立一個入門springboot專案(controller層)

那麼我們又來疑問了:假如我的Controller所在的包不在不和啟動類在一個包下呢?我們需要在啟動類(DemoApplication)加一個註解@ComponentScan(basePackages = {"com.*"})這也是為什麼有些同學啟動成功,但是卻訪問不了你自己寫的controller,報404錯

SpringBoot2.x入門:快速建立一個SpringBoot應用

## 前提 這篇文章是《SpringBoot2.x入門》專輯的**第2篇**文章,使用的`SpringBoot`版本為`2.3.1.RELEASE`,`JDK`版本為`1.8`。 常規的套路會建議使用`Spring`官方提供的工具[Spring Initializr](https://start.spri

安裝angular cli 及建立一個基於angular 的程式

發現了一個很好的頁面效果,裡面使用了angular . 來學習一下 angular 。 參考官網,安裝angular-cli . 在安裝 angular-cli 前,先安裝一下node 與 npm, node中自帶npm . 在 命令視窗 使用命令 node -v npm -v

快速建立一個pandas Data_Frame ,方便測試

import numpy as np import pandas as pd data = np.random.randn(6, 4) df = pd.DataFrame(data,columns=['a','b','c','d']) print(df) a

基於SpringBoot搭建SSM專案

在idea中我們先建立好maven專案,匯入好依賴包 pom.xml如下 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=

## **如何建立一個最簡單的struts2專案

1.建立web專案並匯入struts2相關jar *jar包可以去官網下載 2. web.xml中配置struts2的核心過濾器 核心過濾器:StrutsPrepareAndExecuteFilter 配置核心過濾器: 3.建立action類 4.在str

Eclipse搭建基於SpringbootMaven多模組工程

1,寫在前面的話 1.1,我想說點啥          公司提供介面服務的專案要進行重構,主旨是構建基於Springboot的Maven多模組聚合工程.因之前接觸Springboot較少,於是就在網上查閱資料,查了好多部落格發現大部分都是寫用idea構建的,部分用Ec

[Swift通天遁地]二、表格表單-(9)快速建立一個美觀強大的表單

本文將演示如何利用第三方庫,快速建立一個美觀強大的表單 首先確保在專案中已經安裝了所需的第三方庫。 點選【Podfile】,檢視安裝配置檔案。 1 platform :ios, '12.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5

MyEclipse2017破解設定maven專案搭建

下載 版本:MyEclipse2017 Stable 2.0 破解步驟 把補丁包裡面patch下的所有檔案覆蓋到你myeclipse安裝路徑下的plugins目錄; 斷開網路,雙擊開啟crack.bat檔案; 按照下圖順序依次操作: 開啟

基於Springboot框架 web專案 真實路徑對映到虛擬url路徑的實現

最近有一個需求 前提是很不靠譜的需求 最後一定會刪掉重做的 但是要現在湊合用的  就是用springboot的框架 搭建的一個web專案 因為springboot是自帶tomcat的 所以會打包成jar包 放到伺服器上部署 問題就是說 我們需要在伺服器上 建立一個資料夾 來存放