亚洲高清无在码在线电影不卡,亚洲制服丝袜中文字幕,亚洲精品美女久久久久99http://www.tkk7.com/tw-ddm/category/12284.html<div id="ddm_subTitle"> <h2 class="catchline"> 哪怕沒有辦法一定有說法,<br/> 就算沒有鴿子一定有烏鴉,<br/> 固執(zhí)無罪&nbsp;夢想有價,<br/> 讓他們驚訝. </h2> </div>zh-cnTue, 13 Mar 2007 12:30:57 GMTTue, 13 Mar 2007 12:30:57 GMT60精通Struts筆記--04.01http://www.tkk7.com/tw-ddm/articles/61318.html大大毛大大毛Wed, 02 Aug 2006 03:42:00 GMThttp://www.tkk7.com/tw-ddm/articles/61318.htmlhttp://www.tkk7.com/tw-ddm/comments/61318.htmlhttp://www.tkk7.com/tw-ddm/articles/61318.html#Feedback0http://www.tkk7.com/tw-ddm/comments/commentRss/61318.htmlhttp://www.tkk7.com/tw-ddm/services/trackbacks/61318.html閱讀全文

大大毛 2006-08-02 11:42 發(fā)表評論
]]>
精通Struts筆記--03.02http://www.tkk7.com/tw-ddm/articles/59905.html大大毛大大毛Mon, 24 Jul 2006 16:17:00 GMThttp://www.tkk7.com/tw-ddm/articles/59905.htmlhttp://www.tkk7.com/tw-ddm/comments/59905.htmlhttp://www.tkk7.com/tw-ddm/articles/59905.html#Feedback0http://www.tkk7.com/tw-ddm/comments/commentRss/59905.htmlhttp://www.tkk7.com/tw-ddm/services/trackbacks/59905.html


3.Struts的分析與設(shè)計

???應(yīng)用:
??????電子通訊薄addressbook

???這一章的重點(diǎn)在于引導(dǎo)進(jìn)入Struts應(yīng)用的 分析與設(shè)計, 要體現(xiàn)軟件開發(fā)流程

分析需求:
???該應(yīng)用實(shí)現(xiàn)一個較簡單的通訊簿
??????.登錄
??????.添加好友聯(lián)系方式
??????.查詢
??????.根據(jù)要求查詢
??????.顯示全部信息
??????.注銷
???在分析中可以發(fā)現(xiàn),登錄是整個應(yīng)用的入口,其它的模塊都依賴于此,因此貫穿整個應(yīng)用應(yīng)該有一個已登錄檢查的要求

數(shù)據(jù)庫設(shè)計:
???根據(jù)需求,需要兩張表:
???1.address
??????該應(yīng)用的主體數(shù)據(jù)表,里邊存放應(yīng)用中所需的聯(lián)系方式信息
??????ID(int,key) 記錄ID,僅作主鍵使用
??????name(varchar,not null) 聯(lián)系人的姓名
??????telephone(varchar)聯(lián)系人的電話
??????address(varchar)聯(lián)系人的地址
???2.userInfo
??????該表保存登錄用戶信息,用于登錄檢驗(yàn)
??????例程中改用XML數(shù)據(jù)文件的方式加以替代

用戶界面設(shè)計:

???對應(yīng)于需求可設(shè)計:
??????登錄界面
??????菜單界面
??????添加界面
?????????數(shù)據(jù)的更改是一項(xiàng)權(quán)重的動作,因此提供一個添加結(jié)果界面
??????查詢條件界面
??????查詢結(jié)果界面
??????對于注銷需求,其對應(yīng)于一個簡單動作,可以不提供界面

詳細(xì)設(shè)計:
???登錄
??????數(shù)據(jù)項(xiàng)userName,password
??????視圖(login.jsp)
?????????userName,password的輸入;
?????????userName不能為空;
??????控制器
?????????成功:
????????????將userName存入session, forward到menu.jsp
?????????失敗:
????????????login.jsp
??????模型
?????????連接數(shù)據(jù)源(此處是XML數(shù)據(jù)文件);
?????????數(shù)據(jù)的邏輯有效性檢查(userName,password必須完全一致)

???添加
??????數(shù)據(jù)項(xiàng)name,telephone,address
??????視圖(insert.jsp)
?????????name,telephone,address的輸入;
?????????name,telephone不能為空;
??????控制器
?????????成功:
????????????insertOk.jsp
?????????失敗:
????????????insert.jsp
??????模型
?????????insert條目

???查詢
??????數(shù)據(jù)項(xiàng)name,telephone,address
??????視圖(search.jsp)
?????????name,telephone,address的輸入;
?????????name,telephone,address不能同時為空;
??????控制器
?????????display.jsp
??????模型
?????????select條目

???注銷
??????控制器
?????????login.jsp
??????模型
?????????銷毀session中的userName

???登錄檢查
??????由于需要在JSP頁面被載入前調(diào)用, 以標(biāo)簽提供
??????檢查session("userName")對象是否為空,否則forward到login.jsp



大大毛 2006-07-25 00:17 發(fā)表評論
]]>
Struts國際化的快速演示http://www.tkk7.com/tw-ddm/articles/59899.html大大毛大大毛Mon, 24 Jul 2006 14:59:00 GMThttp://www.tkk7.com/tw-ddm/articles/59899.htmlhttp://www.tkk7.com/tw-ddm/comments/59899.htmlhttp://www.tkk7.com/tw-ddm/articles/59899.html#Feedback0http://www.tkk7.com/tw-ddm/comments/commentRss/59899.htmlhttp://www.tkk7.com/tw-ddm/services/trackbacks/59899.html ???前言:
??????雖說剛看"精通Struts"幾章,已經(jīng)迫不及待的想試試它的"國際化"效果了.測試環(huán)境:JDK1.4 + Tomcat5 +?中文XP

??????先用的方法是網(wǎng)絡(luò)上流行的方法:
??????在IE/Internet選項(xiàng)/語言 中刪除掉中文,選擇英文,如此類推,則可以看到頁面的國際化效果.
??????但是這種方法有缺點(diǎn):
?????????1.很麻煩;
?????????2.非常的不靈,剛開始俺整了幾回都偶爾出效果了,但是玩這招多了,Tomcat5.0.29就再也不理我了,任我怎么變,它依舊顯示中文.
??????基于第2點(diǎn)那是非解決不可啊

