網頁

2018/3/2

Eclipse STS 建立Spring Boot專案

使用Eclipse安裝STS plug-in來建立Spring Boot專案。或是你可以直接安裝Spring Tool Suite(STS) IDE來建立spring boot專案

使用工具

  • jdk1.8
  • Eclipse version: 2019-03 (4.11.0)
  • Spring Tool Suite
  • Spring Boot 2.1.6

首先使用Notepad++或記事本開啟Eclipse目錄下的eclipse.ini,加入-vm參數指向jdk1.8做為運行環境,例如

-vm
C:/Program Files/Java/jdk1.8.0_60/bin/javaw.exe

然後建立一個工作目錄(workspace),例如D:\myspringboot\workspace然後將Eclipse開啟,並將workspace設為剛剛建立的目錄,當然你也可以使用Eclipse預設的workspace。

此時就是一個乾淨完好的Eclipse了,接著設定Eclipse的一些基本設定(可以跳過)。

接著要使用Eclipse的Spring Tools (STS) plug-in來幫助我們建立SpringBoot的Web專案。

在Eclipse的MarketPlace搜尋STS然後安裝。



安裝好後,新增一個Eclipse專案,點選Eclipse工具列的File -> New -> Other -> Spring Boot -> Spring Starter Project



接著設定Project,
Service URL維持預設(http://start.spring.io)
Name自行任意命名
Type為Maven
Java Version為8
Language使用Java
Packageing改成War,即要打包成的檔案。
下面的Group,Artifact及Package為Maven的設定,完成後按Next >



接著因為是要建立Web專案,選擇Spring Web Starter加入為dependency,然後按Finish



然後新的專案及依賴的函式庫就會開始下載,完成後專案結構如下



打開Spring Boot的預設配置檔,即src/main/resoucres下的application.properties來設定專案的context path及port。

application.properties

#context path
server.servlet.context-path=/MySpringBoot
#port
server.port=8080

至此Spring Boot專案便建立完成,在專案上按滑鼠右鍵 -> Run As -> Spring Boot App啟動。



啟動時在console會有以下訊息。


  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.7.RELEASE)

2019-08-15 23:20:26.715  INFO 8576 --- [           main] i.matt.springboot.SpringbootApplication  : Starting SpringbootApplication on matt-PC with PID 8576 (D:\MyProject\workspace\springboot\target\classes started by matt in D:\MyProject\workspace\springboot)
2019-08-15 23:20:26.718  INFO 8576 --- [           main] i.matt.springboot.SpringbootApplication  : No active profile set, falling back to default profiles: default
2019-08-15 23:20:27.719  INFO 8576 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2019-08-15 23:20:27.748  INFO 8576 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2019-08-15 23:20:27.748  INFO 8576 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.22]
2019-08-15 23:20:27.936  INFO 8576 --- [           main] org.apache.jasper.servlet.TldScanner     : At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
2019-08-15 23:20:27.942  INFO 8576 --- [           main] o.a.c.c.C.[.[localhost].[/MySpringBoot]  : Initializing Spring embedded WebApplicationContext
2019-08-15 23:20:27.942  INFO 8576 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1179 ms
2019-08-15 23:20:28.137  INFO 8576 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2019-08-15 23:20:28.308  INFO 8576 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path '/MySpringBoot'
2019-08-15 23:20:28.312  INFO 8576 --- [           main] i.matt.springboot.SpringbootApplication  : Started SpringbootApplication in 1.927 seconds (JVM running for 2.76)

在本機專案的url為http://localhost:8080/MySpringBoot/


如果專案是前後端分離,就不用繼續進行以下的jsp頁面設定。




以下是傳統後端jsp頁面的設定。

此時仍無頁面,因此新增一個Controller類別及一個jsp頁面。

新增一個HelloController.java如下,與SpringBootApplication放在同一個package。

HelloController.java

package idv.matt.springboot;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;


@Controller
public class HelloController {

    @RequestMapping("/hello")
    public ModelAndView hello() {
        return new ModelAndView("hello"); // 根據view resolver mapping至hello.jsp
    }
}

src/main/下新增webapp/WEB-INF/jsp目錄,然後在src/main/webapp/WEB-INF/jsp目錄下新增hello.jsp

hello.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>HelloSpringBoot</title>
</head>
<body>
<h1>Hello SpringBoot!!</h1>
</body>
</html>

然後設定SpringBoot的View Resolver來mapping Controller至jsp的路徑,開啟src/main/resources/下的application.properties來新增,設定如下

application.properties

#context path
server.servlet.context-path=/MySpringBoot
#port
server.port=8080
#view
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

以上除了view的設定外,還設定了context路徑及應用程式的port。請參考Appendix A. Common application properties

最後記得要在Maven的pom.xml加入下面的dependency,尤其是tomcat-embed-jasper,因為少了這個函式庫則jsp無法編譯。

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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>2.1.6.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
    <groupId>idv.matt</groupId>
    <artifactId>springboot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot</name>
    <description>My SpringBoot Demo</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <!-- Sprng Starter自動產生 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- 加入以下 -->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

完成以上就可以啟動了,在專案上按滑鼠右鍵 -> Run As -> Spring Boot App便可啟動。


然後開啟瀏覽器並在網址列輸入url http://localhost:8080/MySpringBoot/hello,網頁開啟如下



如果要停止運行,可在Eclipse上方工具列點選停止按鈕即可。



完成後的專案結構如下。



如果覺得文章有幫助的話還幫忙點個Google廣告,感恩。


參考:

6 則留言:

  1. 說明雖然簡單但重點都沒漏,照著一步一步真的就能做出一個能跑的spring boot專案,非常感謝。

    回覆刪除
  2. 內容簡潔,很適合我用,感恩

    回覆刪除
  3. 你好
    我在運行你的範例時遇到了抓不到jsp的情況發生
    發現了是新增hello.jsp時的路徑問題
    原先為「src/webapp/WEB-INF/jsp」
    更改為「src/main/webapp/WEB-INF/jsp」
    就能找到hello.jsp了

    不曉得是筆誤又或是我的版本問題

    回覆刪除
  4. @3樓 匿名
    您好,謝謝您的提醒,可能當初版本比較舊,而新版的專案目錄跟之前不太一樣,因此整篇文章我已經根據目前的版本做了更新,感謝您。

    回覆刪除
  5. 做的出來,感謝

    回覆刪除
  6. 非常有幫助, 但是對目錄大小寫非常敏感
    原先src/main/webapp/WEB-INF/JSP, 會error
    改為src/main/webapp/WEB-INF/jsp, 才正確, 供大家參考

    回覆刪除