2008年11月23日
#
Java飯管開張了,大家來恭喜.
最流行菜品:麻辣三絲(Struts絲,Spring絲,Hibernate絲)
廚師:Java版
小二:Java版
美女:小二,來盆你們店招牌菜。。。。。
小二: 來了,麻辣三絲到了,您慢慢品嘗.....(嘰嘰咕咕一大堆)
美女:煩不煩啊,我的人啊,那來這多蒼蠅?????????/@@@@@@@@@@@@@@@(知趣的走開)
JDBC一號:小二,餓死了,快隨便來一盆填肚子的
小二:(嘿嘿,又來了個冤大頭)麻辣三絲來了.....
.
.
.
終于到晚上12:59 59
收工,累死了
~~~~~~~~~~~~~~~~~~~~
店小,只請了一個小二,要求,服務所有顧客:
小二實現了單例,完成要求
單態模式兩種表現方式:單態單例,單態多例
模式---生活的一種提煉,取之于生活,還之于生活
僅以個人之理解,解析一下,多多交流
很久以來,一直是認為,知識是沒有壁壘的,方法是通用的。
比如四人幫的24種設計模式,源自己于建筑模式的靈感,應用于計算機。反之,這幾種模式同樣也適應于其它行業.
SSO,英文名
Single Sing On 單點登錄。這東東為什么會出現,基于以下幾種場景:一個公司,有多套系統,由多個機構開發,有各自獨立的權限系統。本來很久以來都運行的好好的,一段時間后,由于某個人能力特強,身兼數職,麻煩來了,如果是兩三套系統,就有兩三套密碼,要是更多,不想了,取個折中的方案,全部設一個密碼,解決密碼問題,那帳號呢,那個可能能隨便改,現在為了方便,強行統一了帳號,要一套一套的系統去修改用戶帳號,可不是一件簡單的事。
既然這么麻煩,有沒有一種解決方案呢,歸根結底,用戶帳號和密碼是給誰認----計算機系統,這就容易了,我把各套系統的帳號統一起來,建立一個新的機制(這個就叫SSO-server吧),讓用戶從一個系統登錄以后,就在這個新系統里面登錄一個Token,如果他再訪問其它系統,那個系統將帶著他的Token來請求SSO-server問他,“這個人登錄過嗎”,得到回答繼續處理.
緣起:關注SSO這東東時,正好和朋友一起去逛了下世界最大的私家圓林---圓明圓
事例現場:圓明圓售票管理處征集處理方案,暫定50景點
方案1:每個景點設個賣票點
單景點最小化開銷:檢票/售票員 一名,檢票用具一套,售票用具一套
統計:50人,50套售票用具,50套售票用品
方案2:在公園大門設一售票點,各分景點只設檢票員
前題:售單票,和組合票(SSO系統訪問可配置)
開銷:大門:售票員一名 ,售票用品一套
分景點:檢票員一名,檢票用品一套
統計:51 人,1套售票用具,50套檢票用品
你選那一個
由于這近比較有時間,翻看了幾個流行開源框架源代碼,模板生成技術他們都有用。
基本使用的有兩種 Velocity,Freemarker,兩種技術各有千秋,根據這些開源程序要么同時支持,要么都不支持,可以證明他們的客戶受眾都占有很大的份量,同時也說明了模板技術其實在本質上又是相通的,只不過用了不同的表現手法而已.
個人接觸這個技術比較晚,當然用比較新的東東(其實還有一個原因,英文不好,對于開源的東東,主要是圖解,Freemarker首頁上的一張圖道出了模板的實質),就說了Freemarker。
Freemarker 由4部分組成:模板(Template),數據源(實現樹形結構的任何數據:xml,javaBean,數據庫...),模板處理器(Freemarker API),輸出(流)。

通
俗一點說,如果在工廠做過流水線或看過,一看就清楚了,拿一個塑膠玩具廠來說,Template:模具,Java
Objects:原料,處理器:熱成型機,Output:玩具.當我們需要不同的玩具,
我們要做的是定制不同的模具,如果我們要做不同顏色的玩具,我們要做的就是更新原料的種類,那么前面的定好了,接下來的就是把原料倒進去,在后面收成品就
可以了
Freemaker寫的Bean生成器,主要組成:javabean.ftl,BeanMetaData(原數據定義),PropertyMetaData(屬性定義),BeanBuilder構建器用于生成源代碼(.java)文件和生成(.class)文件,簡易實現了一個由給定字符串生成JavaBean的實現
javaBean.ftl
package ${packageName};
/**
*${comment}
*/
public class ${simpleName?cap_first} implements java.io.Serializable{
private static final long serialVersionUID=${serialVersionUID};
public ${simpleName?cap_first}(){}
<#list fields as field>
<#assign filedType=field.type/>
<#assign filedName=field.name/>
<#assign filedComment=field.comment/>
/**
*${filedComment}
*/
private ${filedType} ${filedName};
/**
* @param ${filedType}
*/
public void set${filedName?cap_first}(${filedType} o)
{
this.${filedName}=o;
}
/**
* @return ${filedType}
*/
public ${filedType} get${filedName?cap_first}()
{
return this.${filedName};
}
</#list>
}



源代碼,歡迎交流
源代碼:歡迎交流
今天在做urlrewritefilter和struts2整合,遇到一個奇怪的問題:url已經重寫之后就沒反應了,提示找不到Action,但是換其它的:如html,jsp就可以.

沒辦法,開啟百度來找,對于遇到問題,我一向把自己看到很笨,個人認為,我遇到的問題,一定會有前人遇到。
在蜘蛛網爬上好久,終于找到了解決辦法,感謝各位網友的解答.
原來問題去在filter的響應方式上,servelt2.4給filter定義了4種過濾方式,用"<dispatcher>" 來標識,REQUEST,FORWARD,INCLUDE,ERROR,默認是REQUEST
urlrewrite默認重寫URL之后用的是Forward方式流向下一個Filter。
這樣就出現在上述問題,我要的你不給我,我當然不處理啊;
解決方案:

解決之后,又仔細想了一下,這外標簽為什么要在2.4加入,個人理解:可以提高過濾器的效率,可以讓filter只處理他需要關心的Servlet,如例:<dispatcher>FORWARD</dispatcher>這樣標識,這個過濾器就只處理通過forward傳出來的請求,其它 的一律不管