???
分析:
??????按"精通Struts"里面對于Struts國際化的解釋,應(yīng)該是頁面會從Session(如果有的話)中取出Locale對象,只有當(dāng)該對象為空時才會將request中的Locale對象放入session中去,而資源文件的選擇是依據(jù)session中的Locale對象的,如此這般,就可以拿出一個簡單點(diǎn)演示國際化效果的方法來:
?????????提供一個JSP讓用戶選擇語種,如英文,中文.提交到Action時 來個相應(yīng)處理
???????? if (action.equalsIgnoreCase( " english " ))?{
????????????request.getSession().setAttribute(Globals.LOCALE_KEY,
new ?Locale( " en " , ""
));
????????}
????????
if (action.equalsIgnoreCase( " chinese "
))?{
????????????request.getSession().setAttribute(Globals.LOCALE_KEY,
new ?Locale( " zh " , " CN "
));
????????}
?????????這樣做應(yīng)該是符合Struts的要求的,結(jié)果測試失敗.

???
解決辦法:
??????事實(shí)證明,并不是理解Struts有誤, 問題只是出在容器的處理方法上,還是按上面的方法,搭配Tomcat5.5測試成功,現(xiàn)在要想看"國際化"的效果就輕松多了,只要在應(yīng)用的主菜單上加入語言選項(xiàng),以后的各種跳轉(zhuǎn)都一切OK.

???
還存在的問題:
??????經(jīng)測試證明,這種方法能夠達(dá)到根據(jù)菜單自動切換語種顯示的目的,但是也注意到了一點(diǎn),就是 request.getLocale(); 方法得到的始終都是本機(jī)IE的編碼,這與session中存放的那個Locale是不一致的,當(dāng)然也是利用了Struts需要先判斷session中的Locale對象是否為空才進(jìn)行改變這一點(diǎn).不過這也帶來這種演示方法的局限性:
??????1.有些Struts應(yīng)用是允許客戶端在應(yīng)用的過程中改變Locale的,因此為此覆蓋了RequestProccessor.proccessLocale()方法,支持動態(tài)的更新.這樣會造成此種演示方法的可恥失敗;
??????2.必須依賴于session,
??????3.如果程序中存在有手工從資源文件中取資源的情況(如我提到過的標(biāo)簽中的使用),那么
?
???getMessage(?(Locale)session.getAttribute(Globals.LOCALE_KEY)?, key )
??????與
???getMessage( request.getLocale() ,?key?)
??????的效果是會完全不同的.

??
?有關(guān)Tomcat5.5的一點(diǎn)提示:
??????網(wǎng)上有說
Tomcat5.5 ?是不能與 JDK1.4 搭配使用的,只能用 JDK5 ,這是錯誤的.
??????Tomcat5.5如果搭配 JDK1.4 使用的話,需要注意一點(diǎn)的是:
?????????1.不能使用那個for windows 的EXE安裝文件,需要下載ZIP文件進(jìn)行安裝;
?????????2.除了必需下載的那個 apache-tomcat-5.5.x.zip 主體文件外,使用 JDK1.4 還必須下載那個 apache-tomcat-5.5.x-compat.zip 文件才行,下載回來后解壓到同一個目錄中即可直接使用.
?????????3.手工添加管理員
????????????向Tomcat\conf\tomcat-users.xml中加入
???????????????<role rolename="admin" />
???????????????<role rolename="manager" />
???????????????<user username="admin" password="你的密碼" roles="admin,manager" />

??????另外Tomcat5.5與Tomcat5.0還有一個顯著的區(qū)別就是在數(shù)據(jù)源的使用上
?????????Tomcat5.0是用的DBCP數(shù)據(jù)源的,因此common/lib下有DBCP需要用到的包;
?????????而Tomcat5.5則不同,如果想要使用DBCP數(shù)據(jù)源的話,需要手工向common/lib下加下DBCP所需的包:
????????????commons-dbcp-1.2.1.jar;
????????????commons-collections-3.1.jar;
????????????commons-pool-1.2.jar;


大大毛 2006-07-24 22:59 發(fā)表評論
]]>
Struts中action之間控制權(quán)轉(zhuǎn)移的問題http://www.tkk7.com/tw-ddm/articles/59856.html大大毛大大毛Mon, 24 Jul 2006 09:26:00 GMThttp://www.tkk7.com/tw-ddm/articles/59856.htmlhttp://www.tkk7.com/tw-ddm/comments/59856.htmlhttp://www.tkk7.com/tw-ddm/articles/59856.html#Feedback0http://www.tkk7.com/tw-ddm/comments/commentRss/59856.htmlhttp://www.tkk7.com/tw-ddm/services/trackbacks/59856.html ????起因:
??????在學(xué)習(xí)那個addressbook例程中遇到這個問題的,當(dāng)時我改變了例程的流程, 不讓menu.jsp直接使用<a link>來跳,而是配合JS提交action到menuAction,而對于那個display和displayAll兩個模塊,我當(dāng)時也想改改,因?yàn)榘磿系睦?是要把"生成SQL并壓入到session中"分放到兩處進(jìn)行處理的,這樣的感覺很不爽,如果需要發(fā)生什么變化的話,需要到多個地方去對應(yīng)著更改,因此我的作法是在menuAction 中壓入一個displayAll = 0 or 1,再forward,這樣在 searchAction 中 sql = "select * from address"; if(displayAll == 1) { ...;sql += where;}.
??????當(dāng)時遇到了麻煩,我將displayall配成 "search.do" ;運(yùn)行結(jié)果有些讓人意外,searchAction并沒有得到控制權(quán),而是跳到了它的input頁面 search.jsp.現(xiàn)在問題已經(jīng)解決,下面就詳細(xì)說明一下原因及解決方法:

???問題的分析:
??????之所以從menuAction --> searchAction時會跳到search.jsp頁面,是因?yàn)樵谵D(zhuǎn)移到 searchAction 時產(chǎn)生了 檢驗(yàn)錯誤, Struts根據(jù)Action的配置參數(shù),轉(zhuǎn)向到Action.input所指定的JSP文件,從而出現(xiàn)上面的一幕.

