iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 7
1
Modern Web

30天學習Spring MVC系列 第 7

Day 7 Spring Boot-Controller(下)

上一篇有提到Spring Boot預設是沒有支援以jsp來作為view(層)的顯示,他是搭配著模板引擎,利用了模板引擎製作view層
傳統的Spring Struts2 (SS架構)我們習慣於將jsp檔案放置於WEB-INF資料夾底下,Spring Boot是可以更改設定將view層以jsp方式作為顯示

今天開始前我要先介紹常見的問題排除

Perhaps you are running on a JRE rather than a JDK?

遇到這個問題的解決方式呢,點擊上方工具列
Window->Preferences->點選Java展開選單->選擇Installed JRES點擊會出現下面圖片右方視窗

https://ithelp.ithome.com.tw/upload/images/20171226/20107812cmU8LCD5bj.png

看到右方視窗請點擊你的JRE->點擊Edit->出現左邊視窗->點擊Directory->選擇JDK目錄後按確定
之後在按Finish就可以了

之後我們使用Maven做Compile或package就沒問題了如下圖

https://ithelp.ithome.com.tw/upload/images/20171226/20107812tNGMsbtHzH.png

Spring Boot以JSP方式呈現VIEW層介紹

這一個篇幅很多要介紹,會有很多的問題,Windows有編碼中文亂碼的問題我會慢慢做解釋
第一步:
在application.properties加入底下這兩行

  spring.mvc.view.prefix = /WEB-INF/jsp/
  spring.mvc.view.suffix =  .jsp

在pom檔案放入底下的依賴

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
		</dependency>
		
		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-jasper</artifactId>
			<scope>provided</scope>
		</dependency>

在src->main->webapp下新增WEB-INF資料夾
在WEB-INF資料夾新增jsp

jsp頁面如下

<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<html>	
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	</head>
<body>
	For Run in JSP: ${message}
</body>

</html>

將userController修改為以下配置

```
	private String message = "鐵人賽第七天加油!!!";
 
 @GetMapping("/")
	public String index(Map<String, Object> model) {
		model.put("message", this.message);
		return "index";
	}
    
```

點擊專案右鍵->Run AS ->Run configurations->Maven Build->Base directory點Workspace選擇你的專案->Goals輸入 compile

https://ithelp.ithome.com.tw/upload/images/20171226/201078126MOTaGjhsb.png

沒錯誤再一次
點擊專案右鍵->Run AS ->Run configurations->Maven Build->Base directory點Workspace選擇你的專案->Goals輸入 package

   ![https://ithelp.ithome.com.tw/upload/images/20171226/20107812AxdRJohTmk.png](https://ithelp.ithome.com.tw/upload/images/20171226/20107812AxdRJohTmk.png)
   

沒錯誤的話你的專案target底下會出現SpringTest-0.0.1-SNAPSHOT.war

https://ithelp.ithome.com.tw/upload/images/20171226/20107812SJkSDdURD7.png

名稱是pom.xml中兩個tag字串所相加的名稱
SpringTest
0.0.1-SNAPSHOT

下一步:

下載tomcat

到(https://tomcat.apache.org/download-80.cgi )

下載 Apache Tomcat
tomcat已經有tomcat9版本,我以tomcat8配置作介紹

下一步:

進入tomcat8目錄

https://ithelp.ithome.com.tw/upload/images/20171226/20107812g7mEZqw543.png

下一步:

將SpringTest-0.0.1-SNAPSHOT.war丟到webapps

下一步:

使用使用者命令工具進到此目錄

下startup.bat
啟動畫面如下圖

https://ithelp.ithome.com.tw/upload/images/20171226/20107812jnhAQghanO.png

在瀏覽器輸入
(http://localhost:8080/SpringTest-0.0.1-SNAPSHOT/ )
就大功告成!!!灑花~~~

https://ithelp.ithome.com.tw/upload/images/20171226/20107812Hv83vDwwmu.png

如果你是想了解Controller還有沒有其他應用,當然是有的他還有很多的參數可以設定
但是此兩篇Controller是介紹如何搭配View層做個展示,程式撰寫第一步都是要展示出我們的介面嘛~
大家不要急,有興趣就自己實作看看吧~~

如果想更了解Controller你可以參考這篇文章

參考資料:
(https://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html )

下一篇 先介紹一下什麼是Service


上一篇
Day 6 Spring Boot -Controller(上)
下一篇
Day 8 Spring MVC-@Service的使用
系列文
30天學習Spring MVC30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
subcrew692
iT邦新手 5 級 ‧ 2018-10-01 11:54:53

不好意思請問:
我jsp目錄若為webapp\WEB-INF\jsp\index.jsp就會抓不到
但是如果放在webapp\index.jsp就可以抓到,請問是我哪裏設定有問題嗎?

我的UserController一直無法將message傳到jsp的頁面
都有照著步驟走,可是jsp一直無法show出message的內容/images/emoticon/emoticon02.gif

https://ithelp.ithome.com.tw/upload/images/20181001/20112119auhwbUx1US.png

抱歉我找到問題了
要把pom.xml的thymeleaf那段dependency註解掉
/images/emoticon/emoticon37.gif

我要留言

立即登入留言