# java 台北2 ## project lombok ``` java -jar lombok.jar ``` ## JDK, wifi同學無法安裝WDT ``` keytool -delete -alias "CTBC_CA_SHA2" -keystore "d:\tools\jdk17\..." -storepass changeit ``` # lab1 * https://start.spring.io/ * Maven * Spring 2.7.10 * lab1 * web, lombok, devtools, h2, jpa, validation * copy lab1 to desktop\labs * extract * File/Import * Maven/Existing Maven Projects * 會看到pom.xml * Run as /Maven build ... * spring-boot:run you should see " Tomcat started on port(s): 8080 (http) with context path ''" * src\test\java Run as==> JUnit ``` ``` --- ## download this: ``` https://start.spring.io/#!type=maven-project&language=java&platformVersion=2.7.11&packaging=jar&jvmVersion=17&groupId=com.ctbcbank&artifactId=demo1&name=demo1&description=Demo%20project%20for%20Spring%20Boot&packageName=com.ctbcbank.demo1&dependencies=web,actuator,thymeleaf,lombok,validation,devtools,h2,data-jpa ``` ### /src/main/resources/templates/home.html ```html <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF8"> <title>Insert title here123</title> </head> <body> <h1>My first spring boot MVC</h1> <h2 th:text="${message}"></h2> <h3>logo</h3> <img src="/images/ctbc_logo.png" /> <h3>logo2</h3> <img th:src="@{/images/ctbc_logo.png}" /> </body> </html> ``` ### /src/main/java/<default_package>/controllers ```java package com.ctbcbank.demo.Lab1.controllers; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") public String home(Model model) { model.addAttribute("message", "試試message from controller123!!"); return "home"; } } ``` # 26-Apr-2023 ```java package com.ctbcbank.demo.Lab1; import org.hamcrest.Matchers; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; @SpringBootTest @AutoConfigureMockMvc public class FirstHomeControllerTests { @Autowired private MockMvc mockMvc; @Test void mockIsNotNull() { Assertions.assertNotNull(mockMvc); } @Test void rootShouldBeOK() throws Exception { mockMvc.perform(MockMvcRequestBuilders.get("/")) .andExpect(MockMvcResultMatchers.status().isOk()); } @Test void rootShouldBeHomeHTML() throws Exception { mockMvc.perform(MockMvcRequestBuilders.get("/")) .andExpect(MockMvcResultMatchers.status().isOk()) .andExpect(MockMvcResultMatchers.view().name("home")) .andExpect(MockMvcResultMatchers.content().string( Matchers.containsString("message from controller"))); } @Test void xyzShouldBeNotFound() throws Exception { mockMvc.perform(MockMvcRequestBuilders.get("/xyz")) .andExpect(MockMvcResultMatchers.status().isNotFound()); } } ``` # https://site.mockito.org/ ## your lab1 sample: ### https://drive.google.com/file/d/1Oi1ig8rVB3YUigdxyUPHWga_BmToerMO/view?usp=sharing ### Java Spring finish * https://drive.google.com/file/d/10a8EpxeL0TfbxsF3tXLr2uAz3FIVPuI2/view?usp=share_link ### Spring lab pre walkthrough * https://drive.google.com/file/d/1aMH5ZQ6V54qhwKkdanVZ9NMqSa3Km3yh/view?usp=sharing ### angular lab files: * https://drive.google.com/file/d/1v7Es6s0LSp23daJ2owG8bEPVzQEl_GRl/view?usp=sharing