???解決方法:
??????方法1:
?????????步驟一:???查看Action的屬性,可以看到有一個 "validate"屬性,是個boolean屬性,缺省為true,它表明Action是否需要調(diào)用ActionForm.validate();將其設(shè)為false;或者去掉ActionForm中的校驗(yàn).
?????????步驟二:???既然去掉了視圖層的校驗(yàn),那就有必要在控制器中實(shí)現(xiàn)這個輸入值校驗(yàn)的功能了.
??????方法2(取巧的辦法):
?????????利用一個比較特殊的東東,記得我在? 筆記02 中提到過的那個<html:cancel />標(biāo)簽,現(xiàn)在就轉(zhuǎn)轉(zhuǎn)彎,用它了,來個

request.setAttribute(Globals.CANCEL_KEY, "" );

?????????只要給它一個對象,Struts控制器就會認(rèn)為是按下了Cancel,這樣的話也可以繞過ActionForm中的validate(),而且從正常的Input JSP頁面提交的話,ActionForm.validate()方法還是可以產(chǎn)生作用的.

???后記:
??????Myeclipse里面配置Action時能夠設(shè)置的屬性并不多,也不包含這個validate屬性,需要自己手工處理struts-config.xml
??????如果技術(shù)上達(dá)不到,暫時取取巧還是可以的,隨著技術(shù)的深入,解決問題的方法也會越來越中規(guī)中矩



大大毛 2006-07-24 17:26 發(fā)表評論
]]>
Struts中文問題的暫時解決http://www.tkk7.com/tw-ddm/articles/59728.html大大毛大大毛Sun, 23 Jul 2006 17:15:00 GMThttp://www.tkk7.com/tw-ddm/articles/59728.htmlhttp://www.tkk7.com/tw-ddm/comments/59728.htmlhttp://www.tkk7.com/tw-ddm/articles/59728.html#Feedback0http://www.tkk7.com/tw-ddm/comments/commentRss/59728.htmlhttp://www.tkk7.com/tw-ddm/services/trackbacks/59728.html ???跟大家一樣,我在學(xué)習(xí)Struts的過程中,也不可避免的遇到這個問題,綜合網(wǎng)上說的再加上實(shí)踐,暫時有了解決方案(說它暫時是不知道各種情況下都能適用),反正以后遇到例外再改吧.

???解決問題的核心就是要統(tǒng)一使用Unicode編碼(UTF-8)需要從以下幾個方面著手
??????1.JSP頁面編碼
?????????這個較容易搞定,只需要指定頁面的contentType="text/html;charset=UTF-8"即可
??????2.資源文件編碼
?????????這個是針對國際化來講的,如果只有E文的資源,那是不可能出問題的,如果有其它語種的資源文件,需要進(jìn)行編碼,如果手工做的話需要用到 JDK/lib 目錄下的 native2ascii.exe 工具進(jìn)行命令行的操作,Eclipse下省心的方法也有,就是去下個插件
JInto ,讓"國際化"的大師們來做這些民工活好了,這個插件還可以對照著多語種進(jìn)行資源文件的編輯,easy啊.
??????3.頁面輸入編碼
?????????說具體點(diǎn)就是從JSP頁面form提交上去的中文數(shù)據(jù),回顯及插入到數(shù)據(jù)庫中都成了亂碼,這個我在網(wǎng)上查了,有說用Fileter的,不過看著就挺麻煩啊,有個挺簡單的解決方法就是用自己的ActionServlet替換缺省的那個,具體操作是:
?????????(1)定義一個類,讓它extends ActionServlet ,覆蓋process方法

protected ? void ?process(HttpServletRequest?request,?HttpServletResponse?response)? throws ?java.io.IOException,?javax.servlet.ServletException?{

???????request.setCharacterEncoding(
" utf-8 "
);???
???????
super
.process(request,?response);??
????}

?????????(2)修改web.xml文件中的<servlet-class>元素,把這個標(biāo)簽的內(nèi)容指向自己的類;

???到此問題解決,不過我在使用中也注意到一個有趣的現(xiàn)象,運(yùn)行后生成的Web頁面有一個特點(diǎn),就是從IE的 "查看/編碼方式" 上可以看到IE自動使用的是UTF-8編碼,而你如果換成 "簡體中文GB2312"的話得到的將是一個亂碼頁面



大大毛 2006-07-24 01:15 發(fā)表評論
]]>
DBCP數(shù)據(jù)源的配置問題(Myeclipse)http://www.tkk7.com/tw-ddm/articles/59705.html大大毛大大毛Sun, 23 Jul 2006 13:24:00 GMThttp://www.tkk7.com/tw-ddm/articles/59705.htmlhttp://www.tkk7.com/tw-ddm/comments/59705.htmlhttp://www.tkk7.com/tw-ddm/articles/59705.html#Feedback0http://www.tkk7.com/tw-ddm/comments/commentRss/59705.htmlhttp://www.tkk7.com/tw-ddm/services/trackbacks/59705.html
???在應(yīng)用過程中想使用DBCP數(shù)據(jù)源,遇到了一些問題,配置環(huán)境:Eclipse3.1,Myeclipse4.02

???在struts-config.xml的設(shè)計視圖中可以選擇"新增數(shù)據(jù)源",Myeclipse會彈出向?qū)Т翱冢@里使用的缺省DataSource的Type是"org.apache.struts.util.GenericDataSource",而用DBCP數(shù)據(jù)源的話需要改為"org.apache.commons.dbcp.BasicDataSource",當(dāng)然了通過Myeclipse插入的Struts框架中是缺少DBCP的包的,好在Tomcat用的就是這個,因此能夠在Tomcat\common\lib目錄中找到需要的包:
???1.commons-dbcp-1.2.1.jar
???2.commons-pool-1.2.jar
???在工程的配置路徑中加入即可.也可以從apache的網(wǎng)站上
下載

???Myeclipse的向?qū)Т翱谥芯哂幸恍傩詸冢谶@里可以輸入數(shù)據(jù)源使用的Driver類名以及URL,當(dāng)然還有用戶名/密碼。
???屬性欄全部都配置完畢后,會在struts-config.xml文件中加入<data-sources>標(biāo)簽,這里面的<data-source>即是剛剛新建的數(shù)據(jù)源配置參數(shù),這里需要手工更改:

??????1.增加<data-source>標(biāo)簽的type屬性,這樣 <data-source type="org.apache.commons.dbcp.BasicDataSource">;
??????2.屬性名 driverClass 改為 dirverClassName;
??????3.屬性名 user?改為username,注意n是小寫的;
??????4.去掉屬性標(biāo)簽 loginTimeout。

