Java. Spring Boot.MySQL .SCSS...環境工具與學習障礙之路

JDBC . Servlet . SpringBoot . Thymeleaf....持續更新。

Java. Spring Boot.MySQL .SCSS...環境工具與學習障礙之路

筆記一路以來的環境和工具目錄,持續更新。

OpenJdk - 開發環境

  • 下載jdk : 之前用openjdk 11.0.12.7,建立路徑例如D:\java11jdk.zip,後面做電商範例STS跟著下載jdk15,統一所有資料包到路徑 D:\DataSource\JDK底下,開eclipes和STS就切換11/15環境變數路徑。
  • 環境變數設定: 控制台cmd >>  編輯環境 >> 進階 >> 環境變數 建立JAVA_HOME >>貼上路徑 >> Path編輯新增一個%JAVA_HOME%\bin >> 挪至最上方 >> ok
  • cmd下面 java -version和 javac -version看版本

Eclipes IDE 2020-6

MYSQL

  • MySQL Community :不知為何充滿陷阱的點擊誘惑,眼睛要睜大
  • mysql 版本確認: mysql登入後閃電執行這行
    select version();
  • 我是8.0.25

WebApp / JSP / Servlet / JDBC / Tomcat / JavaEE與JavaSE

  • Java Web App : 整體目錄架構有 src (java檔案用package包裝組織),lib用來放所需要的檔案,build classes,WEB-INF或WebContent放jar檔案與html和JSP等,以war檔案來最後包裝傳輸。
  • JavaSE與JavaEE : Java SE (JVM、JRE、JDK、Java) 為基礎虛擬機、執行環境、工具大禮包全家桶、API、Web運行環境等,是client端技術用視窗檢視畫面。JavaEE(Enterprise Edition) 支援更多擴充套件,是server端技術用瀏覽器檢視畫面。
  • 湯姆貓Tomcat : 是一種http伺服器和servlet容器,我是下載Tomcat 9.0.48
  • Servlet :Java Web App技術, 區分client和server端,一個容器(不知為何要這樣說不然會被罵) 可以執行pure java,request和response分別對應,兩兩一組。
  • JSP :Java Web App技術, 支援Html頁面內嵌Java語法,作為MVC(JavaBean-畫面-控制器Servlet)的資料呈現前端,以特殊符號包起來,有EL變數和JSTL標籤庫等內容使用方式,透過解譯compiler才能開啟需要整頁換掉,後續再換成ajax科技樹這非同步部分更新。
  • JDBC API: 由Java SE提供,用來連接各廠商(ORACLE/SQLServer/MySQL...)的提供的資料庫,支援SQL查詢語法。先註冊與建立資料庫連線connection >> Statement介面寫SQL語法 >>  一堆問號之後  getter/ setter方法列出>> 抓result與catch例外迴圈 與關閉connection>> 變數常數化

Hibernate ORM

  • ORM Object Relational Mapping 直接對應MVC架構裡Model部分
  • Hibernate 框架優點是不用Container ,POJO普通Java物件 (Plain Old Java Object)就可執行。
  • 安裝需要JBoss和hibernate.cfg.xml等設定,目前選擇Hibernate 6.2
  • 使用XML檔案映射,或是java bean裡面annotation@來定義
  • 最好處理資料庫關聯的地方,會比寫SQL快,@OneToMany @JoinColumn @JoinTable等,Bean.java則用@Entity @Table @Id @Column @GeneratedValue 設定,另外也處理LazyFetch和cascade等地方
  • 編寫Hibernate程式通則: Bean、DAO (Data Access Object)、service、hbm.xml、註冊hibernate.cfg.xml
  • Session、Transaction、Query(HQL/SQL)介面應用

