最新国产乱人伦偷精品免费网站,国产区视频在线,精品免费av一区二区三区http://www.aygfsteel.com/xiaosilent/category/18264.htmlWaste of time is the most extravagant and costly of all expenses.<BR><BR><a href="mailto:xiaosilent@gmail.com"><img src="http://www.aygfsteel.com/images/blogjava_net/xiaosilent/16063/o_mail.png" title="Contact me via xiaosilent@gmail.com" alt="xiaosilent@gmail.com"></a>zh-cnMon, 21 Apr 2008 19:45:09 GMTMon, 21 Apr 2008 19:45:09 GMT60MyEclipse 6.0.1 注冊(cè)碼生成類http://www.aygfsteel.com/xiaosilent/archive/2008/04/21/194650.htmlxiaosilentxiaosilentMon, 21 Apr 2008 15:33:00 GMThttp://www.aygfsteel.com/xiaosilent/archive/2008/04/21/194650.htmlhttp://www.aygfsteel.com/xiaosilent/comments/194650.htmlhttp://www.aygfsteel.com/xiaosilent/archive/2008/04/21/194650.html#Feedback0http://www.aygfsteel.com/xiaosilent/comments/commentRss/194650.htmlhttp://www.aygfsteel.com/xiaosilent/services/trackbacks/194650.html閱讀全文

xiaosilent 2008-04-21 23:33 發(fā)表評(píng)論
]]>
Ubuntu 8.04 Eclipse MyEclipse 出現(xiàn)的問(wèn)題小記http://www.aygfsteel.com/xiaosilent/archive/2008/04/21/194559.htmlxiaosilentxiaosilentMon, 21 Apr 2008 09:38:00 GMThttp://www.aygfsteel.com/xiaosilent/archive/2008/04/21/194559.htmlhttp://www.aygfsteel.com/xiaosilent/comments/194559.htmlhttp://www.aygfsteel.com/xiaosilent/archive/2008/04/21/194559.html#Feedback0http://www.aygfsteel.com/xiaosilent/comments/commentRss/194559.htmlhttp://www.aygfsteel.com/xiaosilent/services/trackbacks/194559.html閱讀全文

xiaosilent 2008-04-21 17:38 發(fā)表評(píng)論
]]>
在Ubuntu安裝Subversionhttp://www.aygfsteel.com/xiaosilent/archive/2008/04/12/192308.htmlxiaosilentxiaosilentFri, 11 Apr 2008 23:19:00 GMThttp://www.aygfsteel.com/xiaosilent/archive/2008/04/12/192308.htmlhttp://www.aygfsteel.com/xiaosilent/comments/192308.htmlhttp://www.aygfsteel.com/xiaosilent/archive/2008/04/12/192308.html#Feedback0http://www.aygfsteel.com/xiaosilent/comments/commentRss/192308.htmlhttp://www.aygfsteel.com/xiaosilent/services/trackbacks/192308.html閱讀全文

xiaosilent 2008-04-12 07:19 發(fā)表評(píng)論
]]>
Eclipse導(dǎo)出JavaDoc中文亂碼問(wèn)題解決http://www.aygfsteel.com/xiaosilent/archive/2007/11/28/163646.htmlxiaosilentxiaosilentWed, 28 Nov 2007 03:20:00 GMThttp://www.aygfsteel.com/xiaosilent/archive/2007/11/28/163646.htmlhttp://www.aygfsteel.com/xiaosilent/comments/163646.htmlhttp://www.aygfsteel.com/xiaosilent/archive/2007/11/28/163646.html#Feedback0http://www.aygfsteel.com/xiaosilent/comments/commentRss/163646.htmlhttp://www.aygfsteel.com/xiaosilent/services/trackbacks/163646.html給 javadoc.exe 加上編碼參數(shù)就OK。

具體的:

在Eclipse里 export 選 JavaDoc,在向?qū)У淖詈笠豁?yè)的Extra JavaDoc Options 里填上參數(shù)即可

比如項(xiàng)目采用的是UTF-8的編碼就填:-encoding UTF-8 -charset UTF-8

o_javadoc.JPG



xiaosilent 2007-11-28 11:20 發(fā)表評(píng)論
]]>
響叮當(dāng) 醫(yī)藥管理系統(tǒng)http://www.aygfsteel.com/xiaosilent/archive/2007/08/10/135922.htmlxiaosilentxiaosilentFri, 10 Aug 2007 11:30:00 GMThttp://www.aygfsteel.com/xiaosilent/archive/2007/08/10/135922.htmlhttp://www.aygfsteel.com/xiaosilent/comments/135922.htmlhttp://www.aygfsteel.com/xiaosilent/archive/2007/08/10/135922.html#Feedback0http://www.aygfsteel.com/xiaosilent/comments/commentRss/135922.htmlhttp://www.aygfsteel.com/xiaosilent/services/trackbacks/135922.html閱讀全文