???改完以后就可以啟動Tomcat看效果了


大大毛 2006-07-23 21:24 發(fā)表評論
]]>
精通Struts筆記--03.01http://www.tkk7.com/tw-ddm/articles/59701.html大大毛大大毛Sun, 23 Jul 2006 13:02:00 GMThttp://www.tkk7.com/tw-ddm/articles/59701.htmlhttp://www.tkk7.com/tw-ddm/comments/59701.htmlhttp://www.tkk7.com/tw-ddm/articles/59701.html#Feedback0http://www.tkk7.com/tw-ddm/comments/commentRss/59701.htmlhttp://www.tkk7.com/tw-ddm/services/trackbacks/59701.html ???快有一個星期沒有更新學(xué)習(xí)進(jìn)度了,不過這幾天我也沒閑著,還在啃書中....

???學(xué)習(xí)的要點(diǎn)在于實(shí)踐,這一章的書已經(jīng)看完,不過實(shí)踐過程中涉及到的技術(shù)實(shí)在是很多,很多時間都花在了網(wǎng)絡(luò)資料的查找以及本書后面幾章中相關(guān)技術(shù)的學(xué)習(xí)上.

???這一章中挖掘出來的東東:
??????1.解析XML的Digester;
??????2.數(shù)據(jù)源的配置(DBCP);
?????????2.1連接在運(yùn)用上的結(jié)構(gòu)問題;
??????3.頁面控制流程的跳轉(zhuǎn);
??????4.標(biāo)簽類的內(nèi)部設(shè)計;


