前一段時間有好幾個問題,提到怎么判斷session是否過期。
接觸jspo已經很久了,但是還真沒有想過這個問題,當時也就沒有找到一個滿意的答案給人家。
當時,我提到一個方法,就是實現HttpSessionListener接口,然后在sessionDestroyed()方法中執行一些操作,表示session要過期了,因為這個方法是session.invalidate()之前監聽器調用的方法。這個判斷的方法顯然不能讓人滿意。
我當時問了些人,但是也沒有得到一個準確的答案。
正好偶然間看到,request.getSeesion(boolean)方法,一下子讓我恍然大悟。這個方法里面傳了一個boolean值,這個值如果是true,那么如果當前的request的session不可用,那么就創建新的會話,如果存在就返回當前的會話。如果參數是false,那么在request的當前會話不存在的時候就返回null。
這樣我們就可以很容易的聯想到這個所謂的request的當前會話是否存在和session過期的聯系,所以我們就可以“近似地”認為session不存在就是session過期了,那么我們就可以很容易地判斷session是否過期了。方法如下:
if(request.getSession(false)==null)
System.out.println("Session has been invalidated!");
else
System.out.println("Session is active!");
可能大家注意到我上面有一個“近似地”字眼,也就是說存在特別情況。
這個特殊情況就是第一次請求還沒有創建會話的時候,那么用這個方法返回的仍然是null,原因我想大家應該是顯然的。
以上是個人拙見,希望大家指正。
原文:http://topic.csdn.net/t/20050225/08/3804877.html
摘要: <books>
<!--This is a test for dom4j, holen, 2004.9.11-->
<book show="no">
<title>Dom4j Tutorials</title>
&nbs...
閱讀全文
今天由于項目需要,需將Mysql數據庫遷移到Oracle數據庫
準備工具
1.連接Mysql 的jdbc 驅動 mysql-connector-java-5.0.4-bin.jar
2.Oracle公司開發的 SQL Developer 1.2
下面就是配置SQL Developer 1.2
配置環境
選擇Tools-Preferences -Database-Third Party JDBC Driver 點擊 Add Entry 添加Mysql的jdbc 驅動。
配置Mysql 和 Oracle 的連接
點擊Connection 右鍵選擇 New Connection 分別建立Mysql 和Oracle連接。
建立好連接后,你就可以查看你得數據庫了。
配置Repository
選擇 Migration -> Repository Management -> Create Repository 創建 Repository。
兩種遷移數據方式:
1. Capture the source database or tables
2. Convert the captured database or tables
3. Generate DDL for the new Oracle schema objects
4. Run the generated DDL script to create the new user and objects
5. Copy any data from the source database to the new database,select Migration->Migration Data select a converted model.
快速遷移:
選擇你要遷移的表或數據庫,選擇Migration -> Quick Migrate
Powered by Zoundry Raven
在用ssh開發web應用時,需要對生成的各個類文件進行組織,下面就對一個可行的目錄方案進行介紹:
譬如應用中有一個用戶管理模塊,則在公共包下建立一個user包,如該公共包可以為com.simon.oa,
在user包下包括如下子包
1、controler包
該包放置各種struts的action。
2、dao包
該包放置各類dao(data access object),也就是放置對數據庫訪問的實現類,在用myeclipse中的“Hibernate Reverse Engineering”進行反向操作時在某一個目錄中就會生成對應某個表的DAO,生成后可將該DAO拖到dao包中。在某些應用中將DAO作為接口,在該接口中包括所有對數據庫的操作方法,然后在dao包建立一個hibernate包,在hibernate包中放置對DAO接口的實現,譬如:UserDAO接口有一個實現類為UserDaoImpl,將該類放置到hibernate包中,實際的開發傾向于后一種方式,因為對這個DAO接口可以實現spring的IoC操作。(不知道myeclipse對此是怎么考慮的,這個問題讓我糾纏了很久,誤將DAO理解成一個能夠進行實際操作的類,而不是一個接口,以后開發要注意)
3、model包
該包中放置hibernate反向工程生成的bean和該bean對應的.hbm.xml文件。
4、service包
該包放置業務操作類,譬如用戶服務類,一般情況將該用戶操作類提取一個接口,然后在service包下生成一個impl包,在impl包中才放置用戶操作接口的實現類。該用戶接口實現類中調用DAO接口對數據庫進行操作,而調用該實現類的方法在struts的action中。
5、vo包(value object)
vo包中的中包括struts中使用的POJO及actionform等信息。
VO: Value Object
DTO: Data Transfer Object
個人理解VO和DTO是類似的東西,原則上VO和DTO只有Public Fields,主要用于進程之間數據傳遞的問題,VO和DTO不會傳遞到表示層,在業務層就會被吸收。但看到很多人在建立VO和DTO時,也含有Setter,Getter屬性和一些其它的輔助方法,這也無可厚非,我自己也不能確定這對不對。