Spring

  • Spring 框架特性: 容器、控制反轉Iversion of Control、依賴注入 Dependency Injection、AOP Aspect Oriented Programming 不更動程式加入Log等功能。
  • 可以說Spring 都是關於註冊,資源放xml或properties,不特別去寫servlet或多new一個去要過來,可以與Structs、Structs2、Hibernate、JSF、iBatis架構整合合作運行,例如搭配Hibernate就能大量操縱搭建資料庫,不用親自去資料庫寫複雜寫不動的SQL。
  • 核心容器包括了Core , Beans, Context,SpEL四個模組,Core 與Beans(IoC與DI,主元件BeanFactory,管理物件生成/釋放/依賴注射),Context就是Spring Framework設定檔,SpEL統一表達語言的模組。
  • 資訊存取整合由JDBC, ORM ,  Transaction等組合
  • 網路應用程式AOP, Web MVC, Web Socket, Messaging等
  • Spring提供常用註釋 : @Component @Repository @Service @Controller @Scope @Required @Autowired @Resource @Qualifier @Transactional @Value @PostController @PreDestroy @Configuration @Bean
  • Spring框架對JDBC/Web/Hibernate 技術的各種支援與整合應用
  • Maven技術讓jar檔案管理透過pom.xml隨時線上更新,更快更容易,但是遇見任何jar有問題、lib的module和classpath不一樣的地方,自行右鍵configure path,並且update project更新

Spring MVC

  • Spring MVC : 建構Servlet、JSP規格之上,Web Container支援才能運作,降低耦合(這也是個神奇的詞彙)隨時抽換MVC,讓設計可以專注在Model企業邏輯。
  • 常用註釋套件@Configuration @EnableWebMvc @ComponentScan @Controller @RequestMapping @SessionAttributes @ModelAttribute @PathVariable @Transactional

Spring Boot

  • Spring Boot : 省去前面很多配置的麻煩,可以打包jar檔案,不用安裝Tomcat與JavaEE,每次只要勾選適合的starter設定專案,約定優先於配置,有需要也可以自行Override
  • 有需要的時候在pom.xml的dependency就可抓取最新線上封包使用,注意版本相容問題。
  • Maven Parent Project建立父子專案,直接在父專案編寫groupId、artifactId、version可以被子專案繼承。
  • 常用註釋 @EnableAutoConfiguration @SpringBootApplication等
  • JPA Java Persistence API ,如@OneToOne @OneToMany @ManyToMany,支援方法如 find( ) remove( ) merge ( )
  • Hibernate支援方法如 get( ) save( ) delete( )
  • Spring Data JPA提供介面如 Repository / CrudRepository / PagingAndSortingRepository / JPARepository / MemberRepository
  • Spring Source Tool suit 3.9.14 >> 4.13.1 >> 4.14.1

Thymeleaf / Ajax / Restful API

  • Thymeleaf 是Web工具裡的Java引擎模板,透過特定表達式達到嵌入Java,透過th表達式傳送(action)與接收(塞id回來),省去修改JSP各種JSTL標籤麻煩,就像作文或報告模板一般可以動態調整,動靜分離、開箱即用,不會像是JSP不開伺服器就會亂碼無法客戶端單純使用,操作時在starter project記得勾選或是加入pom檔就可直接使用。
  • Ajax運用JSON格式: 是一種輕量級傳輸資料方式,利用非同步(也是一定要這樣說不然會被罵)假裝成同步的方式,不全體發送請求不用重整頁面,常用HTML事件如onfocus / onclick等,只傳輸必要資料,包含HTML, CSS, DOM, JavaScript, XMLHttpRequest等,換言之JS要很強方可順利傳接資料^^
  • Restful API : 是一種設計風格,所有東西都是一項資源,使用@RestController,定義可理解的網址URL,透過HTTP Request方法GET/POST/PUT/DELETE達到CRUD,用JSON、XML等內容直接寫入HTTP回應回傳,客戶端收到的並非完整網頁HTML,沒有View的部分。

VSCODE / SCSS

  • VSCODE : 寫前端HTML、JSP、Thymeleaf好幫手,彩色外掛裝下去,抓沒對稱沒關好的括號非常好用,眼殘人救星。
  • SCSS : 原型是SASS,預處理CSS,並且增加了一些功能使得CSS不用重複條列更加簡潔,階層、巢狀、父子選擇器的規劃讓使用更加便利,VSCODE右下角記得切換不然無法使用。

隨著技術更新前進,筆記參考就好。

至於怎麼到這裡的,說來話長下回再續。