???下面詳細(xì)解釋一下:
  • 解析XML的Digester:
    ??????這里我
    有一篇 有關(guān)類使用的介紹


  • DBCP數(shù)據(jù)源的配置:
    ??????介紹在
  • 這里


  • 連接在運(yùn)用上的結(jié)構(gòu)問題:
    ??????這個問題是針對例程提出來的.例程中實(shí)際用到連接的在AddressBookBean中,而有關(guān)數(shù)據(jù)源的getConnection()方法被放于DbUtil工具類中;在結(jié)構(gòu)上DbUtil.connectionToDb()和AddressBookBean的insert(),search()方法被設(shè)計為static,這樣的設(shè)計在用自定義數(shù)據(jù)庫連接時沒有什么問題,但是我現(xiàn)在的要求是使用Struts數(shù)據(jù)源,問題就出來了,DbUtil只是一個普通的用戶類,在里面我無法拿到DataSource(暫時我還沒有找到解決方法),因此我需要在結(jié)構(gòu)上做一些改動:
    ??????想法:
    ?????????1.在DbUtil上增加一個static void setConnection()接口,這樣做的好處是改動不大;
    ?????????2.在JavaBean上改動數(shù)據(jù)操作接口,讓它依賴于外部Connection傳入,這樣做的好處是看起來比較OK一些,降低一點(diǎn)邏輯層與數(shù)據(jù)層的藕合.
    ??????基于以上兩種方法的考慮,我在實(shí)踐中采用了第2種方法,同時也在后續(xù)的自定義標(biāo)簽設(shè)計中為此付出了代價


  • 頁面控制流程的跳轉(zhuǎn):
    ??????起因:我又改動了設(shè)計結(jié)構(gòu),原本由menu.jsp實(shí)現(xiàn)link,我把它改成menu.jsp --> menuAction -->forward,這樣改的好處是在struts-config.xml設(shè)計視圖中就可以很清楚地看到整個應(yīng)用的流程,嘻嘻.
    ??????方法:menu.jsp上加入一個form以及一個hidden,在<a>中調(diào)用JS實(shí)現(xiàn)action的提交,menuAction中來個findAction(action);
    ??????小插曲:對于應(yīng)用中的那個displayAll模塊,我先前是讓它的forward指向searchAction.do,在跳轉(zhuǎn)之前,壓個SQL進(jìn)session,不過我得到的卻是可恥的失敗,action之間的跳轉(zhuǎn)沒有達(dá)到目的(menuAction -> searchAction -> display.jsp),跳轉(zhuǎn)的結(jié)果成了這樣(menuAction --> search.jsp),我在forward中設(shè)置的search.do根本就沒有得到控制權(quán),而是直接跳到它的input頁面去了,多方查資料,至今尚未得到解決(已經(jīng)解決,參看這里.).
    ??????只能再改動成(menuAction --> display.jsp),由標(biāo)簽實(shí)現(xiàn)display功能,而session中sql對象的壓入也被迫放在了兩個地方(menuAction,searchAction),這個有點(diǎn)不爽,看起來還是例程中的(menu.jsp -> search.jsp + menu.jsp -> displayAllAction)設(shè)計要好一些.


  • 標(biāo)簽類的內(nèi)部設(shè)計:
    ??????ValidateSessionTag標(biāo)簽的設(shè)計沒有什么可改變的;
    ??????DisplayTag標(biāo)簽需要做相應(yīng)的改動:
    ?????????1.由于之前我在JavaBean使用Connection的結(jié)構(gòu)上做了變動,因此這里也要產(chǎn)生變化了,在DisplayTag中我需要拿到那個DataSource,
    ????????????Connection con = ((DataSource)this.pageContext.getServletContext().getAttribute(Globals.DATA_SOURCE_KEY)).getConnection();
    ????????????當(dāng)然了,標(biāo)簽上應(yīng)該增加屬性,允許設(shè)置DataSource的key
    ?????????2.既然Struts需要實(shí)現(xiàn)國際化,標(biāo)簽也應(yīng)該對應(yīng)著進(jìn)行一點(diǎn)改動,DisplayTag中要顯示一整個<table>元素,而例程中的表頭的生成顯然會產(chǎn)生問題,表頭元素應(yīng)該是從資源文件中取.
    ????????????((MessageResources)request.getAttribute(Globals.MESSAGES_KEY)).getMessage(request.getLocale(), key );
    ????????????如果考慮周全點(diǎn),同上一點(diǎn)一樣,也應(yīng)該增加屬性才行

    ???
  • 思考:
    ??????經(jīng)我改動的數(shù)據(jù)操作上還是存在麻煩,由于在標(biāo)簽類內(nèi)部引用了DataSource,這樣就遺留下隱患,從類的結(jié)構(gòu)上可以看到自定義連接的DirverManger與DataSource根本就是兩條線,這樣如果我的應(yīng)用不用這種連接池的設(shè)計,而是改用自定義連接的話,很顯然這個標(biāo)簽是需要進(jìn)行改動的,這顯然不爽于僅僅改動一個工具類.因此我的考慮是,在實(shí)現(xiàn)上應(yīng)該從更加通用的Connection接口著手.

    ???具體實(shí)現(xiàn):
    ??????自定義接口DbSource,在此接口中僅有一個方法public Connection getConnection();讓自己的數(shù)據(jù)庫工具類實(shí)現(xiàn)這個接口,這樣在眾多的應(yīng)用中,就可以把傳入的對象向DbSource接口轉(zhuǎn)化,從而成功的得到Connection對象.這樣做的好處就是讓這個DbSource接口充當(dāng)適配器的角色,從而將Connection與具體的連接方式隔離開來.
    ??????如果應(yīng)用在例程上,也可以解決從各個地方直接調(diào)用一個類的不好現(xiàn)象(接口畢竟比類通用啊)


    大大毛 2006-07-23 21:02 發(fā)表評論
    ]]>
    Digester類的簡單使用方法http://www.tkk7.com/tw-ddm/articles/59299.html大大毛大大毛Thu, 20 Jul 2006 15:57:00 GMThttp://www.tkk7.com/tw-ddm/articles/59299.htmlhttp://www.tkk7.com/tw-ddm/comments/59299.htmlhttp://www.tkk7.com/tw-ddm/articles/59299.html#Feedback0http://www.tkk7.com/tw-ddm/comments/commentRss/59299.htmlhttp://www.tkk7.com/tw-ddm/services/trackbacks/59299.html閱讀全文

    大大毛 2006-07-20 23:57 發(fā)表評論
    ]]>
    web.xml中無法添加&lt;taglib&gt;標(biāo)簽問題的解決http://www.tkk7.com/tw-ddm/articles/58879.html大大毛大大毛Tue, 18 Jul 2006 16:37:00 GMThttp://www.tkk7.com/tw-ddm/articles/58879.htmlhttp://www.tkk7.com/tw-ddm/comments/58879.htmlhttp://www.tkk7.com/tw-ddm/articles/58879.html#Feedback0http://www.tkk7.com/tw-ddm/comments/commentRss/58879.htmlhttp://www.tkk7.com/tw-ddm/services/trackbacks/58879.html狀況:
    ???向web.xml中加入Struts標(biāo)簽庫信息時遇到問題,xml校驗(yàn)報錯:Invalid content was found starting with element 'taglib'

    環(huán)境:
    ???eclipse3.1.1,myeclipse4.0.2,tomcat5.0.29

    解決方法:
    ???1.將<taglib>標(biāo)簽放在<jsp-config>標(biāo)簽內(nèi)即可;
    ???2.使用DTD進(jìn)行驗(yàn)證

    產(chǎn)生問題的原因:
    ???將出問題的web.xml文件與tomcat下其它的文件進(jìn)行比較發(fā)現(xiàn),區(qū)別在于xml文件使用了不同的文檔類型描述
    ???能夠直接添加的web.xml使用是DTD
    ???
    <! DOCTYPE?web-app
    ????PUBLIC?"-//Sun?Microsystems,?Inc.//DTD?Web?Application?2.3//EN"
    ????"http://java.sun.com/dtd/web-app_2_3.dtd"
    >

    ???而我的這個web使用的是XML Schema
    < web-app? xmlns ="http://java.sun.com/xml/ns/j2ee" ?xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" ?version ="2.4" ?xsi:schemaLocation ="http://java.sun.com/xml/ns/j2ee???http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
    ???出現(xiàn)這種差別的原因在于,一個采用的是JSP1.2規(guī)范,而另一個使用的是JSP2.0規(guī)范,可以參看這里

    大大毛 2006-07-19 00:37 發(fā)表評論
    ]]>
    精通Struts筆記--02http://www.tkk7.com/tw-ddm/articles/58865.html大大毛大大毛Tue, 18 Jul 2006 14:27:00 GMThttp://www.tkk7.com/tw-ddm/articles/58865.htmlhttp://www.tkk7.com/tw-ddm/comments/58865.htmlhttp://www.tkk7.com/tw-ddm/articles/58865.html#Feedback0http://www.tkk7.com/tw-ddm/comments/commentRss/58865.htmlhttp://www.tkk7.com/tw-ddm/services/trackbacks/58865.html 2.簡單的Struts應(yīng)用?? helloapp

    ???應(yīng)用需求:
    ??????1.接受name輸入
    ??????2.不允許name為空
    ??????3.如果是特定姓名,則不向其打招呼
    ??????4.滿足條件則向其問好

    ???例程:
    ??????可能由于本需求很簡單,因此例程只使用了一個JSP作為視圖,從struts-config.xml的設(shè)計視圖上可以看到邏輯顯得很亂

    ???具體步驟(Myeclipse):
    ??????1.先建一個項(xiàng)目,選擇J2EE下的WEB項(xiàng)目
    ??????2.在項(xiàng)目上加入Struts框架
    ??????3.選擇struts-config.xml配置文件可進(jìn)入設(shè)計視圖
    ??????4.新建一個ActionForm Bean,加入name屬性,并根據(jù)此ActionForm bean新建一個JSP
    ??????5.新建一個Action,可以自行另取名稱(不一定必須與form對應(yīng)),之后還要在Input的JSP文件中將form 的 action改為對應(yīng)的Action路徑,記住要加.do后綴
    ??????6.在Myeclipse中設(shè)置應(yīng)用服務(wù)器,使用Tomcat5
    ??????7.發(fā)布

    ???注意事項(xiàng):
    ??????ActionForm Bean只能由具體的類進(jìn)入編輯;
    ??????Action在設(shè)計視圖上可以加入ActionForward,但是這樣做實(shí)際上只是在配置文件中進(jìn)行了配置,還需要在Action中自行編碼進(jìn)行findForward()才能實(shí)現(xiàn)跳轉(zhuǎn);
    ??????Action中設(shè)置出ActionErrors后,必須this.saveError(request)才會產(chǎn)生作用;
    ??????Struts配置文件的中文問題:
    ?????????在XML配置文件中設(shè)置的一個配置文件,實(shí)際上是一個缺省配置文件,一個資源對象實(shí)際上對應(yīng)多個配置文件(多語言),文件在名稱上有要求,據(jù)此可以配置多個語言的資源文件;
    ?????????Struts實(shí)際上是依靠多個資源文件來實(shí)現(xiàn)國際化;
    ?????????Eclipse自身對于配置文件采用的編碼方式是ISO8859,因此用它編輯配置文件后,再打開會是一些問號,JSP頁面也會顯示不正常,需要使用JDK的native2ascii來手工轉(zhuǎn)碼,對于某些版本的Eclipse提供了自行設(shè)置編碼的設(shè)置.
    ?????????用JInto插件可以簡化操作,并同時對多個語言的資源文件進(jìn)行編輯(對照著,很E啊)
    ?????????多語言效果的測試:
    ????????????IE中的Internet選項(xiàng)/語言,可以看到當(dāng)前IE所使用的語言,選擇需要測試的語言,應(yīng)用后刷新或重開IE窗口即可(不過測試中失敗了好多次).
    ?????????????:我試著選擇一個沒有對應(yīng)資源的語言,但是卻沒有看到那種使用缺省資源文件的效果,還是中文的.
    ?????????按書上的,寫成ActionErros.add("key",new ActionMessage("key"));的形式在本機(jī)上出類轉(zhuǎn)換異常,改成ActionErros("key",new ActionError("key"));的方式通過;
    ?????????<html:cancel />標(biāo)簽:
    ????????????由ActionForm新建一個JSP時,Form域中是放上了submit和cancel兩個按鈕的.
    ????????????cancel的用途還不太清楚,但是它可以完成一個submit動作,而且在使用cancel進(jìn)行提交時,ActionForm的校驗(yàn)沒有起作用,直接提交到Action進(jìn)行處理,從而忽略了視圖層的檢驗(yàn)

    ???這一章中有兩點(diǎn)映象:
    ??????1.書上的例程,在各處都廣泛地引用到了配置文件,這應(yīng)該是出于國際化的要求,對于大型項(xiàng)目來說是很重要的;
    ??????2.校驗(yàn)的問題,該例程將空值校驗(yàn)放入ActionForm檢驗(yàn)中,劃歸于視圖層的檢驗(yàn),而對于特定姓名拒絕打招呼這樣的檢驗(yàn),放入Action中,屬于業(yè)務(wù)邏輯.

    大大毛 2006-07-18 22:27 發(fā)表評論
    ]]>
    精通Struts筆記--01http://www.tkk7.com/tw-ddm/articles/58853.html大大毛大大毛Tue, 18 Jul 2006 13:57:00 GMThttp://www.tkk7.com/tw-ddm/articles/58853.htmlhttp://www.tkk7.com/tw-ddm/comments/58853.htmlhttp://www.tkk7.com/tw-ddm/articles/58853.html#Feedback0http://www.tkk7.com/tw-ddm/comments/commentRss/58853.htmlhttp://www.tkk7.com/tw-ddm/services/trackbacks/58853.html 1.Struts與Java Web應(yīng)用簡介

    ???Struts為Java Web應(yīng)用提供了框架.它可以提高開發(fā)的速度.
    ???優(yōu)點(diǎn):
    ??????本身是一群Web開發(fā)專家的智慧結(jié)晶;
    ??????運(yùn)用廣泛;
    ??????適用于開發(fā)大型復(fù)雜的Web應(yīng)用.

    ???Java Web應(yīng)用的核心技術(shù)是Servlet和JSP
    ???Struts框架中JSP位于視圖層,而Servlet位于控制層

    ???幾個重要的API
    ??????HttpServletRequest:由Servlet容器把用戶的請求存在此對象中
    ??????HttpServletResponse:用于生成Http響應(yīng)結(jié)果
    ??????HttpSession:容器為每個Http會話而創(chuàng)建的一個實(shí)例,用于保存會話中的共享數(shù)據(jù)
    ??????ServletContext:為每個Web應(yīng)用而創(chuàng)建的實(shí)例,存放application范圍內(nèi)的數(shù)據(jù)

    ??????HttpServletRequest,HttpSession,ServletContext都提供了操作共享數(shù)據(jù)的方法
    ??????setAttribute(String key,Object value)
    ??????getAttribute(String key)
    ??????與容器提供的接口一樣,因此getAttribute(String key)方法返回的是Object,需要做強(qiáng)制轉(zhuǎn)型

    ???HttpSession的生存期有:
    ??????客戶端關(guān)閉瀏覽器;
    ??????會話過期;
    ??????服務(wù)端調(diào)用HttpSession.invalidate()方法.

    ???相對來說Session的生存期較長,因此如果可以的話應(yīng)將數(shù)據(jù)保存在Request范圍內(nèi),這樣可以縮短對象的生存期;另外象Tomcat這樣的容器提供了管理Session的功能,可以對其做持久化管理.

    ???Web應(yīng)用中數(shù)據(jù)生存的范圍:
    ??????1.page
    ??????2.request
    ??????3.session
    ??????4.application

    ???JavaBean:
    ??????就是符合特定規(guī)范的Java對象,在JSP中提供了標(biāo)簽便于處理
    ??????JSP中操作JavaBean常用標(biāo)簽有:
    ?????????<jsp:useBean id="bean名稱" scope="生存期" class="ddm.MyBean" />
    ?????????<jsp:getProperty name="bean名稱" property="屬性名" />
    ?????????<jsp:setProperty name="bean名稱" property="屬性名" value="值" />
    ???JavaBean常位于模型層,由它提供數(shù)據(jù)及邏輯
    ???Struts中的ActionForm Bean就是一種JavaBean,它僅在視圖層和控制層之間傳遞用戶輸入的表單數(shù)據(jù),位于視圖層,它只能有兩種生存范圍:request,session

    ???客戶化JSP標(biāo)簽
    ??????在Jsp1.1中出現(xiàn),支持用戶在JSP中自定義客戶化標(biāo)簽,這些標(biāo)簽常用于處理復(fù)雜的邏輯運(yùn)算和事務(wù)以及定義JSP的輸出內(nèi)容和格式.
    ??????優(yōu)點(diǎn):
    .?????????標(biāo)簽具有可重用性,因此可以提供開發(fā)效率
    ????????????類似于asp中的JS函數(shù),jsp中的嵌入頁
    .?????????可以在JSP頁面中以靜態(tài)或動態(tài)的方式設(shè)置標(biāo)簽的屬性
    .?????????標(biāo)簽可以訪問JSP網(wǎng)頁中的所有對象
    .?????????標(biāo)簽可以相互嵌套,來完成復(fù)雜的邏輯
    .?????????可以使JSP頁面更簡潔,提高可讀性
    ????????????對于這個有不同的意見,我認(rèn)為實(shí)際上降低了可讀性;因?yàn)槌绦虻目勺x性實(shí)際上是適用于程序開發(fā)/測試人員的,除此之外別無他人,而引用各種技術(shù),只會提升技術(shù)上的復(fù)雜度,增加修改的難度;所謂的"類的可重用性",就我看來是指特定人群的,對于專業(yè)的高手來說是可以提升效率的,但是對于某種技術(shù)一知半解的人來說,只會提升開發(fā)難度.一旦類被重用,錯誤的影響面也會非常之廣.

    ???Struts提供了五種標(biāo)簽庫:
    ??????1.Bean
    ??????2.HTML
    ??????3.Logic
    ??????4.Nested
    ??????5.Tiles

    ???EJB
    ??????EJB(企業(yè)JavaBean)組件是基于標(biāo)準(zhǔn)分布式對象技術(shù),CORBA,RMI的服務(wù)端Java組件
    ??????它與JavaBean的聯(lián)系
    ?????????相同點(diǎn):都用于實(shí)現(xiàn)企業(yè)應(yīng)用的業(yè)務(wù)邏輯,都位于模型層
    ?????????區(qū)別:EJB總是分布式的;EJB需要運(yùn)行于應(yīng)用服務(wù)器中,而JavaBean只需要Servlet/JSP容器

    ???XML
    ??????應(yīng)用廣泛,它可以描述結(jié)構(gòu)化的數(shù)據(jù),通常與DTD一起使用(聲明標(biāo)記使用規(guī)則),常用于配置文件
    ??????Struts中的兩種重要的XML文件
    ??????web.xml
    ?????????普通的Web應(yīng)用都有,它用于配置Web應(yīng)用,如配置Servlet
    .?????struts-config.xml(可以使用別的名稱,需要在web.xml中對應(yīng))
    ?????????Struts框架的配置文件,主要是Action的配置,這個XML文件包含了幾個標(biāo)簽,在書寫時各子標(biāo)簽的書寫順序有著嚴(yán)格要求

    ???Web組件的關(guān)聯(lián)關(guān)系
    ??????1.請求轉(zhuǎn)發(fā)
    ?????????只能發(fā)生在同一個Web應(yīng)用中,在服務(wù)端完成轉(zhuǎn)發(fā)
    ?????????RequestDespatcher rd = request.getRequestDispatcher("hello.jsp");
    ?????????rd.forward(request,response);
    ?????????JSP中使用的標(biāo)簽:
    ????????????<jsp:forward page="hello.jsp" />
    ?????????這種方式可以共享request范圍內(nèi)的數(shù)據(jù)
    ??????2.重定向
    ?????????與轉(zhuǎn)發(fā)類似,但是可以將請求轉(zhuǎn)發(fā)到不同的Web應(yīng)用,在客戶端完成定向(由服務(wù)端發(fā)一個信息給客戶端瀏覽器,瀏覽器將新發(fā)一個請求)
    ?????????response.sendRedirect("
    http://www.javablog.net/tw-ddm ");
    ?????????由于可能發(fā)生在不同的Web應(yīng)用,因此不能共享request范圍的數(shù)據(jù)
    ??????3.包含
    ?????????是一個聚集的概念,可以共享request數(shù)據(jù),常用于模板,程序的控制權(quán)在調(diào)用者,被包含者只是暫時有控制權(quán),執(zhí)行完畢后需要傳回
    ?????????RequestDispatcher rd;
    ?????????rd = request.getRequestDispatcher("/header.jsp");
    ?????????rd.include(request,response);
    ?????????包含由于不會產(chǎn)生控制權(quán)的轉(zhuǎn)移,因此能夠在一個組件中包含多個
    ?????????JSP中使用標(biāo)簽:
    ????????????<jsp:include page="/hello.jsp" flush="true">
    ???????????????<jsp:param name="username" value="ddm"/>
    ????????????</jsp:include>
    ?????????這是動態(tài)包含,它可以傳遞參數(shù),它可以包含動態(tài)或靜態(tài)文件,每次運(yùn)行時容器都會去檢查文件是否發(fā)生變化
    ?????????<% @include file="/hello.jsp" %>,容器不會每次去檢查文件,常用于包含靜態(tài)頁面

    ???Struts是實(shí)現(xiàn)MVC模式的框架
    ??????視圖層:
    ?????????JSP作為MVC中的視圖,它沒有業(yè)務(wù)邏輯,也沒有模型信息,只有標(biāo)簽
    ?????????ActionForm bean 由于只處理表單數(shù)據(jù),聯(lián)系視圖和控制器,因此也被分為視圖層
    ??????模型層:
    ?????????由JavaBean和EJB來實(shí)現(xiàn),某些簡單的功能,有時也直接讓Action扮演控制器和模型兩種角色
    ??????控制器:
    ?????????由ActionSevlet和Action來實(shí)現(xiàn).
    ?????????ActionSevlet類是Struts框架中的核心組件.繼承了HttpServlet,在MVC中作為中央控制器存在,因此只能有一個
    ????????????這個核心玩意也是可以替換的,只要新類是從ActionServlet派生即可,同時也需要在web.xml中改變對應(yīng)的class名稱
    ?????????Action由ActionServlet根據(jù)Struts-config.xml配置文件來產(chǎn)生,它負(fù)責(zé)調(diào)用合適的模型(JavaBean,EJB),因此它也具有適配器的作用,相當(dāng)于控制器和模型之間的隔離層(適配器)
    ?????????Action必須實(shí)現(xiàn)基類的execute()方法,此方法返回一個ActionForward對象,由ActionForward對象封裝響應(yīng),為增加應(yīng)用的可配置,提倡從配置文件中findForward

    ???配置文件:
    ??????struts-config.xml
    ??????配置文件中描述了多個Action的映射信息,初始化時被封裝在ActionMapping對象中,每個action元素對應(yīng)一個ActionMapping對象
    ??????該配置文件中有個<controller>元素,是用于配置ActionServlet的,比較有用的是:<controller contentType="text/html;charset=UTF-8" locale="true" />,這里的contentType應(yīng)用于全局范圍,如果在JSP文件中指定將在局部履蓋這個選項(xiàng),換句話說這里指定了,就可以在JSP頁面省心了,另外說一句,用Myeclipse生成的JSP,如果是從ActionForm生成則不會有這些信息,只有要設(shè)計視圖中單獨(dú)拖一個出來時才會具有.

    ???工作流程:
    ??????1.檢索與用戶請求匹配的ActionMapping對象,如果不存在則返回路徑無效的信息.
    ??????2.檢查有無ActionForm對象,如果沒有則創(chuàng)建,并將用戶提交的表單數(shù)據(jù)保存在其中.
    ??????3.根據(jù)配置決定表單是否需要驗(yàn)證,如果需要驗(yàn)證,則調(diào)用ActionForm的validate()方法.
    ??????4.如果validate()方法返回null或不含ActionMessage的ActionErrors對象,則表示成功.失敗則返回input頁面
    ??????5.根據(jù)ActionMapping包含的映射信息,查找及新建Action對象,然后調(diào)用該對象的execute()方法.
    ??????6.Action對象的execute()返回一個ActionForward對象,然后由ActionServlet轉(zhuǎn)發(fā)客戶請求給ActionForward中指向的JSP組件
    ??????7.由該JSP生成網(wǎng)頁以響應(yīng)客戶請求.

    ?



    大大毛 2006-07-18 21:57 發(fā)表評論
    ]]>
    使用Myeclipse插件布署時的TOMCAT JDK NAME問題的解決http://www.tkk7.com/tw-ddm/articles/53499.html大大毛大大毛Sat, 17 Jun 2006 11:04:00 GMThttp://www.tkk7.com/tw-ddm/articles/53499.htmlhttp://www.tkk7.com/tw-ddm/comments/53499.htmlhttp://www.tkk7.com/tw-ddm/articles/53499.html#Feedback0http://www.tkk7.com/tw-ddm/comments/commentRss/53499.htmlhttp://www.tkk7.com/tw-ddm/services/trackbacks/53499.html???使用Myeclipse插件進(jìn)行布署時遇到了錯誤,提示是“Tomcat JDK name”。不得其解,求助于網(wǎng)絡(luò),找到一篇關(guān)于這個問題的解決辦法:
    ???引用:冉翔的技術(shù)專欄

    ???該篇文章提到了2種解決辦法,經(jīng)測試通過。也給了我一些思路。
    按照這種結(jié)果我推斷 問題應(yīng)該是出在工作區(qū)的配置文件上,根據(jù)出錯的提示該問題是由于Tomcat所用的JRE與工作區(qū)缺省配置的JRE不一致所致。當(dāng)然這里所說的“JRE不一致”除了冉翔技術(shù)專欄上所提的JDK前后所用版本發(fā)生變動以外,還包括JRE所在位置的不同(因?yàn)榘骋恢倍加玫氖?.4..2_05),經(jīng)過試驗(yàn)證實(shí)了這個推斷。

    ???除了引用中所提到的2種解決辦法可行外,我另加種解決辦法:

    ???1.為Myeclipse插件的Application Server指定新的JRE。

    ???2.修改缺省的JRE配置路徑。

    ???方法1(以Tomcat5為例):
    ??????點(diǎn)擊eclipse 的菜單項(xiàng)目 ??窗口 -> 首選項(xiàng)
    ??????在MyEclipse -> Application Servers中選擇需要配置的應(yīng)用服務(wù)器Tomcat5,選擇應(yīng)用服務(wù)器下的JDK,可以看到右邊出現(xiàn)"Tomcat JDK name"項(xiàng),點(diǎn)擊右部按鈕 "Add...",彈出窗體中設(shè)置"JRE名稱"(隨便起了),設(shè)置"JRE主目錄",設(shè)置為當(dāng)前的JAVA_HOME所指向的位置,即JDK安裝的目錄。然后確定。
    ??????示意圖
    ??????這時可見Tomcat5 的 Tomcat JDK name中使用的即是剛才所設(shè)置的JRE名稱了,應(yīng)用即可。

    ???方法2:
    ??????eclipse的窗口->首選項(xiàng),在JAVA下可見一個"已安裝的JRE",選擇它,右部可以看到所有的JRE庫名稱及位置,選擇當(dāng)前所使用的,編輯它,會彈出一個窗口(與方法1中窗口一樣),修改一下JRE的主目錄位置即可。

    ???應(yīng)該來說,添加新的JRE系統(tǒng)庫,然后針對不同的App server使用不同的系統(tǒng)庫。這種做法應(yīng)該比直接修改缺省的JRE配置路徑要好一些

    大大毛 2006-06-17 19:04 發(fā)表評論
    ]]>
    主站蜘蛛池模板: 亚洲JIZZJIZZ妇女| 最近的2019免费中文字幕| 免费乱码中文字幕网站| 男女一边桶一边摸一边脱视频免费 | 99视频免费播放| 亚洲午夜一区二区三区| 免费a在线观看播放| 久久国产精品免费专区| 亚洲欧美乱色情图片| 国产亚洲日韩在线三区| 波多野结衣在线免费视频| 特级毛片全部免费播放| 18gay台湾男同亚洲男同| 国产精品深夜福利免费观看| a视频在线免费观看| 亚洲狠狠婷婷综合久久| 亚洲成色WWW久久网站| 日本人护士免费xxxx视频| 久久久国产精品福利免费| 成人婷婷网色偷偷亚洲男人的天堂| 亚洲日韩精品射精日| 成人性生交大片免费看午夜a| 在线观看免费视频网站色| 亚洲人av高清无码| 亚洲三级电影网址| 亚洲国产精品无码久久九九| 久久受www免费人成_看片中文| 九九免费久久这里有精品23| 亚洲人成在线播放| 亚洲国产AV无码专区亚洲AV| 免费a级毛片18以上观看精品| 日日麻批免费40分钟无码| 永久免费观看黄网站| 亚洲精品天堂在线观看| 久久精品亚洲视频| 亚洲欧洲一区二区三区| 日韩a在线观看免费观看| 114一级毛片免费| 暖暖日本免费中文字幕| 一区二区三区在线观看免费 | 色多多免费视频观看区一区|