xiaosilent 2007-08-10 19:30 發(fā)表評(píng)論
]]>
修改 dTree , 實(shí)現(xiàn)節(jié)點(diǎn)的動(dòng)態(tài)添加http://www.aygfsteel.com/xiaosilent/archive/2007/04/28/114394.htmlxiaosilentxiaosilentSat, 28 Apr 2007 08:54:00 GMThttp://www.aygfsteel.com/xiaosilent/archive/2007/04/28/114394.htmlhttp://www.aygfsteel.com/xiaosilent/comments/114394.htmlhttp://www.aygfsteel.com/xiaosilent/archive/2007/04/28/114394.html#Feedback8http://www.aygfsteel.com/xiaosilent/comments/commentRss/114394.htmlhttp://www.aygfsteel.com/xiaosilent/services/trackbacks/114394.html閱讀全文

xiaosilent 2007-04-28 16:54 發(fā)表評(píng)論
]]>
MySQL和Java交互的中文亂碼http://www.aygfsteel.com/xiaosilent/archive/2007/01/17/94496.htmlxiaosilentxiaosilentWed, 17 Jan 2007 12:55:00 GMThttp://www.aygfsteel.com/xiaosilent/archive/2007/01/17/94496.htmlhttp://www.aygfsteel.com/xiaosilent/comments/94496.htmlhttp://www.aygfsteel.com/xiaosilent/archive/2007/01/17/94496.html#Feedback0http://www.aygfsteel.com/xiaosilent/comments/commentRss/94496.htmlhttp://www.aygfsteel.com/xiaosilent/services/trackbacks/94496.html數(shù)據(jù)庫(kù)的亂碼問(wèn)題,一直都相當(dāng)惱人,不過(guò),要解決起來(lái),其實(shí)也還是比較容易……

首先,需要設(shè)定數(shù)據(jù)庫(kù)的編碼,也就是要在數(shù)據(jù)庫(kù)連接字串里面設(shè)置好編碼:
url=jdbc:mysql://localhost:3306/databaseName?useUnicode=true&characterEncoding=UTF-8
在建立數(shù)據(jù)庫(kù)連接的時(shí)候,再指定用戶名和密碼就可以了。

隨后,需要在數(shù)據(jù)庫(kù)和數(shù)據(jù)表里都設(shè)定好編碼:
CREATE DATABASE `db` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `db`;

