|
2016/11/23
Missing Artifact JDK Tools Jar
2016/9/2
[maven 7] 加入LOG4J
- 參考網誌
- Log4j 是一套開放源碼的工具,方便編程人員在程式中加入 log 機制,並輸出到各種目標上
- 設定方式 , 可在server端設定 , 也可在project
- properites
- XML
- 三大元件
- Logger - 由編程人員在程式中使用,進行 logging 的元件
- Appender - 負責將 log message 輸出到各種裝置上
- Layout - 決定 log message 的格式
- Logger
- 等級 : FATAL > ERROR > WARN > INFO > DEBUG
- 當Logger設為 INFO時 , 只有比INFO高等級的結果才會被記錄下來 , 例如 FATAL、ERROR、WARN
- Appender
- 一個Logger物件可以同時輸出記錄到不同Appender(裝置)上
- 一般情況 , 當子類別輸出紀錄時 , 父類別同時輸出相同訊息
- Layout
- %r [%t] %-5p %c - %m%n
- 176 [main] INFO org.foo.Bar - Located nearest gas station.
- PatternLayout 的 格式字元列表如下:
- %c 輸出日誌訊息所屬的類別的全名
- %d 輸出日誌時間點的日期或時間,指定格式的方式:%d{yyy-MM-dd HH:mm:ss }。
- %l 輸出日誌事件的發生位置,即輸出日誌訊息的語句處於它所在的類別的第幾行。
- %m 輸出訊息,如log(message)中的message。
- %n 輸出一個列尾符號。
- %p 輸出優先階層,即DEBUG,INFO,WARN,ERROR,FATAL。如果是調用debug()輸出的,則為DEBUG,依此類推。
- %r 輸出自應用啟動到輸出該日誌訊息所耗費的毫秒數。
- %t 輸出產生該日誌事件的線程名。
- %r 輸出自應用啟動到輸出該日誌訊息所耗費的毫秒數。
- %f 輸出日誌訊息所屬的類別的類別名。
- 在src./main/resources目錄新增 log4j.properties
- 設定logger等級為 INFO , 有console與syslog兩個appender
- 其中syslog將把紀錄寫至 C:/usr/log/MyApp2.log裡
- 輸出樣式可改變 , 例如 11 、12行可互換 成 HTML樣式
- 建立一支程式Log4j.java , 使用logger紀錄 INFO
- static : 此為靜態方法 , 不用實體化Log4j類別 , 即可呼叫 init方法
- Logger logger = Logger.getLogger(Log4j.class);
- 產生logger物件時需要class名稱 Log4j
- logger.info("hello");
- 程式讀到此行時 , 將 INFO訊息 hello 寫入 MyApp2.log
- 在上一個單元 maven 6 的IndexController 類別塞入Log4j.init(); , 因為init 是靜態方法 , 不用先 new Log4j類別
- 啟動專案後 , 在網址列 送出 request
- http://localhost:8080/MyApp2/index1
- 然後至 C:/usr/log/MyApp2.log 查看有無寫入即完成 , 且內容格式會按照log4j.properties 設定之方式呈現 , 以及hello 訊息
2016/9/1
[maven 6] 建立SpringMVC , 捨去Struts
- 捨去 Struts ,專案使用之框架只有 Spring + Mybatis , 記得把 web.xml 與 pom.xml的 struts設定都拿掉
- 此範例建立方式有兩種
- XML設定
- Annotation設定
- XML設定
- 將 SpringMVC 加入 maven的 pom.xml 並update project
- 在web.xml 新增SpringMVC的分派器 dispatcher , 告訴 web 我的request要由springMVC解析 , 此時原本的 application.xml 與 mvc-config.xml共存 , 或者可以將application 的檔案放置於 mvc-config.xml中將 application刪除
- 依照下面的設定中則會讀取mvc-config.xml中的定義,檔案路經變更為 classpath底下。
- 預設檔名:如果不設置 "contextConfigLocation"初始參數,xml檔名預設為「Servlet名稱- servlet.xml ,以下圖範例為 " SpringMVCServlet-servlet.xml "
- 預設路徑:WEB-INF
- 在Resources目錄下建立 mvc-config.xml檔案 , 且設定如下 ,
- prefix是指 jsp檔案的路徑位置 , 也可設置在 WEB-INF底下 ,
- suffix是指副檔名
- bean name /index1 是指 url requet
- 在這邊使用的是 spring的注入觀念 , set property 在程式的一端 將有一個setter 對應 , 將value menu/indexTest1 注入到 viewPage這個屬性
- 程式端 , 在controller這個自定義的 package建立一個class ,並且 implement spring的controller interface , 內容如下
- 屬性 viewPage :回傳之 jsp 檔案與路徑
- ModelAndView :
- 參數一 :回傳之 jsp 檔案與路徑
- 參數二 :頁面變數或物件 ?
- 參數三 :參數二內容
- 建立menu目錄 , 建立 indexTest1.jsp , 並且接應 controller端的 user
- Spring MVC會將所有的Request先導向給一支叫做DispatcherServlet的程式,接著DispatcherServlet會決定要把這個Request交給哪個Controller做處理
- 以上組合的總結 : client 送出 request /index1 , spring 將${user}塞入 /menu/indexTest1.jsp 並送回client
- XML設定方式預設會呼叫handleRequest方法 , 至於能不能改變就待個人去研究 , 往後不多磊述 , 此篇只是簡單實現MVC
- Annotation設定
- 與XML設定方法比較 , 不需要設定bean name "/index1" , 直接透過寫annotation的方式即可完成MVC
- 需在mvc-config中啟動 annotation , 告訴annotation在哪
2016/7/8
maven installing 3rd party JARs
- 參考網址
- 有時候第三方套件較新的版本在maven找不到 如 Maven Central , 此時可以套過手動安裝的方式, 將jar檔匯入本地端的 reposity
- 準備好要匯入的jar檔 zuljsp-2.6.0.jar
- 打開command輸入以下資訊 , 資訊可自行定義 , 參考下圖
- mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
- 或者套過第三方提共的URL , 如下貼入POM.xml
- <repositories>
<repository>
<id>ZK CE</id>
<url>http://mavensync.zkoss.org/maven2</url>
</repository>
<repository>
<id>ZK EVAL</id>
<name>ZK Evaluation Repository</name>
<url>http://mavensync.zkoss.org/eval</url>
</repository>
</repositories>
2016/6/11
[maven 5] MyBatis自動產生程式碼, 並整合Spring
- 不管是在Hibernate或者MyBatis Framework , 需要有DAO、VO、mapping映射檔、config設定檔等檔案幫我們完成ORM
- 在設定檔的部分主要含三個部分 , 資料庫連線設定 、匯入映射檔、以及其他設定
- 在映射檔的部分包含VO物件與資料庫Table的對應關係
- VO物件主要就是table的描述 , 一個VO類別類似一個table的 schema , 一個VO物件代表一筆資料
- DAO是最靠近資料庫的類別, 通常是一個Table對應一個DAO 為求方便管理 , 所有對資料庫的操作(增刪改查) 皆包含在此 , DAO類別也可避免framework直接操作資料庫 , 未來需要抽換framework時才方便 , 使用者在操作時也未必直接操作dao物件 , 反而是service物件 來完成資料庫操作 , service物件可能還包含資料庫外的其他操作。
- Spring 整合了hibernate 或者 Mybatis的部分 , Spring 提出了 IOC與depency injection的作法 , 並且發揚AOP概念的許多做法
- 在建立Hibernate 與 Spring 的設定部分, 主要有三種作法 , 此三種方法可並存
- XML 設定
- Annotation註解
- Java Config
- 此篇接續繼續完成 Mybatis , 利用 generator.xml 自動產生 mapper(即dao) 、 vo 、example ....等物件 , 並且整合 Spring
- example 即是用寫程式的方式完成sql組合
- POM.xml 給予maven 設定 , 下載generator
- 準備好以下資料夾(new package)
- 安裝 Mariadb 10 或任一種DB , 建立資料庫 MYDB 與 table user
CREATE TABLE `user` (
`id` int(18) NOT NULL,
`name` varchar(20) NOT NULL,
`pwd` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
- 設定 generatorConfig.xml , 包含db連線 , 預產生之程式碼放置路徑 , 對象table
- 設定完畢後進行指令操作 , 找到你的jar路徑與generatorConfig.xml執行檔如下
- java -jar C:\maven_repository\org\mybatis\generator\mybatis-generator-core\1.3.2\mybatis-generator-core-1.3.2.jar -configfile C:\jboss_workspace\SSHBaseApp\src\main\resources\generatorConfig.xml -overwrite
- 這樣mybatis的部分已算完成 , 接著整合在spring裡 , 由spring控制資料庫連線
- 透過JNDI NAME連DB , 也可以用下方註解的方式連線 , jndi name 為 java:/MYDB
- 將dataSource交由Spring控制 , 並且將 mappings目錄下的所有xml映射檔交由Spring控制, 因此這此專案中幾乎是用不到mybatis的設定檔
- classpath:mappings/*.xml
- 為了要建立dataSource , 需先再納入3個jar到pom.xml裡
- 最後要完成jndi註冊 , 此專案的伺服器用的是 jboss , 需在jboss註冊 jndi name
- 第一篇安裝jboss eap時含有簡易的jboss , 至jboss目錄下尋找 standalone.xml
C:\jbdevstudio\runtimes\jboss-eap\standalone\configuration - 新增 datasource 如下 : jndi name : java:/MYDB
- 加入mariadb的driver , 以及新增自訂的module來源
- 編輯module.xml 將 mariadb 的jar 匯入即完成jndi name的註冊
- 啟動jboss 無異狀 , 各功能正常載入
訂閱:
文章 (Atom)








































