順利考到汽車駕照,在這邊要感謝大眾駕訓班的李淑惠教練!萬分感謝!
新北市想學開車的朋友們,若選擇大眾駕訓班的話,小弟在這邊大力推薦李淑惠教練。
李淑惠教練教學認真、很有耐心,人也很和善,且會依照學生的情況彈性調整上課時間。
各位朋友也不想花一大筆錢學開車結果遇到不認真的教練,甚至還要被罵吧!何必花錢找罪受呢?所以若是決定到大眾駕訓班學開車的朋友,請指定李淑惠教練,絕對不會讓大家失望!
注意:
有需要的朋友,要報名之前,一定要先跟李淑惠教練聯絡喔! 不然沒先連絡而直接去櫃檯報名,櫃檯會隨機排個教練而不一定會是李淑惠教練。
聯絡方式:
李淑惠 教練
手機:0930-814523
MSN:cwlee23@hotmail.com
部落格:http://www.wretch.cc/blog/car112
大眾駕訓班網址:http://www.dajun.com.tw/
2011年7月11日 星期一
Google App Engine 搭配 Struts 2
最近開始研究 Google App Engine 的 Java 版本,就想試試看 Struts 2 能不能順利整合。
開發環境:
1.Eclipse IDE for Java EE Developers Windows 32 Bit。
2.Google Plugin for Eclipse 3.7
3.Struts 2.2.3
Eclipse + Google Plugin for Eclipse 安裝方法請參考 Google 的說明:說明
P.S. 我有檢查過 Eclipse 的版本,推測應該是 3.7 版,所以 Google Plugin for Eclipse 的連結也改成3.7。
現在開始整合 Struts 2,如下步驟:
開發環境:
1.Eclipse IDE for Java EE Developers Windows 32 Bit。
2.Google Plugin for Eclipse 3.7
3.Struts 2.2.3
Eclipse + Google Plugin for Eclipse 安裝方法請參考 Google 的說明:說明
P.S. 我有檢查過 Eclipse 的版本,推測應該是 3.7 版,所以 Google Plugin for Eclipse 的連結也改成3.7。
現在開始整合 Struts 2,如下步驟:
- 將 Struts 2 的壓縮檔解壓,然後在 lib 資料夾內找到以下 jar 檔並複製:
P.S. 版本會因你使用的 Struts 2 版本不同而有所差異- commons-fileupload-1.2.2.jar
- commons-io-2.0.1.jar
- commons-lang-2.5.jar
- commons-logging-1.1.1.jar
- javassist-3.11.0.GA.jar
- ognl-3.0.1.jar
- struts2-core-2.2.3.jar
- xwork-core-2.2.3.jar
- 將 jar 檔貼到專案的 war/WEB-INF/lib/ 底下,如圖:
- 設定專案的 Properties,選擇 Java Build Path > Libraries > Add JARs > 展開該專案並找到步驟二貼上的 jar 檔 > 選取步驟二貼上的 jar 檔並按下 OK,如圖:
- 設定專案的 Properties,展開 Google > 選取 Web Application > Add > 選取所有 jar 檔並按下 OK,如圖:
- 在專案的 war/ 底下新增 index.jsp 與 HelloWorld.jsp 兩個檔案:
index.jsp:<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" session="false" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Basic Struts 2 Application - Welcome</title>
</head>
<body>
<h1>Welcome To Struts 2!</h1>
<p><a href="<s:url action='hello'/>">Hello World</a></p>
</body>
</html>
HelloWorld.jsp:<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" session="false" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Hello World!</title>
</head>
<body>
<h2><s:property value="messageStore.message" /></h2>
</body>
</html> - 在專案 src/sample/ 目錄底下新增一個 InitListener.java:
P.S. sample 是我設定的 Package,此處請依照你設定的 Package 去更改。
P.S. 若不是使用 GAE 時是無需加上這個 Listener 的,至於為何要加上這個 Listener 呢?請看:詳細說明。package sample;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import ognl.OgnlRuntime;
public class InitListener implements ServletContextListener,
HttpSessionListener, HttpSessionAttributeListener {
public InitListener() {
}
public void contextInitialized(ServletContextEvent sce) {
OgnlRuntime.setSecurityManager(null);
}
public void contextDestroyed(ServletContextEvent arg0) {
}
public void sessionCreated(HttpSessionEvent arg0) {
}
public void sessionDestroyed(HttpSessionEvent arg0) {
}
public void attributeAdded(HttpSessionBindingEvent arg0) {
}
public void attributeRemoved(HttpSessionBindingEvent arg0) {
}
public void attributeReplaced(HttpSessionBindingEvent arg0) {
}
} - 找到專案 war/WEB-INF/ 底下的 web.xml,將內容更改如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>Demo</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<listener>
<listener-class>sample.InitListener</listener-class>
</listener>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app> - 在專案 src/sample/ 目錄底下新增 HelloWorldAction.java 與 MessageStore.java:
P.S. 網路上抄來的範例,忘了出處日後再補上。
HelloWorldAction.java:package sample;
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorldAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private MessageStore messageStore;
public String execute() throws Exception {
messageStore = new MessageStore() ;
return SUCCESS;
}
public MessageStore getMessageStore() {
return messageStore;
}
public void setMessageStore(MessageStore messageStore) {
this.messageStore = messageStore;
}
}
MessageStore.java:package sample;
public class MessageStore {
private String message;
public MessageStore() {
setMessage("Hello Struts User");
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
} - 在專案 src/ 目錄底下新增 struts.xml:
struts.xml:<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml"></include>
<package name="test" extends="struts-default">
<action name="index">
<result>/index.jsp</result>
</action>
<action name="hello" class="sample.HelloWorldAction" method="execute">
<result name="success">/HelloWorld.jsp</result>
</action>
</package>
</struts> - 執行專案後在瀏覽器輸入網址可看到結果如下:
2010年9月7日 星期二
2010年9月2日 星期四
Java 刪除檔案或目錄
因為工作需求,在 Ubuntu 環境中每天要先下載整個目錄後,
再用 Java 程式去處理目錄內的檔案。
原本的構想是寫個 bash shell 先刪除舊目錄,然後下載整個目錄,
再呼叫 Java 程式,但老闆原本以為我會全程用 Java 解決,
既然是領人家薪水,當然要照他希望去做,寫個程式處理。
刪除目錄並不是直接刪除就可以了事,必須要先確認該目錄為空,
也就是該目錄底下沒有其他檔案或目錄才行。
因此就用遞迴來做個刪檔的動作,程式碼如下:
再用 Java 程式去處理目錄內的檔案。
原本的構想是寫個 bash shell 先刪除舊目錄,然後下載整個目錄,
再呼叫 Java 程式,但老闆原本以為我會全程用 Java 解決,
既然是領人家薪水,當然要照他希望去做,寫個程式處理。
刪除目錄並不是直接刪除就可以了事,必須要先確認該目錄為空,
也就是該目錄底下沒有其他檔案或目錄才行。
因此就用遞迴來做個刪檔的動作,程式碼如下:
private void deleteDir(File dir) throws IOException {
if (dir.exists()) { // 判斷檔案是否存在。
if (dir.isDirectory()) { // 判斷是否為目錄。
int i = 0;
// 取得當前目錄內的檔案與目錄的 File Array。
File[] subDir = dir.listFiles();
// 取得當前目錄內的檔案與目錄總數。
int fileCount = subDir.length;
while (fileCount > i) {
deleteDir(subDir[i]);
i++;
}
dir.delete();
} else { // 不是目錄就直接刪除。
dir.delete();
}
}
}
2010年8月25日 星期三
訂閱:
意見 (Atom)