CREATE TABLE `user` (
? `id` int(11) NOT NULL auto_increment,
?? `username` char(20) default NULL COMMENT '用戶名',
?? `password` char(20) default NULL COMMENT '密碼',
? PRIMARY KEY? (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;



最后是設(shè)定JSP文件的編碼,
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");

或者是用個(gè)Filter:

import ?java.io.IOException;

import ?javax.servlet.Filter;
import ?javax.servlet.FilterChain;
import ?javax.servlet.FilterConfig;
import ?javax.servlet.ServletException;
import ?javax.servlet.ServletRequest;
import ?javax.servlet.ServletResponse;

/**
?*?字符編碼過(guò)濾器
?*?
?*?
@author ?xiaosilent.
?*?
?
*/
public ? class ?CharacterEncodingFilter? implements ?Filter?{

????
protected ?FilterConfig?filterConfig;

????
private ?String?targetEncoding? = ? " UTF-8 " ;

????
/**
?????*?初始化過(guò)濾器,獲取初始化參數(shù),如果沒(méi)有設(shè)定則使用默認(rèn)的UTF-8編碼.
?????
*/
????
public ? void ?init(FilterConfig?config)? throws ?ServletException?{

????????
this .filterConfig? = ?config;

????????
// ?如果在web.xml里定義了編碼,則獲取,否則使用默認(rèn)的UTF-8.
???????? if ?(config.getInitParameter( " encoding " )? != ? null )?{

????????????
this .targetEncoding? = ?config.getInitParameter( " encoding " );
????????}

????}

????
public ? void ?doFilter(ServletRequest?request,?ServletResponse?response,
????????????FilterChain?chain)?
throws ?IOException,?ServletException?{

????????request.setCharacterEncoding(targetEncoding);
????????response.setCharacterEncoding(targetEncoding);

????????chain.doFilter(request,?response);

????}

????
public ? void ?destroy()?{

????????filterConfig?
= ? null ;

????}

}
在web.xml里加入:? <filter>
? ?? ?<filter-name>CharacterEncodingFilter</filter-name>
? ?? ?<filter-class>xiao.cms.filter.CharacterEncodingFilter</filter-class>
? </filter>
? <filter-mapping>
? ?? ?<filter-name>CharacterEncodingFilter</filter-name>
? ?? ?<url-pattern>/*</url-pattern>
? </filter-mapping>
這里使用的是UTF-8,所以沒(méi)有指定參數(shù),如果用非UTF-8編碼,指定一個(gè)名為encoding的參數(shù)即可.


經(jīng)過(guò)這樣三個(gè)步驟,就不存在亂碼問(wèn)題了。

另,不推薦用 MySQL-Front 這個(gè)客戶端程序管理UTF-8編碼的數(shù)據(jù)庫(kù)。如果是GBK編碼還可以考慮,UTF-8則會(huì)出現(xiàn)編碼問(wèn)題,導(dǎo)致程序不能正常工作,強(qiáng)烈推薦 Navicat 。 功能強(qiáng)大,默認(rèn)使用UTF-8編碼,界面友好、美觀。



xiaosilent 2007-01-17 20:55 發(fā)表評(píng)論
]]>
Properties讀取任意目錄的配置文件http://www.aygfsteel.com/xiaosilent/archive/2006/12/22/89575.htmlxiaosilentxiaosilentFri, 22 Dec 2006 10:50:00 GMThttp://www.aygfsteel.com/xiaosilent/archive/2006/12/22/89575.htmlhttp://www.aygfsteel.com/xiaosilent/comments/89575.htmlhttp://www.aygfsteel.com/xiaosilent/archive/2006/12/22/89575.html#Feedback4http://www.aygfsteel.com/xiaosilent/comments/commentRss/89575.htmlhttp://www.aygfsteel.com/xiaosilent/services/trackbacks/89575.html然而,一般,我喜歡把web的配置文件放到WEB-INF里,和web.xml 文件放在一起,如果用getResourcesAsStream()肯定是不行了。
仔細(xì)想了一下,找到一個(gè)變通的方法:
????????try{
????????????
????????????String?url?
=?this.getClass().getResource("").getPath().replaceAll("%20",?"?");
????????????String?path?
=?url.substring(0,?url.indexOf("WEB-INF"))?+?"WEB-INF/config.properties";
????????????Properties?config?
=?new?Properties();
??????????? config.load(new FileInputStream(path));

????????????System.out.println(config.getProperty(
"dbDriver"));
????????}
????????
catch(Exception?e){
????????????e.printStackTrace();
????????}

這樣,就可以把配置文件放到任意位置了~~~~


xiaosilent 2006-12-22 18:50 發(fā)表評(píng)論
]]>
Ubuntu/Debian 下 Java中文支持問(wèn)題http://www.aygfsteel.com/xiaosilent/archive/2006/12/10/86658.htmlxiaosilentxiaosilentSun, 10 Dec 2006 03:57:00 GMThttp://www.aygfsteel.com/xiaosilent/archive/2006/12/10/86658.htmlhttp://www.aygfsteel.com/xiaosilent/comments/86658.htmlhttp://www.aygfsteel.com/xiaosilent/archive/2006/12/10/86658.html#Feedback0http://www.aygfsteel.com/xiaosilent/comments/commentRss/86658.htmlhttp://www.aygfsteel.com/xiaosilent/services/trackbacks/86658.html雖然在 wiki.ubuntu.org.cn 上的快速設(shè)置指南里有提到 java中文問(wèn)題的解決辦法,但是,于我來(lái)說(shuō),我只需要能夠顯示中文就可以了,就不需要搞得那么復(fù)雜了。
還是在論壇里搜索了一下,找到一個(gè)相對(duì)來(lái)說(shuō),估計(jì)是最簡(jiǎn)單的解決方法了。

cd?JAVA_HOME/jre/lib/fonts
sudo?mkdir?fallback
sudo?ln?-s?/usr/share/fonts/zh_CN/simsun.ttc?.
sudo?mkfontdir
sudo?mkfontscale

其中,JAVA_HOME代表的是jdk的安裝目錄,我是自己編譯安裝的sun的jdk,安裝目錄就是/usr/lib/j2sdk1.5-sun。 /usr/share/fonts/zh_CN/simsun.ttc 是我的宋體文件存放路徑,根據(jù)實(shí)際情況修改就是了。 只是,要注意的是,所使用的字體文件一定是要能夠支持中文的字體,否則,這一切都是白搭。


xiaosilent 2006-12-10 11:57 發(fā)表評(píng)論
]]>
Ubuntu下如何快速搭建JSF平臺(tái)http://www.aygfsteel.com/xiaosilent/archive/2006/11/15/build_a_JSF_develop_environment_on_Ubuntu.htmlxiaosilentxiaosilentWed, 15 Nov 2006 09:20:00 GMThttp://www.aygfsteel.com/xiaosilent/archive/2006/11/15/build_a_JSF_develop_environment_on_Ubuntu.htmlhttp://www.aygfsteel.com/xiaosilent/comments/81327.htmlhttp://www.aygfsteel.com/xiaosilent/archive/2006/11/15/build_a_JSF_develop_environment_on_Ubuntu.html#Feedback0http://www.aygfsteel.com/xiaosilent/comments/commentRss/81327.htmlhttp://www.aygfsteel.com/xiaosilent/services/trackbacks/81327.html
在這里,我們使用自己編譯sun的J2SDK安裝包的方式進(jìn)行安裝。
從sun下載最新的J2SDK安裝包,因?yàn)椋荱buntu操作系統(tǒng),所以,要選擇linux平臺(tái)下的jdk安裝包進(jìn)行下載,得到文件jdk-1_5_0_06-linux-i586.bin。現(xiàn)在可以直接給.bin文件加上可執(zhí)行權(quán)限,然后在終端下運(yùn)行安裝程序,這里,我們要把它編譯成.deb包的形式再來(lái)安裝。
sudo?apt-get?install?java-package?java-common?fakeroot?
安裝上編譯需要的三個(gè)包。然后在終端下執(zhí)行
fakeroot?make-jpkg?jdk-1_5_0_06-linux-i586.bin
,就會(huì)在當(dāng)前目錄下生成一個(gè)名為sun-j2sdk1.5_1.5.0+update06_i386.deb的文件。這就是已經(jīng)編譯好的jdk包了,然后是安裝,執(zhí)行
sudo?dpkg?-i?sun-j2sdk1.5_1.5.0+update06_i386.deb
就可以安裝了(當(dāng)然也可以直接雙擊.deb文件進(jìn)行安裝)。 現(xiàn)在雖然安裝好了jdk,但是系統(tǒng)并沒(méi)有把jdk當(dāng)成是默認(rèn)的java解釋器(可以在終端執(zhí)行 java -version 看看,是不是剛才安裝的 sun-j2sdk1.5_1.5.0),我們還需要執(zhí)行
sudo?update-alternatives?--config?java
? 在彈出的選單中選擇帶有 sun 字樣的一項(xiàng),就把新安裝的jdk設(shè)置成了默認(rèn)的java解釋器。 現(xiàn)在再執(zhí)行
java?-version
看看效果?最后,為了能夠正常運(yùn)行 Apache Tomcat ,還需要設(shè)置一個(gè) JAVA_HOME 變量。?
sudo?gedit?/etc/profile
? 在最后,加入?
export?JAVA_HOME=/usr/lib/j2sdk1.5-sun
(也許你的機(jī)器上的jdk的安裝路徑不是這樣的,你可以在新立得里查看jdk的屬性,確定其具體位置)。到這里,jdk的安裝算是安成了。
要指出的是,也許,源里面已經(jīng)有jdk的包了,可以直接用源里的包安裝,但是,源里的包一般都不是最新的。而通過(guò)自己編譯的方式可以得到最新的jdk。


第二步就是安裝JDK了。

從www.eclipse.org上下載gtk版的eclipse3.2 (其實(shí),只要你在ubuntu系統(tǒng)上用瀏覽器訪問(wèn),網(wǎng)站會(huì)自動(dòng)把eclipse的版本和你系統(tǒng)想匹配) 解壓到本地的任意目錄就算是安裝完成了,簡(jiǎn)單吧?


第三步就是安裝MyEclipse插件.

從 www.myeclipseide.com 下載 5.* 版的myeclipse 的 手動(dòng)安裝包(ManualInstall),要注意的是,雖然網(wǎng)站上提供得有rpm格式的安裝包,這是給RedHat操作系統(tǒng)用的,Ubuntu是采用的Debian的deb格式封裝軟件包。把得到的zip文件解壓到本地的任意目錄,然后啟動(dòng)eclipse,選擇 Help - Software Updates - Manage Configuration。在彈出的頁(yè)面中,可以看到 Eclipse SDK 下是eclipse的安裝路徑,在該路徑上點(diǎn)右鍵,在彈出的菜單中選擇 Add - Extension Locaion ,添加一個(gè)擴(kuò)展,也就是要指定myeclipse的路徑了,在彈出的文件選擇對(duì)話框中,選擇myeclipse的路徑,確定就可以了。然后,根據(jù)提示重啟eclipse,myeclipse就算是安裝完成了。
最后是安裝Tomcat,從 tomcat.apache.org 下載非windows版本的安裝包,解壓到本地任意目錄,進(jìn)入到$Tomcat_Home/bin,執(zhí)行
./startup.sh?
就可以啟動(dòng) tomcat了,從終端的輸出信息我們還可以再次確認(rèn)tomcat所使用的java解釋器是不是我們才安裝的jdk 打開(kāi)瀏覽器,訪問(wèn) localhost:8080 查看到Tomcat的默認(rèn)頁(yè)面。要停止tomcat,執(zhí)行
./shutdown.sh
? 至于管理員帳戶的添加,可以根據(jù)tomcat默認(rèn)頁(yè)面上的說(shuō)明修改 $Tomcat_Home/conf 下的 tomcat-users.xml 文件,添加一個(gè)用戶,并把規(guī)則設(shè)置成 manager 就可以了。修改默認(rèn)的 8080 端口,可以修改相同目錄下的 server.xml ,要注意的一點(diǎn)是,如果端口號(hào)小于1024,在啟動(dòng)tomcat時(shí),需要root權(quán)限,也就是用
sudo?./startup.sh
來(lái)啟動(dòng)。

最后,還需要在MyEcipse里配置一下服務(wù)器,在 eclipse 的菜單欄上選擇 window - Preferences 展開(kāi) MyEclipse,展開(kāi) Application Servers ,選擇 Tomcat 5,在右側(cè)的編輯區(qū)中,先選擇 Enable,然后指定tomcat的根目錄(Tomcat Home Directory),根據(jù)實(shí)際情況指定即可。再在左側(cè)去展開(kāi) Tomcat 5, 查看JDK項(xiàng),是不是剛才安裝的jdk。最后確認(rèn)。這下回到eclipse的圖形工具欄,就可以通過(guò) 服務(wù)器 那個(gè)圖標(biāo)啟動(dòng)/重啟/關(guān)閉 tomcat。 點(diǎn)擊試試,彈出個(gè)菜單,里面有個(gè)Tomcat 5 子菜單吧,再選擇啟動(dòng),就可以在下面的 控制臺(tái) 看到一些輸出信息,并啟動(dòng)tomcat。


xiaosilent 2006-11-15 17:20 發(fā)表評(píng)論
]]>
如何用Eclipse+MyEclipse快速搭建JSF開(kāi)發(fā)環(huán)境http://www.aygfsteel.com/xiaosilent/archive/2006/10/10/74298.htmlxiaosilentxiaosilentTue, 10 Oct 2006 07:08:00 GMThttp://www.aygfsteel.com/xiaosilent/archive/2006/10/10/74298.htmlhttp://www.aygfsteel.com/xiaosilent/comments/74298.htmlhttp://www.aygfsteel.com/xiaosilent/archive/2006/10/10/74298.html#Feedback5http://www.aygfsteel.com/xiaosilent/comments/commentRss/74298.htmlhttp://www.aygfsteel.com/xiaosilent/services/trackbacks/74298.html第一步:安裝Java環(huán)境
從sun官方下載J2SDK的安裝包,注意自己的系統(tǒng)平臺(tái),不要下錯(cuò)了。Ubuntu等Debian衍生系統(tǒng)可以直接apt-get安裝,安裝完成后,運(yùn)行 sudo update-alternatives --config java 來(lái)完成默認(rèn)java解釋器的配置,在出現(xiàn)的選項(xiàng)中選擇帶有sun-jdk5等類似字樣的選項(xiàng)即可。windows系列操作系統(tǒng)(估計(jì)沒(méi)有人再用win9x來(lái)寫Java應(yīng)用了)直接執(zhí)行下載回來(lái)的可執(zhí)行文件,可以選擇不安裝獨(dú)立的jre和演示程序源碼包等,記下安裝的路徑。安裝完成后,在桌面(Desktop)上右擊 我的電腦(My Computer)圖標(biāo),選擇 屬性(Properties) 選擇 高級(jí)(Advanced)選項(xiàng)卡,選擇環(huán)境變量(Environment variables...) 選擇 新建(New...)(任意一個(gè)新建都可以,建議選擇修改當(dāng)前用戶的環(huán)境變量).在變量名中填寫"PATH"(引號(hào)不用寫),變量值處填寫".;d:\Jdk\bin"(假設(shè),剛才的安裝路徑為d:\Java,根據(jù)自己實(shí)際情況進(jìn)行修改)。再確定退出就可以了。可以在命令行里面驗(yàn)證一下,看是否配置正確:win+R鍵,打開(kāi)運(yùn)行(Run...)對(duì)話框,輸入command,運(yùn)行 java -version? 看是否有 相關(guān)的輸出。如果沒(méi)有仔細(xì)檢查剛才環(huán)境變量的設(shè)置。
第二步:安裝Eclipse
說(shuō)是安裝Eclipse,就是去Eclipse官方下載自己相應(yīng)版本的Eclipse的壓縮包,解壓到自己喜歡的目錄就可以了。windows平臺(tái),直接執(zhí)行eclipse.exe就可以了,Linux平臺(tái)下可以先在桌面/面板等地方建立一個(gè)到解壓出目錄下的eclipse文件的連接,在執(zhí)行該鏈接就可以了,也可以在終端里面執(zhí)行。要說(shuō)明的是,必須要先正確執(zhí)行第一步才可以成功運(yùn)行Eclipse。
第三步:安裝MyEclipse插件
從MyEclipse官方下載和自己Eclipse版本和自己系統(tǒng)平臺(tái)相對(duì)應(yīng)的版本的MyEclipse插件安裝包,下載回來(lái)后執(zhí)行該安裝文件(這里,各個(gè)平臺(tái)的安裝方式都一樣,只是啟動(dòng)安裝程序的方式不同而已),指定先前安裝的Eclipse的路徑和要把MyEclipse安裝到的路徑,直接安裝完成即可。
第四步:安裝Jsp/Servlet容器
以安裝Tomcat為例,從Tomcat官方下載自己對(duì)應(yīng)平臺(tái)的安裝包。windows平臺(tái)就不再說(shuō)了,Linux平臺(tái)下載回來(lái)的是壓縮包,解壓到適當(dāng)目錄,并,修改/etc/profile或其他環(huán)境變量配置文件。在文件后添加?
export JAVA_HOME=yourPath
export TOMCAT_HOME=yourPath
這兩行,把其中的yourPath替換成你實(shí)際的路徑就是了。然后重新啟動(dòng)計(jì)算機(jī)使更改生效(也可以通過(guò)在終端里執(zhí)行 source /etc/profile 的方式來(lái)即時(shí)更新環(huán)境變量,但是后面所有的操作,都必須在該終端下進(jìn)行。)。
下面就是如何建立JSF工程了。
啟動(dòng)Eclipse 設(shè)置缺省的工作區(qū)位置,關(guān)掉Welcome窗口,出現(xiàn)缺省的JDT視圖。選擇 File-New-Project-MyEclipse-J2EE Projects-Web Project,打開(kāi) New J2EE Web Project 對(duì)話框,填寫適當(dāng)?shù)墓こ堂刃畔ⅲ欢ㄒJ(rèn)真填寫 Context root URL 這將會(huì)是你發(fā)布工程時(shí)的工程名。確定,系統(tǒng)提示要打開(kāi) MyEclipse J2EE Development 視圖,選擇 Yes 就自動(dòng)打開(kāi)該視圖。這樣,在左邊的Package Explorer 看將會(huì)看到剛才建立的工程,且該工程的根目錄被選定,現(xiàn)在在菜單欄上選擇 MyEclipse-Add JSF Capabilities。打開(kāi) JavaServer Faces Support for MyEclipse Web Project 對(duì)話框,選擇適當(dāng)?shù)?JSF 實(shí)現(xiàn)(JSF Implementation),等等其他相關(guān)信息。再單擊 Finish 就可以了。 這樣,一個(gè) JSF 工程就建好了,可以進(jìn)行開(kāi)發(fā)了。
最后,是發(fā)布工程。在發(fā)布工程以前,我們需要配置一下服務(wù)器。找到圖形工具欄上的 啟動(dòng)服務(wù)器 的圖標(biāo),選擇 Configure Server 在出現(xiàn)的對(duì)話框中展開(kāi)左邊的Application Servers 樹,找到 Tomcat5 單擊,在右邊出現(xiàn)的配置區(qū)中,選擇 Enable 然后在 Tomcat Home Directory 中填寫自己的 Tomcat 的安裝路徑 確定就可以了。在圖形工具欄上剛才的服務(wù)器圖標(biāo)的左邊,是發(fā)布工程的圖標(biāo),選擇,出現(xiàn)對(duì)話框。在 Project 后的選單里選擇剛才的工程,在 Deployments 中選擇 Add 出現(xiàn) New Deployment 對(duì)話框,在Server里選擇剛才配置好的Tomcat5,然后是選擇是要發(fā)布成打包的.war 文件(Packaged Archive)還是直接按目錄發(fā)布(Exploded Archive)。確認(rèn)就是了。然后啟動(dòng)Tomcat,就可以看到自己剛建立的工程了。

xiaosilent 2006-10-10 15:08 發(fā)表評(píng)論
]]>
[譯] JavaServer Faces in Action 中關(guān)于 action listener 的講解部分http://www.aygfsteel.com/xiaosilent/archive/2006/10/10/74283.htmlxiaosilentxiaosilentTue, 10 Oct 2006 05:44:00 GMThttp://www.aygfsteel.com/xiaosilent/archive/2006/10/10/74283.htmlhttp://www.aygfsteel.com/xiaosilent/comments/74283.htmlhttp://www.aygfsteel.com/xiaosilent/archive/2006/10/10/74283.html#Feedback2http://www.aygfsteel.com/xiaosilent/comments/commentRss/74283.htmlhttp://www.aygfsteel.com/xiaosilent/services/trackbacks/74283.html第一次嘗試翻譯,難免錯(cuò)誤百出,敬請(qǐng)指正。

當(dāng)用戶和代表命令或某操作(gesture)等控件發(fā)生交互的時(shí)候,觸發(fā) 動(dòng)作事件(action event)。產(chǎn)生動(dòng)作事件的組件也叫做動(dòng)作源,包括了按鈕、超鏈接等組件。動(dòng)作事件由動(dòng)作監(jiān)聽(tīng)器(action listener)進(jìn)行處理。

有兩種典型的監(jiān)聽(tīng)器:一種會(huì)影響到頁(yè)面間的導(dǎo)航(navigation),另一種不會(huì)影響到導(dǎo)航。影響到頁(yè)面間導(dǎo)航的監(jiān)聽(tīng)器主要是處理一些業(yè)務(wù)邏輯并返回幾個(gè)業(yè)務(wù)邏輯結(jié)果,JSF的導(dǎo)航系統(tǒng)將會(huì)根據(jù)這個(gè)來(lái)選擇恰當(dāng)?shù)南乱粋€(gè)頁(yè)面(譯注:并非傳統(tǒng)所說(shuō)的TRUE/FALSE這兩種“邏輯”結(jié)果,這里講的是“業(yè)務(wù)邏輯”,可以是任意的有代表意義的結(jié)果。)不影響導(dǎo)航的事件監(jiān)聽(tīng)器用來(lái)操作當(dāng)前頁(yè)面內(nèi)的組件,或者是進(jìn)行一些業(yè)務(wù)模型上的改變,或者是修改backing bean的屬性等,并不會(huì)出現(xiàn)在頁(yè)面間的跳轉(zhuǎn)。

在技術(shù)上,所有頁(yè)面間導(dǎo)航都是由一個(gè)單一的動(dòng)作監(jiān)聽(tīng)器來(lái)處理。這個(gè)監(jiān)聽(tīng)器自動(dòng)處理組件所觸發(fā)的所有事件(event),因此,該監(jiān)聽(tīng)器并不需要手動(dòng)地注冊(cè)/綁定(register)。缺省情況下,這個(gè)監(jiān)聽(tīng)器會(huì)將所有的工作交由你制定的backing bean中的某個(gè)方法(method)來(lái)處理。因此,你可以用不同的方法來(lái)處理你程序中的各個(gè)業(yè)務(wù)部分。典型地,你的大多數(shù)業(yè)務(wù)邏輯都將會(huì)交由這些方法來(lái)處理。

當(dāng)某個(gè)組件觸發(fā)一個(gè)事件的時(shí)候,缺省的監(jiān)聽(tīng)器就決定了該事件的處理結(jié)果,該結(jié)果用一個(gè)字符串(string)來(lái)表示,比方說(shuō):"success"、"failure" 等。這個(gè)結(jié)果也可以分為靜態(tài)和動(dòng)態(tài)兩類。靜態(tài)的是在編碼的時(shí)候就已經(jīng)定義好了的例如:
<h:commandButton type="submit" value="Login" action="success" immadiate="true" />
在這個(gè)例子當(dāng)中,當(dāng)用戶點(diǎn)擊這個(gè)標(biāo)為L(zhǎng)ogin的按鈕的時(shí)候,會(huì)產(chǎn)生 "success" 這個(gè)業(yè)務(wù)結(jié)果并同時(shí)觸發(fā)該按鈕被點(diǎn)擊這個(gè)事件,但是,并沒(méi)有相應(yīng)的方法來(lái)處理這個(gè)事件。

而動(dòng)態(tài)的結(jié)果就是由處理該事件的方法所返回的,一個(gè)字符串。一個(gè)方法可能會(huì)返回多個(gè)不同的結(jié)果,這取決于業(yè)務(wù)邏輯。動(dòng)作監(jiān)聽(tīng)器會(huì)自動(dòng)查找你在該組件的 action 屬性中指定的方法,并執(zhí)行。我們用 EL(expression language) 來(lái)指定該屬性值。下面是一個(gè) HtmlCommandButton 的實(shí)際例子:
<h:commandButton type="submit" value="Login" action="#{user.login}" />
當(dāng)用戶點(diǎn)擊該按鈕,一個(gè)代表該按鈕被點(diǎn)擊的事件產(chǎn)生,并執(zhí)行下面的事件處理方法:

?1 public ? class ?User {
?2
?3 ?? public ?String?login() {
?4 ???? if () {? // 登陸成功
?5 ?????? return ? " success " ;
?6 ????}
else {? // 登陸失敗
?7 ?????? return ? " failure " ;?
?8 ????}

?9 ??}

10
11 }

login方法的返回值取決于不同的業(yè)務(wù)邏輯,這里暫不討論。類User 是一個(gè) backing bean 它的某些屬性值和頁(yè)面上的某些輸入控件的值相關(guān)聯(lián)。 而該類會(huì)在 faces-config.xml 中有相應(yīng)的定義。

上面的例子中僅有 "success"、"failure" 等返回值,但是,實(shí)際應(yīng)用中,你的程序可能要求你能操縱JSF組件、業(yè)務(wù)模型對(duì)象、添加消息等等。甚至是 實(shí)現(xiàn)頁(yè)面的直接跳轉(zhuǎn)、輸出某個(gè)適當(dāng)響應(yīng)、和數(shù)據(jù)庫(kù) EJB 等組件 服務(wù)等實(shí)現(xiàn)交互 等等復(fù)雜的功能。動(dòng)作監(jiān)聽(tīng)器根據(jù)方法的返回值和導(dǎo)航系統(tǒng)中的定義來(lái)決定頁(yè)面跳轉(zhuǎn)。

當(dāng)你需要執(zhí)行業(yè)務(wù)邏輯又不需要頁(yè)面的跳轉(zhuǎn)的時(shí)候,你可以給組件綁定一個(gè) 動(dòng)作監(jiān)聽(tīng)器方法(action listener method),有別于動(dòng)作方法(action method),該方法除了可以綁定事件,還可以操縱組件。我們看下面的例子:
<h:commandButton id="redisplayButton" type="submit" value="Redisplay" actionListener="#{loginForm.doIt()}" />
和前面的例子一樣,當(dāng)用戶點(diǎn)擊該按鈕,有事件產(chǎn)生。但是,這次,動(dòng)作監(jiān)聽(tīng)器方法得到執(zhí)行,而不是先前的動(dòng)作方法。

1 public ? void ?doIt(ActionEvent?event) {
2 ??HtmlCommandButton?button? = ?(HtmlCommandButton)event.getComponent();
3 ??button.setValue( " Try?again! " );
4 }

該方法會(huì)改變先前點(diǎn)擊的按鈕的標(biāo)題,雖然這并沒(méi)有多少用處。但重要的是,這個(gè)方法的簽名。他接受了一個(gè) ActionEvent 類的參數(shù),并沒(méi)有返回值。這,就是 action listener method 和 action method 的主要區(qū)別!在前面的方法執(zhí)行完以后,頁(yè)面會(huì)被刷新,以顯示效果。

通常,用 action listener method 方法來(lái)執(zhí)行對(duì)當(dāng)前頁(yè)面的改變。比方說(shuō) value-changing 事件等,你也可以用一個(gè)接口來(lái)實(shí)現(xiàn),然而,在大多數(shù)情況下,用 backing bean 中的方法來(lái)實(shí)現(xiàn)就已經(jīng)足夠了。



xiaosilent 2006-10-10 13:44 發(fā)表評(píng)論
]]>
JavaServer Faces in Action中 關(guān)于 action listener 的講解http://www.aygfsteel.com/xiaosilent/archive/2006/10/10/74259.htmlxiaosilentxiaosilentTue, 10 Oct 2006 03:58:00 GMThttp://www.aygfsteel.com/xiaosilent/archive/2006/10/10/74259.htmlhttp://www.aygfsteel.com/xiaosilent/comments/74259.htmlhttp://www.aygfsteel.com/xiaosilent/archive/2006/10/10/74259.html#Feedback0http://www.aygfsteel.com/xiaosilent/comments/commentRss/74259.htmlhttp://www.aygfsteel.com/xiaosilent/services/trackbacks/74259.html 稍后奉上翻譯__==__
Action events are triggered when a user interacts with a control that represents a command,or a user gesture. Components that generate action events,also called action sources,include controls such as buttons or hyperlinks.Action events are handled by action listeners.

There are two types of action listeners:those that affect navigation,and those that don't.Action listeners that affect navigation typically perform some processing and then return a logical outcome that is used by JSF's navigation system to select the next page(which may actually be the same page that's currently being viewed). Listeners that don't affect navigation usually manipulate components in the current view,or perform some processing that changes model object or backing bean properties,but doesn't alter the current page the user is accessing.

Technically,all navigation is handled by a single action listener.This listener automaatically handles any action events fired by a component,so it doesn't need to be registered manually.By default,this action listener delegates all of its work to action methods in your backing beans,so you can have different action methods handle different parts of your application.Typically,most of your application logic will be located in these methods.(The action listener is pluggable,so it's possible to replace it with one that doesn't use action methods at all.)

When a component fires an action event,this default action listener determines its outcome string---"success"or"failure",for example.There are two basic types of outcomes:static and dynamic.Static outcomes are hardcoded string that are declared with the component or set in code:
<h:commondButton type="submit" value="Login" action="success" immediate="true"/>
In this example,the static outcome of "success" will be generated when the user clicks on this HtmlCommandButton and generates an action event--no
action method will be called.

Dynamic outcomes are strings returned by action methods themselves---an action method might return a different outcome depending on whateever application logic it performs.The action listener looks for an action method whenever you use a JSF EL(Expression Language) expression in the action property.Here's an HtmlCommandButton that exectutes an action method instead:
<h:commandButton type="submit" value="Login" action="#{user.login}"/>
When a user clicks on this button,an action event is fired,and the follwing method is executed in response to the event:

?1 public ? class ?User {
?2
?3 ?? public ?String?login() {
?4 ???? if () {? // ?successfully?login
?5 ?????? return ? " success " ;
?6 ????}
else {
?7 ?????? return ? " failure " ;
?8 ????}

?9 ??}

10
11 }


Based on some voodoo application logic,this action method returns an outcome of either "success" or "failure" . User is a backing bean whose properties are wired up to input control values on the page,and is configured via the Managed Bean Creation facility.

My example has voodoo logic,but your action methods can manipulate JSF components,model objects,or add messages.They can also do other fun tasks,such sa performing a redirect,rendering a response(a graphic or some binary type of data),ading events,and talking to databases,EJB(Enterprise JavaBean) servers,or web services.The action listener uses the outcome of an action method to hook into the navigation system and determine what page to choose next.

When you need to execute application logic that is not associated with navigation you can associate an action listener method with a component.Unlike action methods,action listener methods have access to the component that fired the event as well.Take a look at this example:
<h:commandButton id="redisplayCommand" type="submit" value="Redisplay" actionListener="#{myForm.doIt}" />
Like the previous example , when a user clicks on this HtmlCommandButton , an action event is fired. This time,however,the action listener method is
executed instead of the action method:

1 public ? void ?doIt(ActionEvent?event) {
2 ??HtmlCommandButton?button? = ?(HtmlCommandButton)event.getCommponent();
3 ??button.setValue(? " It's?done! " ?);
4 }

5

This method changes the value(label) of the button that fired the event---not terribly useful.What's important,however,is its method signature.Instead of accepting an ActionEvent sa a parameter and don't return an outcome at all. After this method executes,the page will be redisplayed,incorporating any changes made by the method.

Usually,you use action listener methods for changes that affect the current view. Like value-change listeners,you can also implement an action listener using a Java interface,although in most cases using a method in an existing backing bean is sufficient.



xiaosilent 2006-10-10 11:58 發(fā)表評(píng)論
]]>
主站蜘蛛池模板: 荃湾区| 古蔺县| 崇仁县| 阿荣旗| 淮北市| 延长县| 山东省| 金山区| 长泰县| 达孜县| 合水县| 奎屯市| 清河县| 双辽市| 柳河县| 马边| 常山县| 依安县| 南涧| 遵义县| 同江市| 马边| 扶绥县| 龙井市| 扎兰屯市| 赤城县| 津市市| 辉南县| 大足县| 镇宁| 团风县| 深州市| 宜兴市| 昌都县| 陈巴尔虎旗| 马公市| 女性| 山西省| 兴和县| 沙河市| 五大连池市|