博客与生活

原创文章,转载请注明出处: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);
    //...... 
IDAO接口實現類 BaseDAO (部份):
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; 
    } 
    ...... 
還有就是service層的基類,調用dao層的方法。
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> 
後續開發中,所有dao類都要繼承BaseDAO,所有service層類都要繼承BaseService。
除了這些基類,還是一些分頁處理,字符串處理,時間對象處理等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> 
再寫一個UrlRewrite的配置文件:urlrewrite.xml即可。urlrewrite.xml主要是配置你的url的映射規則,例如:
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&amp;page=$2</to> 
    </rule> 
    ...... 
</urlrewrite> 
而規則都是通過正則表達式來匹配的。
說了這么多,來看看博客的前臺效果圖吧,別笑話哈。

 

 

 

 

 

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值