原创文章,转载请注明出处:http://www.aj2ee.com
最近幾天,下了班的業餘時間,都在著手開發自己的博客系統---tblog。雖名字和界面有COPY開源z-blog之嫌,但對于我這樣沒有什麽設計經驗的碼農,還是先用著吧。
開發這個博客系統的想法最早是剛來深圳不久,一個大二的學弟兼老鄉說,他們的寒假作業就是做一個博客系統。當時自己也想練練手,就開始著手寫自己的博客系統。在深圳羅湖的工作,還是允許我開那么點小差,來做自己“份內”的事。(請原諒我用繁體字,因為在羅湖工作的公司是港資企業,全都是繁體的,對繁體字有點習慣了,也挺喜歡。)
在XXX(深圳)有限公司工作的那段時間里,對公司的項目開發,代碼,還有許多的意見,比如臃腫的配置文件、代碼的可讀性(注釋)差等。弄得和主管關係竟不是那么的理想,或許是沒有溝通好吧。
在深圳羅湖工作時,把博客系統的架構、底層基類完成了。
架構用了我們JAVA最流行的三個框架struts2+hibernate3+spring3。springmvc用的人越來越多,我也不敢肯定將來會不會取代struts2,但運用spring核心IOC,AOP應該會堅持很長一段時間,而hibernate3雖好用,但對于一些複雜的數據庫查詢還是有些力不從心;
底層基類是指數據庫操作DAO基類,寫了一些基于hibernate數據庫操作的基本方法--增刪改查:
IDAO接口(部份):
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
| /** * 對數據庫操作的一些方法的定義 * @author Front.Tang [ Front.Tang@qq.com ] * @since 2012/1/5 上午 10:27:54 */ public interface IDAO<T,PK extends Serializable>{ /** * 为父类HibernateDaoSupport注入SessionFactory * @param sessionFactory */ @Resource(name = "sessionFactory") public void setSuperSessionFactory(SessionFactory sessionFactory); /** * 保存一個對象 * @param obj 要保存的對象 * @return 保存成功返回true,失敗返回false */ public boolean save(T obj); /** * 修改一個對象 * @param obj 要修改的對象 * @return 修改成功返回true,失敗返回false */ public boolean update(T obj); /** * 當不知道數據庫是否存在該記錄時使用 * @param obj 要修改或保存的對象 * @return 修改或保存成功返回true,失敗返回false */ public boolean alter(T obj); /** * 刪除一個對象 * @param obj 要刪除的對象 * @return 刪除成功返回true,失敗返回false */ public boolean delete(T obj); //...... } |
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
| /** * 數據庫操作方法的基類,所有DAO必須繼承該類 * @author Front.Tang [ Front.Tang@qq.com ] * @since 2012/1/5 上午 10:28:00 */ public class BaseDAO<T,PK extends Serializable> extends HibernateDaoSupport implements IDAO<T, PK> { private SessionFactory sessionFactory; private Class<T> clazz; private boolean flag = false; //狀態 public BaseDAO() { clazz = ReflectionUtils.getSuperClassGenricType(getClass()); } public BaseDAO(SessionFactory sessionFactory,Class<T> Clazz) { super.setSessionFactory(sessionFactory); this.clazz = clazz; } @Override @Autowired public void setSuperSessionFactory(SessionFactory sessionFactory) { super.setSessionFactory(sessionFactory); } @Override public boolean delete(T obj) { try{ flag = false; getHibernateTemplate().delete(obj); flag = true; }catch(Exception e ) { flag = false; e.printStackTrace(); } return flag; } ...... } |
01 02 03 04 05 06 07 08 09 10 11 12 |
| /** * Service基類接口,定義一些通用的service方法 * @author Front.Tang [ Front.Tang@qq.com ] * @since 2012/1/5 上午 10:57:45 */ public interface IService<T,PK extends Serializable> /** * Service基類,所有Service都要繼承該類 * @author Front.Tang [ Front.Tang@qq.com ] * @since 2012/1/5 上午 10:59:43 */ public abstract class BaseService<T,PK extends Serializable> implements IService<T, PK> |
除了這些基類,還是一些分頁處理,字符串處理,時間對象處理等utils工具類。
由于在羅湖的工作出了點問題,博客系統也暫停了腳步。如今在新的工作環境中,每天都過得充實,早上起來趕公交上班,下班又是坐公交回到住處,兩點一線的生活,有點機械,但還是充實。
下班了沒事干就撿起自己的博客系統,繼續完善。
前臺頁面數據的加載,我都是用java的自定義標籤taglib,就像struts 里的 html標籤。從末使用過,但認為還是挺好用的。之前前臺頁面數據的加載用的都是struts2的action標籤,而使用自定義標籤來加載數據,是借用一個開源電子商務系統里的。
最近看了urlrewriterfilter的偽靜態的處理,在自己的博客系統也加上了偽靜態---將原來/xxx.jsp?id=12 轉變成/xxx/12.html 類似這個樣子。
只是為了隱藏系統的實現,也更好的讓搜索引擎收入。
幾個簡單的配置就可以運用urlrewriterfilter:
給項目導入urlrewrite-3.2.0.jar,將以下代碼在web.xml里配置:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 |
| <filter> <filter-name>UrlRewriteFilter</filter-name> <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> <init-param> <param-name>logLevel</param-name> <param-value>WARN</param-value> </init-param> </filter> <filter-mapping> <filter-name>UrlRewriteFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> </filter-mapping> |
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
| <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN" "http://tuckey.org/res/dtds/urlrewrite3.2.dtd"> <!-- Configuration file for UrlRewriteFilter http://tuckey.org/urlrewrite/ --> <urlrewrite> <rule> <from>^/article/(\d+)\.html$</from> <to>/content.jsp?id=$1</to> </rule> <rule> <from>^/index/(\d+)\.html$</from> <to>/index.jsp?page=$1</to> </rule> <rule> <from>^/index/(\d+)/(\d+)\.html$</from> <to>/index.jsp?cata=$1&page=$2</to> </rule> ...... </urlrewrite> |
說了這么多,來看看博客的前臺效果圖吧,別笑話哈。