> # SpringBoot 3/24 上課內容 ###### tags: `SpringBoot` - [ ] # 2 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/5MDhIyc.png) [spring-boot](https://spring.io/projects/spring-boot) ![](https://i.imgur.com/bWBzq9v.png) * Tomcat不能用jar專案 # 3 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/stdgJMX.png) ## Spring Boot 動態網站開發實務 ![](https://i.imgur.com/Fgiy2Pp.png) [Spring tools](https://spring.io/tools) * 好用[intellij](https://www.jetbrains.com/idea/) # 4 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/H6YFy11.png) [java sdk](http://java.sun.com/) ## Spring Boot 動態網站開發實務 ![](https://i.imgur.com/FGBN3iL.png) # 5 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/VkUPOvu.png) ## Spring Boot 動態網站開發實務 ![](https://i.imgur.com/aUJnd50.png) # 6 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/3zwMQTe.png) ## Spring Boot 動態網站開發實務 ![](https://i.imgur.com/e04RWoD.png) # 7 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/0RCvelD.png) ## Spring Boot 動態網站開發實務 ![](https://i.imgur.com/LzLXCMh.png) # 8 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/QNCKNie.png) ## Spring Boot 動態網站開發實務 ![](https://i.imgur.com/R88w4eH.png) # 9 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/8heLz48.png) # 10 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/ZfL9TgS.png) ## Spring Boot 動態網站開發實務 ![](https://i.imgur.com/gnaJiyH.png) [Spring](https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-build-systems) # 11 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/EN0iSF1.png) ## Spring Boot 動態網站開發實務 ![](https://i.imgur.com/REHV1VQ.png) # 12 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/DEUSfxf.png) ## Spring Boot 動態網站開發實務 ![](https://i.imgur.com/ne49Mhx.png) # 13 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/aFiKmR3.png) # 14 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/G05rQIQ.png) ## Spring Boot 動態網站開發實務 ![](https://i.imgur.com/3nkhY97.png) * 這個寫法 jsp不能用 # 15 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/ZSd18DC.png) ![](https://i.imgur.com/ni3azON.png) # 16 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/RrmBnFs.png) ## Spring Boot 動態網站開發實務 ![](https://i.imgur.com/Fze2vA1.png) # 17 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/aU1fF29.png) * provided = 由系統提供 ## Spring Boot 動態網站開發實務 ![](https://i.imgur.com/KZTeT0z.png) * 測試程式用的 # 18 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/MUO3UZW.png) * 可改成jar黨或war ![](https://i.imgur.com/2t3TCoy.png) * 現在使用的 ![](https://i.imgur.com/JPScu4B.png) ## Spring Boot 動態網站開發實務 ![](https://i.imgur.com/mDF8mDZ.png) # 19 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/nTAhAPV.png) ## Spring Boot 動態網站開發實務 ![](https://i.imgur.com/zb7WkdO.png) ![](https://i.imgur.com/MVq6N3q.png) # 20 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/JbFyllS.png) * 不能放的位子 ![](https://i.imgur.com/wuaoeD0.png) * domain name = 網址反過來寫 ## Spring Boot 動態網站開發實務 ![](https://i.imgur.com/t2P70Yp.png) # 21 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/pgRUfXs.png) * 從外部帶入參數 ## Spring Boot 動態網站開發實務 ![](https://i.imgur.com/XLCwUWA.png) # 22 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/lAfouAh.png) ![](https://i.imgur.com/n7ps4iw.png) * ports 0~65535除2=正跟負 * 系統ports 0~1023 * 網址通訊埠 預設80 就不會顯示 ![](https://i.imgur.com/uLtYWhK.png) ## Spring Boot 動態網站開發實務 ![](https://i.imgur.com/VP9kIW7.png) # 23 Spring Boot 動態網站開發實務 * 2008 ![](https://i.imgur.com/3e0VaVq.png) ## Spring Boot 動態網站開發實務 ![](https://i.imgur.com/XPqYvWU.png) # 24 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/3HO2rLX.png) ## Spring Boot 動態網站開發實務 ![](https://i.imgur.com/q71dR8J.png) # 25 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/RtLOanb.png) ## Spring Boot 動態網站開發實務 ![](https://i.imgur.com/1cjBmkH.png) # 26 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/5aGaRhy.png) ## Spring Boot 動態網站開發實務 ![](https://i.imgur.com/FZnENBo.png) # 27 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/NNc6vDw.png) # 28 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/snkHFeC.png) ## Spring Boot 動態網站開發實務 ![](https://i.imgur.com/cQLoLxi.png) # 29 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/jWqk4M2.png) ## Spring Boot 動態網站開發實務 ![](https://i.imgur.com/Ys7EJGD.png) # 30 Spring Boot 動態網站開發實務 ![](https://i.imgur.com/49w737H.png) ## Spring Boot 動態網站開發實務 ![](https://i.imgur.com/YPuaP0e.png) # <font color="green">------------實作部份------------</font> #### springbootWorkspace ![](https://i.imgur.com/ofTd3EG.png) ![](https://i.imgur.com/b5Y8XsD.png) ![](https://i.imgur.com/vbENjQ1.png) ![](https://i.imgur.com/fymTQ3x.png) ![](https://i.imgur.com/bfhOwCf.png) ![](https://i.imgur.com/xvnupGp.png) ![](https://i.imgur.com/9OgFsug.png) ![](https://i.imgur.com/U3SykRI.png) ![](https://i.imgur.com/2uxDtD9.png) ![](https://i.imgur.com/mDNMNwv.png) ![](https://i.imgur.com/i2ce1ab.png) ![](https://i.imgur.com/R3UaLP9.png) ![](https://i.imgur.com/zZUMtzW.png) ![](https://i.imgur.com/e00liv2.png) ![](https://i.imgur.com/I8tFNyH.png) ![](https://i.imgur.com/jH3P7yI.png) ![](https://i.imgur.com/jVbtYNE.png) #### 檢查環境設定 ![](https://i.imgur.com/CVkusni.png) ![](https://i.imgur.com/IqTx2Ae.png) #### cmd mvn mvn -help ![](https://i.imgur.com/oEHaFy6.png) #### 建立專案 DemoSpringBootWebProject ![](https://i.imgur.com/5BR753w.png) * 可透過網路建立 ![](https://i.imgur.com/S2pMfv2.png) ![](https://i.imgur.com/vEVZo3E.png) ![](https://i.imgur.com/riBsgiN.png) * (jre)是預設 ![](https://i.imgur.com/HqDsHSr.png) ![](https://i.imgur.com/WMUfYwv.png) ![](https://i.imgur.com/uKlgjsl.png) ![](https://i.imgur.com/hKYtaW8.png) ![](https://i.imgur.com/bGt23T2.png) ![](https://i.imgur.com/HyEyjS1.png) * 白色是在用的 灰色是目前沒用到的 ![](https://i.imgur.com/0RbwGgC.png) ![](https://i.imgur.com/t7dzUcP.png) ### package * **tw.leonchen** * controller * model * config * product * model * controller * order * model * controller #### HelloController.java ![](https://i.imgur.com/3q5FfGq.png) ```clike= package tw.leonchen.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @RequestMapping(path="/hello.controller", method = RequestMethod.GET) public String processAction() { return "hello, Controller"; } } ``` ### 如果不能執行 ![](https://i.imgur.com/9Nx6hgP.png) ### 實作組態檔 ![](https://i.imgur.com/NL8Zm6Q.png) #### application.properties ```clike= #Server port #server.port=8081 #data setup資料設定 name=mary age=18 #profiles information profiles.username=alice profiles.address=USA profiles.phone=N/A ``` ### Person.java ![](https://i.imgur.com/NO9CwKx.png) ```clike= package tw.leonchen.model; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component public class Person { @Value("${name}") private String name; @Value("${age}") private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } ``` #### PersonController.java ```clike= package tw.leonchen.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import tw.leonchen.model.Person; @RestController public class PersonController { @Autowired private Person person; @GetMapping(path = "/person.controller") public Person processAction() { return person; } } ``` #### application.yml ![](https://i.imgur.com/xrs0JN7.png) ```clike= #Server port server: port: 8082 #data setup資料設定 name: mary age: 20 #profiles information profiles: username: louis address: Taiwan phone: "0987654321" ``` #### PersonalProfiles.java ```clike= package tw.leonchen.model; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component @ConfigurationProperties(prefix = "profiles") public class PersonalProfiles { private String username; private String address; private String phone; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } } ``` ![](https://i.imgur.com/HYzVN8x.png) #### PersonalProfilesController.java ```clike= package tw.leonchen.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import tw.leonchen.model.PersonalProfiles; @RestController public class PersonalProfilesController { @Autowired private PersonalProfiles pp1; @GetMapping("/personalProfiles.controller") public PersonalProfiles processAction() { return pp1; } } ``` ## 看優先權 ![](https://i.imgur.com/PeP3yGN.png) #### PathVaribleController.java ```clike= package tw.leonchen.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class PathVaribleController { @GetMapping("/member/{mid}") @ResponseBody //true 一定要給值 public String processPathVariableAction(@PathVariable(name = "mid", required = true )String memberId) { return "memberId:" + memberId; } } ``` #### DemoSpringBootWebProjectApplication * 加入Servlet ```clike= package tw.leonchen; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; @SpringBootApplication @ServletComponentScan public class DemoSpringBootWebProjectApplication { public static void main(String[] args) { SpringApplication.run(DemoSpringBootWebProjectApplication.class, args); } } ``` #### MyServletfilter.java ```clike= package tw.leonchen.filter; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; @WebFilter("/") public class MyServletfilter implements Filter{ @Override public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException,ServletException{ response.setContentType("text/html;charset=UTF=8"); PrintWriter out = response.getWriter(); System.out.println("execute filter ready"); chain.doFilter(request, response); System.out.println("execute filter finished"); out.close(); } } ```