|
2007年12月11日
這道菜也是師從我婆婆
不得不說,婆婆真的是一個美食家,好吃,好看,隨便幾個蔬菜到她那里都會被演繹的很美味。
呵呵。。。。
現在就來介紹這道菜的步驟:
1.準備材料
原茄子一個
青豆若干
蔥白少許
醋
胡椒
鹽
醬油
2.制作過程
將茄子去皮,切成薄片,然后在切成細絲
給切好絲的茄子上散少許鹽,腌制15分鐘,讓其出水
青豆用水煮熟,如果你買的是生的
(我在超市買的大包裝的,不知道是不是熟的,反正我沒提前煮過)
炒鍋中倒少許油,爆香蔥花
加入茄子絲兒,翻炒幾下,放少許醬油,少許醋
(喜歡稍微酸一點的可以多加一點點醋哦)
將火調小一些,加一點水,翻炒幾下,蓋上鍋蓋,悶少許時間
當茄子快全部軟了的時候,加入剛才煮好的青豆
翻炒幾下,然后去調一些 稀薄的 水淀粉
回來,加入些雞精,胡椒粉,翻炒幾下
加入水淀粉,大火收一下,出鍋
下次我在做的時候,拍張照片附上
用fileupload組件上傳文件出現亂碼解決方法|http://www.aspsky.net
減小字體
增大字體
作者:佚名 來源:不詳 發布時間:2007-12-31 19:58:00
快速查找內容
我們用apache的fileupload組件上傳文件,
如果不做任何出理,通常會出現文件名亂碼或普通text文本框值的亂碼,那么,我們該如何處理呢?
其實,fileupload組件提供了一個設置編碼的接口,在沒有指定編碼時使用系統缺省的encoding,如果需要使用gbk,可以使用該接口進行設置,如:
//FileUploadBase fb = new FileUpload(new DefaultFileItemFactory());
//fb.setHeaderEncoding("GBK");
DiskFileUpload fu = new DiskFileUpload();
fu.setHeaderEncoding("GBK");
這
樣,獲取的文件名就不會亂碼了,但普通文本框的值卻還是亂碼,我們還要對文本值進行處理,中文的text字段可以通過
title = new String((fileItem.getString("iso8859-1")).getBytes("iso8859-1"),"GBK"); 來
獲取
UTF-8的也是同理,祝在家好運.
在網上找過很多例子,但都有很多問題。
希望得到大家的幫助。
謝謝
在網上找過很多例子,但都有很多問題。
希望得到大家的幫助。
謝謝
下面的方法也是我在google上搜到的,因為嘗試了其中一個方法,成功了,
所以在這里記錄下,備用。
比如以下兩個jsp頁面之間的傳遞:
a.jsp頁面內容:
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
<form action="b.jsp">
name:<input type=text name=name>
<input type=submit>
</form>
b.jsp頁面內容:
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
<%
String name=request.getParameter("name");
%>
<body>
<%=name%>
</body>
現象:中文亂碼,比如“??????”
解決方法如下:
方法一:-----------嘗試過,有效但確實不可取
1. 在b.jsp中把pageEncoding="GB2312"改為pageEncoding="ISO8859-1"
雖然這樣b.jsp頁面顯示的內容還是亂碼,但是不是那種“??????”的亂碼,
而是一些特殊字符
2. 然后在瀏覽器中查看菜單中修改成GB2312的編碼,這時亂碼就顯示中文了。
3. 但是這種方法是不可行的。
方法二:---------- 嘗試過,有效。我的部分頁面就是用該方法
1. 在b.jsp中把String name=request.getParameter("name");修改為
String name=new String(request.getParameter("name").getBytes("ISO-8859-1"),"GB2312");
2. 這時再在頁面上顯示,則就是中文了。
3. 但是我個人不喜歡這種方法,因為編寫起來代碼非常繁瑣
方法三:
1. 有人說修改get/post的傳值方式,但是這是有前提的,
如果只是把get方式修改成post方式,頁面結果還是亂碼!
2. 前提你必須配置了過濾器,若果你只是配置了過濾器,
則傳值方式必須是:post方式才不是亂碼,如果是get方式照樣是亂碼!
3. 過濾器的配置,我想大家都能有,我就不說了
方法四:
1. 有人說配置tomcat的配置文件server.xml里這句:
<Connector URIEncoding="GB2312"
port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
加上這句:URIEncoding="GB2312"
2. 雖然可以但是有前提的,若果你過濾器沒有配置,
則只是配置了server.xml文件,這樣只有在表單是get傳值時候才可以!
當是post方式時,照樣是亂碼!
*這時我們就可以看出在tomcat5中的post與get傳值方式是不一樣的*
*有人要問有沒有一種方法讓傳值使用get方式或post方式都好用呢,
下面就是我推薦的方法五*
方法五:
1. 其實很簡單,就是同時實現方法三又實現方法四!
2. 就是先配置過濾器,又配置server.xml文件,都設置成GB2312的編碼
3. 這樣無論是post還是get方式的表單傳值,中文都不會是亂碼!
今天閑逛CSDN ,看到了這樣一個有趣的標題,趕緊進去瞧了瞧。
別人我不知道,因為我是轉行業到java編程的。現在正在做web開發的工作,
所以對這篇文章的內容深有同感,尤其是我轉載過來,注以紅色字的部分。
希望跟我一樣境況的人看到這則新聞,也能加強一下對其他語言的學習。
【CSDN 1月9日消息】 國際消息 美國紐約大學的兩位計算機科學系退休教授發表一篇公開文章,標題是“計算機科學教育:明日的軟件工程師在何處?”。在文中,他們強烈地批評了紐約大學和其他大學,沒有向學生傳授純粹的語言如C、C++、Lisp和ADA。
“學生從當前教育實踐課程中獲取的技能不足以應付今日軟件行業的發展(尤其是安全和安全目的方面)。更不幸的是,與外部行業需要過于匹配了,我們訓練了許多容易被取代的軟件工程師。”
尤為注意的是,文中以“Java作為第一編程語言的諸多缺陷”為小標題對Java進行了批判:
由于Java在Web應用領域的流行,以及初學者容易生成圖形化編程,Java成為入門課程中使用最普遍的語言。從此后學生發現很難在一個沒有圖像界面的語言上編寫程序,不清楚源程序和硬件如何執行之間的關系,更具有危險性的是他們一點也不了解指示器的語義,這使得使用C語言編程也成為挑戰。”
編程的真正的美妙之處在于,將復雜的過程縮減成非常小的一個簡單操作。Java并沒有體現這種美妙,它鼓勵采用“問題解決(problem-solving)”的方式,使程序員就像五金店的水管工人:到處翻騰抽屜、閣子最后找出需要的零件。最終的結果使得學生知道如何將一些簡單的程序組到一起,而對編程卻一無所知。而且過早地使用Java庫和框架有一個更大的缺陷:它使得學生很難對編寫的東西形成運行時間成本(run-time cost)的概念,因為他們很難知道究竟哪種方法的調用是有效的。我們為此亦找到了一些證據。Bjarne Stroustrup(被譽為C++之父)在德州農工大學(Texas A&M University )的報告中,指出了工業對于這種方式越來越多的不滿,而且Bjarne這樣說,“從工業那里我看到了許多許多對此(Java作為第一編程語言來使用)的抱怨,尤其是AT&T, IBM, Intel, Bloomberg, NI, Microsoft, Lockheed-Martin等等。”
另外在文中,這兩位教授們認為真正的程序員能夠使用任何語言(C,Java,Lisp,Ada)。【吶不喊】
在網上找到了的解決辦法
解決方法一:
1.運行對話框中輸入mmc
------打開控制臺,將cmd改寫成mmc
------在彈出來的對話框里,點擊文件
------添加/刪除管理單元
------添加--找到"Microsoft SQL 企業管理器"
--添加,確定
然后回到控制臺
------點擊控制臺的另存為,
------將它存儲為: c:\program File\microsoft SQL Srver\80\Tools\BINN\SQL Server Enterprise Manager.MSC
即可
關掉控制臺的時候,不保存控制臺的目錄結構
解決方法二:
刪掉C:\Documents and Settings\YourUserName\Application Data\Microsoft\MMC\SQL Server Enterprise Manager
上面的兩個方法我只嘗試了方法一,成功了哦
Hex (hexadecimal) ---- 十六進制,注意,十六進制代碼都是以#開頭的
Binary ---- 二進制的( octal 八進制的,decimal 十進制的,hexadecimal 十六進制的,)
Binary distribution ---二進制版本(很多地方都會發現這個詞,比如你去tomcat官網下載tomcat,下載mysql,大概其的意思就是告訴你這是一個二進制版本的)
Bit ------ (二進制的)位
beta ----- 因為字母的 B ,常常用來表示 真正發布前的測試階段
有alfa(alpha)字幕A,表示發布前第一階段的測試,開發者自己測試
而beta 就是 發布前的第二階段測試 常常是開放給 部分用戶的測試
這兩個測試階段都過去后,就可以released 發布 了
Octal --------- <計算機>八進制的
八的,第八的
Axis --------- n.軸,中軸,中樞,中心線
the Axis 指二戰時德意日組成的軸心國
<計算機> axis 是指一種 數據庫
debugger --------- 計算機指 調試器
我目前知道的有application debugger 和 application debugger 這兩個名詞,其他的還待補充
Decimal ----- <計算機>十進制的
十的,第十的
URL---- 統一資源定位符,在URL里必須包含“http://”
Terry Lee - 2008年不再用騰訊QQ says:
這個也行:http://java-source.net/open-source/bloggers
Terry Lee - 2008年不再用騰訊QQ says:
是專門web用的
mimi says:
好的。我都看看。呵呵。。
mimi says:
謝謝了
mimi says:
我今天才知道還有專門的調試器程序
Terry Lee - 2008年不再用騰訊QQ says:
恩,好多呢
mimi says:
我傻死了
Terry Lee - 2008年不再用騰訊QQ says:
我原來跟你說過,java最大的好處是有各種開源工具
Terry Lee - 2008年不再用騰訊QQ says:
各個行業,各種應用的幾乎都有
mimi says:
沒明白
Terry Lee - 2008年不再用騰訊QQ says:
你得多上網看一些技術文章
mimi says:
恩。
Terry Lee - 2008年不再用騰訊QQ says:
比如連接池,log,內容管理,CRM,報表,進程管理,緩存管理等等好多方面java都有開源的框架和工具
Terry Lee - 2008年不再用騰訊QQ says:
不用自己來開發,直接使用就行
Terry Lee - 2008年不再用騰訊QQ says:
比如hibernate和struts
Terry Lee - 2008年不再用騰訊QQ says:
這個網站有個簡單的總結:http://java-source.net/
mimi says:
那些開源的框架都是人們免費寫的
mimi says:
為什么就給java寫啊
Terry Lee - 2008年不再用騰訊QQ says:
有時間建議你去一些java技術網站看看最新的技術和應用: www.theserverside.com, www.onjava.com 等等
Terry Lee - 2008年不再用騰訊QQ says:
因為java開源
Terry Lee - 2008年不再用騰訊QQ says:
php也有,但是沒有java的多
mimi says:
哦。
Terry Lee - 2008年不再用騰訊QQ says:
java的開源是所有語言中最多的了
Terry Lee - 2008年不再用騰訊QQ says:
因為java語言本身就是開源的,其他語言都不是
mimi says:
我問一個,你不要生氣啊。
Terry Lee - 2008年不再用騰訊QQ says:
你用的eclipse也是java的開源工具
mimi says:
你說java語言本身就是開源的。。就是指免費的。還是也指其他的
mimi says:
那這么說,myeclipse就不是開源的
Terry Lee - 2008年不再用騰訊QQ says:
java本身是開放源代碼的,開源指的是源代碼,不是免費不免費
Terry Lee - 2008年不再用騰訊QQ says:
和linux一樣,可以去官方網站下載源代碼
mimi says:
哦。
Terry Lee - 2008年不再用騰訊QQ says:
其他語言都是編譯好免費使用,但不一定是開源的
Terry Lee - 2008年不再用騰訊QQ says:
java的這個特點被眾多網友應用在java開發的產品上,好多免費的東西都是開源的
mimi says:
哦
Terry Lee - 2008年不再用騰訊QQ says:
其他的語言,比如asp,php開發的東西也可以叫開源,但是和java比還不一樣
Terry Lee - 2008年不再用騰訊QQ says:
java不是腳本語言,php本身就是腳本語言,不想開放代碼都不行
mimi says:
哦,因為java可以隨便看源代碼,所以大家可以根據java的源代碼再開發一些基于java語言的 軟件,框架什么的
mimi says:
有這個意思吧
Terry Lee - 2008年不再用騰訊QQ says:
不是隨便看源代碼才有這些框架
mimi says:
腳本語言為什么不想開放都不行
Terry Lee - 2008年不再用騰訊QQ says:
是因為java開源,很多技術專家都可以跟sun公司提出自己的改進意見,使得java更好,和linux一樣
Terry Lee - 2008年不再用騰訊QQ says:
你用過asp或者php嗎
mimi says:
基本沒用過,但是看過一些,php是腳本語言,就是那些 用var聲明,function什么的。
Terry Lee - 2008年不再用騰訊QQ says:
我給你個.asp文件,你用記事本就能打開看到代碼,我把java編譯成.class或者用工具做成.exe給你用,你能直接看到源代碼嗎
mimi says:
你剛才說腳本語言不想開源度不行是什么意思啊
mimi says:
哦。
mimi says:
asp也可以用記事本看啊
mimi says:
這樣的。
Terry Lee - 2008年不再用騰訊QQ says:
那你說說怎么不讓我看到asp代碼
mimi says:
呵呵。。
mimi says:
恩呢
Terry Lee - 2008年不再用騰訊QQ says:
這好像沒啥難理解的吧
mimi says:
恩。
mimi says:
是的。
Terry Lee - 2008年不再用騰訊QQ says:
做軟件行業應該對這些東西都有個了解,這個就像生活的基本嘗試一樣
mimi says:
主要是沒想到 能用 記事本打開那些 php或asp文件
mimi says:
恩。
mimi says:
你說的對
mimi says:
謝謝
Terry Lee - 2008年不再用騰訊QQ says:
這個我想不明白了
Terry Lee - 2008年不再用騰訊QQ says:
用記事本打開什么文件,怎么會想到或者想不到呢
Terry Lee - 2008年不再用騰訊QQ says:
就算是二進制文件都可以用記事本打開,只不過打開后看不懂是些什么東西
mimi says:
恩。
Terry Lee - 2008年不再用騰訊QQ says:
jsp,asp,php,js等等這些腳本語言因為它們自身的特性想不開源都不行
mimi says:
我還是不太習慣用這樣的思維考慮,我總是想,打開一種類型的文件,肯定要用相關的軟件,以前都是作為普通的使用者。比如打開數碼照片就用acd什么的。
Terry Lee - 2008年不再用騰訊QQ says:
c/c++/java/delphi/basic等等這些語言可以選擇是否開源
mimi says:
恩。。。你說的對。
Terry Lee - 2008年不再用騰訊QQ says:
php確實還沒有什么官方的編輯工具,那些IDE環境都是第三方開發的
Terry Lee - 2008年不再用騰訊QQ says:
所以不要有這種概念,一個文件類型不一定要用某種特定工具打開
mimi says:
嗯
Terry Lee - 2008年不再用騰訊QQ says:
你用java讀取flv本身就是“打開”的概念
mimi says:
嗯
Terry Lee - 2008年不再用騰訊QQ says:
java有個開源框架專門處理office文檔的,是apache項目下的poi項目
Terry Lee - 2008年不再用騰訊QQ says:
可以直接讀取excel,word等文檔
mimi says:
哦。
Terry Lee - 2008年不再用騰訊QQ says:
不借助其他什么ODBC,是直接二進制讀取分析的
mimi says:
哦。
mimi says:
開源還真是好處多多啊
Terry Lee - 2008年不再用騰訊QQ says:
java的freeChat報表框架可以生成各種報表圖,扇形、圓餅、柱狀、曲線等等,不用自己調用繪圖類進行繪圖,直接調用這個框架,輸入一些數據參數就行
mimi says:
哦
Terry Lee - 2008年不再用騰訊QQ says:
tomcat本身也是一種開源servlet容器,你做web程序不用自己寫服務器,直接用免費開源的就行
Terry Lee - 2008年不再用騰訊QQ says:
很多大公司使用自己的web服務器,就是拿tomcat或者apache的源代碼然后做修改,改成適合自己公司使用的服務器
mimi says:
難道其他的語言還要自己寫服務器
mimi says:
哦。
Terry Lee - 2008年不再用騰訊QQ says:
其他很多都不用,但要么不是免費,要么是別人給你服務器,你沒法看到服務器內部工作原理,無法自己修改
mimi says:
哦。
Terry Lee - 2008年不再用騰訊QQ says:
比如tomcat你發現幾個功能有缺陷,不太適合自己公司,可以拿來源代碼自己修改,發現多余的功能可以自己刪除,windows下的IIS就不同了,你沒法自己修改,只能把意見提到微軟,看看它們什么反應
Terry Lee - 2008年不再用騰訊QQ says:
linux系統也是,現在有N多版本,就是因為開源的緣故,誰都可以根據核心代碼生產自己的linux產品
mimi says:
哦。
mimi says:
這樣的
mimi says:
嗯
Terry Lee - 2008年不再用騰訊QQ says:
所以java才會發展起來,要不大家都還在用vc或者.net
mimi says:
嗯。
Terry Lee - 2008年不再用騰訊QQ says:
java光靠跨平臺是沒有太多優勢的,開源框架才是它的生命力
mimi says:
嗯。
mimi says:
是啊。。會更方便
mimi says:
謝謝你說的這么多
mimi says:
剛看了你給我的那兩個技術網站,都是e文的呢。呵呵。。
mimi says:
我csdn才剛剛能看懂一些
Terry Lee - 2008年不再用騰訊QQ says:
是,我經常去看
mimi says:
主要是知道的太少
mimi says:
看不明白
Terry Lee - 2008年不再用騰訊QQ says:
特別是 http://www.theserverside.com/ 經常介紹一些新框架和新技術
Terry Lee - 2008年不再用騰訊QQ says:
能學到不少東西
mimi says:
我都收藏起來
mimi says:
恩。。你簡直太厲害了
Terry Lee - 2008年不再用騰訊QQ says:
很多東西我不是天生就知道的,比如log4j那些東西,都是看到一些有影響力的大網站介紹我才知道的
Terry Lee - 2008年不再用騰訊QQ says:
這就像天天看報紙新聞才能知道天下發生了什么事情一樣
mimi says:
嗯。明白你的意思。我會多看的。
Terry Lee - 2008年不再用騰訊QQ says:
恩,英文的東西多訓練一下自己,畢竟前沿的文章有人翻譯后就變成過時的東西了
mimi says:
恩。
mimi says:
現在看這些e文的,習慣多了。
mimi says:
很多主要都是 中文都不知道說個什么,e文就更不明白了
mimi says:
不過多看確實很好。謝謝你啊
Terry Lee - 2008年不再用騰訊QQ says:
恩,說明你知識面還是不夠寬,接觸的東西太少
mimi says:
可不是嘛,
mimi says:
這個是積累的
Terry Lee - 2008年不再用騰訊QQ says:
可以先去jakarta.apache.org看看apache項目下面的子項目都是干嘛的
mimi says:
哦
mimi says:
那你每天都幾點睡覺啊
Terry Lee - 2008年不再用騰訊QQ says:
不一定,最近幾天睡得比較晚
mimi says:
你現在回到家了吧
Terry Lee - 2008年不再用騰訊QQ says:
恩
mimi says:
Ex-Jakarta 這個是什么意思啊,擴展的
mimi says:
ant 也是jakarta下的
Terry Lee - 2008年不再用騰訊QQ says:
恩
mimi says:
算什么呢
Terry Lee - 2008年不再用騰訊QQ says:
jakarta是apache下面的子項目,主要是一些java的項目
Terry Lee - 2008年不再用騰訊QQ says:
apache不光包括java項目,還有c++的
Terry Lee - 2008年不再用騰訊QQ says:
axis就是分c++和java兩個版本
Terry Lee - 2008年不再用騰訊QQ says:
今后可能會有.net版本的
mimi says:
哦。
Terry Lee - 2008年不再用騰訊QQ says:
以前我們公司經常用axis
mimi says:
謝謝你啊。
Terry Lee - 2008年不再用騰訊QQ says:
客氣
mimi says:
那我先不打擾了。你忙吧。估計今天還要晚睡。注意身體哦。
Terry Lee - 2008年不再用騰訊QQ says:
恩
最近,有兩位Google Maps API的初學者向我請教他們按照最簡單例子寫的程序為什么不能正常的運行。
其中一位用GTalk跟我交流,我仔細了看了他的代碼,沒看出問題,把代碼保存在本地,打開Firefox的錯誤控制臺,用Firefox打開他的頁面。出錯的那一行被清晰的顯示出來,我再仔細端詳那句話,原來有兩個應該是英文逗號的地方,寫上了中文逗號。
另一位,在我的論壇跟我交流他的Google Maps API中遇到的問題,我看他代碼的時候也沒有馬上發現問題。然而,同樣在用Firefox打開后,問題很明顯的找到了,原來是一個方法openInfoWindow被他寫成OpenInfoWindow了。
在我幫助別人解決的程序調試問題中,這是非常常見的。人人都可能打出中文逗號,人人都可能把大小寫寫錯。但是在我幫助他們解決問題以后,他們總是感慨的說,謝謝我解決了這個問題,這個問題困擾了他們幾個小時,甚至是幾天。
這其實并不是只有初學者才會遇到的問題,我還幫助過些有非常豐富經驗的工程師解決問題,有時候問題僅僅出自某個參數沒有傳遞進來,或者是拼接字符串的時候少些了一個冒號,或者是拼接地址的時候漏掉了http:。我甚至幫助一些人調試一些我根本不懂的語言的程序,因為多半出現的問題,都和語言特性無關,不是程序員寫錯了字符,就是寫錯了邏輯,或者是錯誤理解了一個函數。
出問題是正常的,寫程序是一個復雜的邊思考邊打字的過程,筆誤和一時糊涂都是難以避免的。程序員一般把這種問題叫做低級問題,因為這類問題跟你的智商完全無關,任何人都可能犯。
但是,問題在于,有時候即使是很優秀的程序員,也會被一個低級錯誤困擾,可能會幾天都解決不了。所以,關鍵在于,如何找到問題。
遇到問題的時候:
1,不要怨天怨地。出了問題,當然有可能是系統的bug,API的問題,但是那些幾率往往比你犯低級錯誤的幾率要低多了,先從自己身上找原因,是不是自己寫錯了。
2,要掌握工具。最低限度你要會寫Log,最好是Log和調試器結合。好 的工具可以大大的提高效率。以前有人跟我說,Dll不能調試,我發現可以;有人說多線程不能調試,我發現可以;有人說COM不能調試,我發現可以;有人說 IE插件不能調試,我發現可以;有人說OE插件不能調試,我發現也可以。當然,你確實會遇到不能調試的時候,當年我們做東芝芯片的嵌入程序,一個組都沒有 一個仿真器和調試器,但是至少可以用Log嘛,無非是麻煩點。
3,分析問題要有邏輯。遇到問題可以先把所有的可能性都列出來,然后一個一個分析,肯定能找到原因的。
4,要學會隔離問題。問題涉及到的代碼越多,越難以理解,問題越難以解決。遇到這樣的情況,可以利用Log或者調試器,一行代碼一行代碼的給它們洗清嫌疑,這樣很快你就可以找到出問題的地方。如果代碼特別長,程序特別復雜,可以用二分法來做,效率很高。
5,千萬不要懶惰,不要事事求別人。一次復雜的調試過程就像一部偵探劇,如果你有非常好的邏輯性,那這部劇的主角就是福爾摩斯,劇情一定非常精彩。我說這個是有巨大風險的,說真的我幫人調東西挺上癮的,很有意思。但是我還是要告訴大家,一次高難度的調試之后,你的滿足感絕對不亞于寫了一個偉大的程序。
要想不遇到問題,寫代碼的時候:
1,要對寫出來的代碼負責。我很佩服那些寫代碼寫100行都不執行一次的 高手,如果他們最后不被低級錯誤困擾的話我就更加的佩服了。我寫程序幾乎是寫一行兩行就要執行一次,每句話我都要確保執行效果跟我的預期一致。沒錯這樣寫的時候 可能慢一些,但是調試的時候很輕松,我可以很簡單的確定哪些代碼絕對沒有問題。所以我寫代碼整體速度比一般人高。很多人學習新東西的時候喜歡把例子抄一遍,運行一下,改改,再運行。我喜歡一句一句的抄例子,抄一句兩句執行一次,這樣可以把例子透徹的理解,而且很難會遇到出現了問題找不到原因的時候。
2,函數體功能塊不要過長。我認為我的智商并不高,我很難接受一個程序的一個函數體或者一個功能塊超越3屏(當然邏輯真的有那么復雜除外,你會發現越是簡單的邏輯越是容易被人寫的冗長)。很多人對面向對象耳熟能詳,對封裝繼承看起來駕輕就熟。但是動不動就寫出來個函數體超長的程序。這就像寫本書從頭到尾不點句號一樣,會累死讀者的。自己看的時候,估計也會被累的喘不過來氣。這是我對基礎教育的微詞所在,他們連教會學生寫函數都沒教會,雖然表面上他們連面向對象這么高深的東西都教。
3,縮進要對。這點很重要,雖然大部分語言不是像Python那樣用縮進來決定邏輯塊的位置,但是人看到縮進的時候,總是會以為這些縮進位置跟邏輯相關。尤其是在有大量的ifelse或者for循環等等的嵌套邏輯的時候,如果縮進錯了,可能會直接讓人把程序的邏輯讀錯。所以我拿到別人的代碼,第一件事情就是整理縮進。我見過一些比較優秀的頁面工程師,他們會在div結束的位置用注釋寫上這個div的id,這樣層級關系就一目了然了。
4,不斷重構。隨著程序的不斷修改,有些部分會不斷的增長,原來看著清晰的架構可能因為問題的復雜而慢慢模糊,也可能被修正bug的權宜之計弄的面目全非。不信你找一個經過多次修改的程序看看,是不是滿目瘡痍,是不是都很難認出是你自己的作品了。這在多人參與的項目中更加嚴重,每個人有不同的代碼風格,經過多次雜交后,你肯定認不出你的代碼是騾子是馬,還是四不像了。隨著程序的慢慢成長,原來有些函數體會慢慢膨脹,需要拆分;有些原來簡單的功能塊四處都需要,應該被提煉成函數或者方法,等等。現在不重構,未來等到代碼復雜到無法控制的時候,重構的工作就會變得更加困難。我見過最強的案例是,一個幾千行的電子辭典配套聯機軟件,經過無數次的改版,變成了一個幾乎無法維護的主窗體的cpp有1萬8千行的怪物。最后經過復雜的重構,才變成一個出新版本只需要新增一個驅動程序的可以維護的幾千行的程序。
郝培強:銀杏技術咨詢創始合伙人,網名Tinyfool,技術方向是全文檢索,搜索引擎優化,網站架構設計等。 銀杏技術咨詢的主要業務是幫助客戶的網站改進技術,提高網站性能和反應速度,解決門檻性技術問題,從而提高用戶滿意度。
關于郝培強:www.yinxingtech.com/team.htm
關于銀杏技術咨詢:www.yinxingtech.com/
我就是初學者,我覺得講的很是有道理,轉到這里,大家共同看看。
也為要做頁面驗證,需要用到js,發現了一個問題。
在js里,有indexOf 這樣的方法,卻沒有像java一樣的startsWith 或者 endsWith 這樣的方法。
研究了半天,在js里,通通可以用 indexOf()!=-1 來代替。要記得,這個indexOf()!=-1 和 indexOf()>0 得到的結果是不同的。
比如下面的例子:(功能:希望輸入的值不包含空格)
function checkSize(str){
if(str.indexOf(' ')!=-1){
alert("不能含有空格");
}
這個方法可以檢查到 str 的開頭,中間,結尾是不是空格
可是如果選擇了 下面這個方法,卻只能檢測到 str 中間 和 結尾的空格,檢測不到str開頭的空格。
function checkSize(str){
if(str.indexOf(' ')>0){
alert("不能含有空格");
}
很奇怪的。呵呵。。。。
還不是很了解js,以后還會更新
呵呵,看到這個標題,我自己都在笑,寫了3個月的代碼了,連這個問題還搞不清呢
沒有計算機基礎的人就是這樣子的。
我沒有時間從頭學起,只能現學現用,現用現學了
今天在工作的時候,將 my eclipse 項目下的一個 jsp 移動了位置(從WebRoot 下,移入到 WebRoot 下的一個package 下面),竟發生了找不到 servlet的情況。呵呵...
想著就是路徑問題,在jsp頁面 表單里的 action 屬性了,加了 ../ ,ok了呢。
所以就趁這次的機會,補充一下路徑的知識。
*****************************************************************************
相對路徑:相對路徑就是指由這個文件所在的路徑引起的跟其它文件(或文件夾)的路徑關系。
使用相對路徑可以為我們帶來非常多的便利。
index.htm要想鏈接到01.htm這個文件,正確的鏈接應該是:<a href=web/article/01.htm>鏈接文字</a>,
這是標準的相對路徑。
反過來,01.htm要想鏈接到index.htm這個文件,在01.htm文件里面應該寫上這句:
<a href=../../index.htm>返回首頁</a>。這里的../表示向上一級。
至此,你已經了解相對路徑的概念了,就是這樣簡單明了。如果你還是沒有看明白,
以前學過DOS嗎?它的“CD 文件夾名”和“CD..”命令用過嗎?這是同理的。
注意:相對路的文件夾符號是斜杠:/
<a href=/web/article/01.htm>鏈接文字</a>這樣的鏈接,在href后面的第一個斜杠表示根目錄,
通常我們要特別慎用這種方式
所以我剛才錯的地方是,把jsp 從webroot 移動到其下的一個package里后,
沒有改變這個jsp里form的action的屬性。
所以當要發生action時,只會在當前目錄下找 addUserinfo 這個servelt,
而當我改變了這個jsp form里的 action 屬性,
從 action="addUserinfo" ---更改為----> action="../addUserinfo"
加上了../ ,就表示,會先找到了這個jsp頁面所在的上級目錄,然后再去找 web.xml 配置的 addUserinfo
“../”代表當前位置(即該鏈接所在文件所處的文件夾)的上一級文件夾。
*****************************************************************************
二、絕對路徑:
在www中(廣域網),以http開頭的鏈接都是絕對路徑。
*****************************************************************************
三、物理路徑
物理路徑指的是某一臺計算機本地的路徑,以盤符開頭,例如C:\ 、D:\temp等等。
ASP的數據庫連接中,只能連接物理路徑,而不能連接相對路徑,
所以需要用server.mappath對象把相對路徑轉化成物理路徑。
<html></html> 創建一個HTML文檔
<head></head> 設置文檔標題和其它在網頁中不顯示的信息
<title></title> 設置文檔的標題
<h1></h1> 最大的標題
<pre></pre> 預先格式化文本
<u></u> 下劃線
<b></b> 黑體字
<i></i> 斜體字
<tt></tt> 打字機風格的字體
<cite></cite> 引用,通常是斜體
<em></em> 強調文本(通常是斜體加黑體)
<strong></strong> 加重文本(通常是斜體加黑體)
<font size="" color=""></font> 設置字體大小從1到7,顏色使用名字或RGB的十六進制值
<BASEFONT></BASEFONT> 基準字體標記
<big></big> 字體加大
<SMALL></SMALL> 字體縮小
<STRIKE></STRIKE> 加刪除線
<CODE></CODE> 程式碼
<KBD></KBD> 鍵盤字
<SAMP></SAMP> 范例
<VAR></VAR> 變量
<BLOCKQUOTE></BLOCKQUOTE> 向右縮排
<DFN></DFN> 述語定義
<ADDRESS></ADDRESS> 地址標記
<sup></SUP> 上標字
<SUB></SUB> 下標字
<xmp>...</xmp>固定寬度字體(在文件中空白、換行、定位功能有效)
<plaintext>...</plaintext>固定寬度字體(不執行標記符號)
<listing>...</listing> 固定寬度小字體
<font color=00ff00>...</font>字體顏色
<font size=1>...</font>最小字體
<font style ="font-size:100 px">...</font>無限增大
◆◆◆◆◆◆◆◆◆◆◆◆◆◆《〈格式標志〉》◆◆◆◆◆◆◆◆◆◆◆◆
<p></p> 創建一個段落
<p align=""> 將段落按左、中、右對齊
<br>換行 插入一個回車換行符
<blockquote></blockquote> 從兩邊縮進文本
<dl></dl> 定義列表
<dt> 放在每個定義術語詞前
<dd> 放在每個定義之前
<ol></ol> 創建一個標有數字的列表
<ul></ul> 創建一個標有圓點的列表
<li> 放在每個列表項之前,若在<ol></ol>之間則每個列表項加上一個數字,
若在<ul></ul>之間則每個列表項加上一個圓點
<div align=""></div> 用來排版大塊HTML段落,也用于格式化表
<MENU> 選項清單
<DIR> 目錄清單
<nobr></nobr> 強行不換行
<hr size="9" width="80%" color="ff0000">水平線(設定寬度)
<center></center> 水平居中
◆◆◆◆◆◆◆◆◆《〈鏈接標志表格標志〉》◆◆◆◆◆◆◆◆◆◆◆◆◆◆
<a href="URL"></a> 創建超文本鏈接
<a href="mailtEMAIL">
</a> 創建自動發送電子郵件的鏈接
<a name="name"></a> 創建位于文檔內部的書簽
<a href="#name"></a> 創建指向位于文檔內部書簽的鏈接
<BASE> 文檔中不能被該站點辨識的其它所有鏈接源的URL
<LINK> 定義一個鏈接和源之間的相互關系
◆◆◆◆◆◆◆◆鏈接標記注解:◆◆◆◆◆◆◆◆◆◆◆◆
◆target="..."決定鏈接源在什么地方顯示(用戶自定義的名字,_blank,_parent,_self,_top
◆rel="..."發送鏈接的類型
◆rev="..."保存鏈接的類型
◆accesskey="..."指定該元素的熱鍵
◆shape="..."允許我們使用已定義的形狀定義客戶端的圖形鏡像(default,rect,circle,poly
◆coord="..."使用像素或者長度百分比來定義形狀的尺寸
◆tabindex="..."使用定義過的tabindex元素設置在各個元素之間的焦點獲取順序(使用tab鍵使元素獲得焦點)
◆◆◆◆◆◆◆◆表格標記注解:◆◆◆◆◆◆◆◆◆◆◆◆
<table></table> 創建一個表格
<tr></tr> 表格中的每一行
<td></td> 表格中一行中的每一個格子
<th></th> 設置表格頭:通常是黑體居中文字
<table cellspacing=""> 設置表格格子之間空間的大小
<table border=""> 設置邊框的寬度
<table cellpadding=""> 設置表格格子邊框與其內部內容之間空間的大小
<table width=""> 設置表格的寬度。用絕對像素值或總寬度的百分比
<table align=""> 設置表格格子的水平對齊方式(left,center,right,justify)
<tr align=""> 設置表格格子的水平對齊方式(left,center,right,justify)
<tr valign=""> 設置表格格子的垂直對齊方式(baseline,bottom,middle,top)
<td colspan=""> 設置一個表格格子跨占的列數(缺省值為1)
<td rowspan=""> 設置一個表格格子跨占的行數(缺省值為1)
<td nowrap> 禁止表格格子內的內容自動斷行
<CAPTION></CAPTION> 表格的標題
<COLGROUP></COLGROUP> 定義多個列為一組列
<TABLE></TABLE> 創建一個表格
<THEAD></THEAD> 定義表格的頁眉
<COL> 定義一個列組中的列,以便對它們能夠同時設置有關屬性
<TBODY></TBODY> 定義一個表格的實體
<TFOOT></TFOOT> 定義一個表格的頁腳
◆◆◆◆◆◆◆◆◆◆◆◆《表單標志》◆◆◆◆◆◆◆◆◆◆◆
<form></form> 創建表單
action="..."接收數據的服務器的URL
method="..."HTTP的方法(get, post)。其中get是被反對使用的
enctype="..."指定MIME(Internet媒體類型)
onsubmit="..."當提交表單時發生的內部事件
noreset="..."在重新設置表單時發生的內部事件
target="..."決定把內容顯示在什么地方(_blank, _parent, _self, _top
<select multiple name="name" size=""></select> 創建滾動菜單,size設置在需要滾動前可以看到的表單項數目 <option> 設置每個表單項的內容
<select name="name"></select> 創建下拉菜單
<textarea name="name" cols=40 rows=8></textarea> 創建一個文本框區域,列的數目設置寬度,行的數目設置高度
<input type="checkbox" name="name"> 創建一個復選框,文字在標簽后面
<input type="radio" name="name" value=""> 創建一個單選框,文字在標志后面
<input type=text name="foo" size=20> 創建一個單行文本輸入區域,size設置以字符串的寬度
<input type="submit" value="name"> 創建提交(submit)按鈕
<input type="image" border=0 name="name" src="name.gif"> 創建一個使用圖象的提交(submit)按鈕 <input type="reset"> 創建重置(reset)按鈕
<BUTTON></BUTTON> 創建一個按鈕
disabled="..."把按鈕的狀態設置為不能
name="..."按鈕的控制名 value="..."按鈕的值
type="..."按鈕的類型(button, submit, reset)
<FIELDSET></FIELDSET> 把相互關聯的控件組合成一組
<ISINDEX> 提示用戶輸入
<LABEL></LABEL> 為一個控件提供標簽
<LEGEND></LEGEND> 為FIELDSET元素指定一標題
<SELECT></SELECT> 為用戶做選擇創建各個選項
<TEXTAREA></TEXTAREA> 創建一個允許用戶多行輸入的區域
◆◆◆◆◆◆◆◆◆◆◆◆◆◆表單注解:◆◆◆◆◆◆◆◆◆◆◆◆◆◆
type="..."用于輸入控件的類型(text,password,checkbox,radio,submit,reset,file,hidden,image,button)
name="..."控件的控制名(要求是除了submit和reset之外的任何名字)
value="..."控件的初始值
checked="..."把一個單選鈕設置為選中的狀態
disabled="..."把控件的狀態設置為不能使用
readonly="..."只對輸入密碼的文本框使用
size="..."表示以像素為單位的除了文本框和密碼框控件之外的其它控件的寬度,它是用來指定字符的數目 src="..."一個圖像控件的URL
maxlength="..."指定可以輸入的最多的字符數目
alt="..."另外一種文本描述
usemap="..."到客戶端圖形鏡像的URL
align="..."被反對。控制對齊方式(left, center, right, justify)
tabindex="..."通過定義的tabindex值確定在不同元素之間獲得焦點的順序
onfocus="..."當元素獲得焦點時發生的事件
onblur="..."當元素失去焦點時發生的事件
onselect="..."當元素被選中時發生的事件
onchang="..."當元素狀態被改變時發生的事件
accept="..."允許上載的文件類型
◆◆◆◆◆◆◆◆◆◆◆◆◆◆《幀標志》◆◆◆◆◆◆◆◆◆◆◆◆◆◆
<frameset></frameset> 放在一個幀文檔的<body>標簽之前,也可以嵌在其他幀文檔中
<frameset rows="value,value"> 定義一個幀內的行數,可以使用絕對像素值或高度的百分比
<frameset cols="value,value"> 定義一個幀內的列數,可以使用絕對像素值或寬度的百分比
<frame> 定義一個幀內的單一窗或窗區域
<noframes></noframes> 定義在不支持幀的瀏覽器中顯示什么提示
<frame src="URL"> 規定幀內顯示的HTML文檔
<frame name="name"> 命名幀或區域以便別的幀可以指向它
<frame marginwidth=""> 定義幀左右邊緣的空白大小,必須大于等于1
<frame marginheight=""> 定義幀上下邊緣的空白大小,必須大于等于1
<frame scrolling=""> 設置幀是否有滾動欄,其值可以是"yes","no" 或"auto"
<frame noresize> 禁止用戶調整一個幀的大小
<IFRAME></IFRAME> 創建一個內聯的幀
scr="..."定義在幀中顯示的內容的來源
frameborder="..."定義幀之間的邊界(0或1)
align="..."被反對。控制對齊方式(left, center, right, justify)
height="..."幀的高度 width="..."幀的寬度
marquee>...</marquee>普通捲動
<marquee behavior=slide>...</marquee>滑動
<marquee behavior=scroll>...</marquee>預設捲動
<marquee behavior=alternate>...</marquee>來回捲動
<marquee direction=down>...</marquee>向下捲動
<marquee direction=up>...</marquee>向上捲動
<marquee direction=right></marquee>向右捲動
<marquee direction="left"></marquee>向左捲動
<marquee loop=2>...</marquee>捲動次數
<marquee width=180>...</marquee>設定寬度
<marquee height=30>...</marquee>設定高度
<marquee bgcolor=FF0000>...</marquee>設定背景顏色
<marquee scrollamount=30>...</marquee>設定捲動距離
<marquee scrolldelay=300>...</marquee>設定捲動時間
<img src=""> 插入圖片,參數有:width="寬",alt="說明文字",height="高",boder="邊框"
◆◆◆◆◆◆◆◆◆◆◆◆◆◆《 文檔整體屬性標志》◆◆◆◆◆◆◆◆◆◆◆◆◆◆
<body bgcolor=""> 設置背景顏色。使用名字或RGB的十六進制值
<body background=""> 設置背景圖片
<body bgsound=""> 設置背景音樂
<body bgproperties="fixed">
固定背景圖片(IE適用)
<body text=""> 設置文本顏色。使用名字或RGB的十六進制值
<body link=""> 設置鏈接顏色。使用名 字或RGB的十六進制值
<body vlink=""> 設置已使用的鏈接的顏色。使用名字或RGB的十六進制值
<body alink=""> 設置正在被擊中的鏈接的顏色。使用名字或RGB的十六進制值
<body topmargin=""> 設置頁面的上邊距 <body leftmargin=""> 設置頁面的左邊距
換段: <p>
換行 : <br>
鏈接文字: <a href="鏈接地址">在此輸入文字</a>
鏈接發郵件: <a href=" mailto:webmaster@fm365bbs.com">在此輸入文字</a>
文字居中: <center>在此輸入文字</center>
文字加粗體效果: <b>在此輸入文字</b>
文字加傾斜效果: <i>在此輸入文字</i>
文字加下劃線效果: <u>在此輸入文字</u>
改變文字大小: <font size=4>在此輸入文字</font>
改變字體: <font face=宋體>在此輸入文字</font>
改變文字顏色: <font color=red>在此輸入文字</font>
文字上標: <sup>在此輸入文字</sup>
文字下標: <sub>在此輸入文字</sub>
文字閃爍效果: <blink>在此輸入文字</blink>
列表方式: <ul>開始列表
<li>列表項目</li>
</ul>
貼圖片: <img src="鏈接地址">
滾動文字特效: <marquee>在此輸入文字</marquee>
插入一個背景聲音文件: <img ="鏈接地址">
插入音樂或視屏播放: <embed name=player1 src="鏈接地址" type=audio/x-pn-realaudio-plugin width="填數字" height="添數字" border="添數字" autostart="true"></embed>
按鈕效果: <input type=button value="按鈕上的字" onclick=alert("按后框里的字")></span>
貼flash文件: <embed src=鏈接地址 width="填數字" height="填數字">
摘要: 因為我連html都沒學過,只是平時見到的時候,記得些許,知道大概的格式。
這里有一個內容比較多的html頁面,作為記錄,用的時候參考參考。
<html>
<head>
<title>
&nb... 閱讀全文
如果你常常用 Eclipse 或者 MyEclipse ,那你就會跟我一樣,會在保存頁面的時候經常遇到這樣的提示
some character can not mapped using "iso-8859-1" character encoding ......
以前上學的時候,老師講過類似的解決辦法,就是
1.右鍵選種 該項目,或該文件
2.點擊 properties ,看到左邊 第一個 選項 info 了吧。
左邊就是該選項的詳細信息
3.更改里面的 Text File Encoding
選擇 other 里面的 utf-8 (推薦嘍)
然后ok了。
以前總是編譯一些java源文件或者 jsp 文件。好像這個問題也都能解決
但是,今天用 MyEclipse 編寫了一個后綴名為 .js 的文件,又碰到了這個問題,就發現這個方法不再管用了
上網google了下,,(可真是要感激google啊)發現了其他的解決之道,嘗試后,OK了,記錄到這里,跟大家共勉。
方法一: 使用eclipse的jinto插件編輯,會自動調用java的native2ascii把文件轉碼。
方法二: 1. Eclipse-->Preferences..(MyEclipse --> Window -->Preferences:)
2. 在“type filter text“的框框里輸入”Content Types
3. 輸入完后,Eclipse 會自動進行查找,然后會在右邊顯示出 Content Types 的屬性
4. 點擊右邊的Text,選擇 Java Properties File,看一下 下面的兩個選項
<1>:File associatios: ----- 看看里面有沒有 你需要的文件類型,
默認的是*.porperties(locked)
我需要的*.js ,所以這時點擊 Add 按鈕,自己添寫file type,
我寫的是 *.js 哦,點擊ok
<2>:Default encoding: ----- 這里默認的值不是utf-8,
也是需要自己更改,刪除掉原來的,寫上
你需要的,然后點擊Update ,就好了。
這里我只嘗試 方法二,所以也寫得比較詳細(呵呵,應該說改的比較詳細,因為是改別的前輩的)。
有朋友一定喜歡方法一的,可以自己嘗試下。
很多時候,程序都不是像前兩篇寫的那么簡單,<如何用My Eclipse 發布 帶mianfes.mf 的 jar 文件(一) >
<如何用My Eclipse 發布 帶mianfes.mf 的 jar 文件(二) >
很多時候,程序都要用到第三方jar文件,比如最常用的,跟MS-SQLSERVER 交互的就需要用到msbase.jar,mssqlserver.jar,msutil.jar這三個驅動。
在eclipse中,我們都是依靠 右鍵單擊項目,在 Java bulid path 中添加 來完成。
明明在eclipse中 測試成功的項目,發布成jar包后就是沒法用。 這里的原因就是這些第三方jar文件沒加載進來。如果你在dos控制臺下運行你的jar包,也會看到這樣的提示。
可是,到底這些第三方jar文件要配置到哪里呢??這個問題也是困惑了我很久的。
在網路上看到,很多人說,在 環境變量 里的 classpath 里進行配置,配置的時候要寫絕對路徑哦,要加上第三方jar文件的文件名哦。我試了,依然都找不到呢
還有人說,在dos 下運行的時候 記得要 手動指定,比如: -classpath 或 -cp ,我也試了,還是不行的。
后來找到一篇很好的文章,解決了我的困惑。<這篇文章我也有轉載到這里,名字是:jar參數運行應用時classpath的設置方法 >
當用java -jar yourJarExe.jar來運行一個經過打包的應用程序的時,你會發現如何設置-classpath參數應用程序都找不到相應的第三方類,報ClassNotFound錯誤。
實際上這是由于當使用-jar參數運行的時候,java VM會屏蔽所有的外部classpath,而只以本身(yourJarExe.jar)的內部class作為類的尋找范圍。
原來如此呢
解決的辦法可以參看那篇文章,仔細看哦,我看了好幾遍的...(呵呵...沒辦法啊,我很笨的呢)
另外,還有一個辦法就是網路上經常說的,做個exe文件吧。雖然執行的時候,依然需要 jre的 環境,但至少有一個好處就是,它可以很方便的將 第三方jar文件捆綁進去...
關于這個exe文件的制作,不瞞大家說,我又是一通有研究,唉.....有時候,我真的很郁悶,為什么別人一看就懂的問題,我卻要花幾倍的時間,我確實是不上道啊...........
下面我就來說說我自己的親身體會吧。
我選擇的 exe 封裝 工具是 JSmooth ,這個東東雖然好用,可是有兩個地方還是很讓人惱火的。
一個就是,最好把你要生成exe的可執行jar文件,和你用到的第三方jar文件,還有圖片(用來設置exe需要的),這幾樣通通放到一個目錄下。
在一個就是,下面選擇mianfest.mf文件時,必須先選擇 地下的 embedded jar,這個選好了,在mianfest.mf的瀏覽里你才能看到 要選的 main 主文件
下面看我自己的實踐體驗:
1,首先你得去下在一個 JSmooth,很多很多的。(放心吧,我都能下載的到,你一定也可以)
安裝后,在文件夾下,雙擊這個文件 jsmoothgen.exe,看到以下的界面 (我的是 jsmooth-0.9.9-7哦)
這是個歡迎界面了。
2.點擊右邊的 Skeleton 如圖:

Skeleton Selection 我選擇的是 Windowed Wrapper
Skeleton Properties 選擇 Launch java app in the exe process
選擇好了后,接著點擊右邊的 Executable
3. Executable 界面:
在下面的界面中,Executable Settings 里 有三個選項(鼠標滑動到小問號上,就會有說明德)
<1>. Executable Binary: 寫一下你希望生成的 exe文件名,記得要帶著擴展名的。這里只寫名字即可,不用管路徑。
<2>. Executable Icon: 選擇一副圖片 作為 即將生成的exe文件的 圖標,圖片尺寸好像有規定,不過我自己試了大的圖片,除了有些變形外,還是可以用的。
<3>. Current directory: 這個選項我沒選過,默認空就好了。
4.點擊Application,看到下面的界面:
這里要強調一點就是:不能先去選擇Main class,你點擊最右邊的Browser,會發現無法選擇的。
需要先選擇下面的 Embedded jar,---- Browser,--- 選中后,在反過來選擇 Main class
這兩個選擇好了后,在最下面有一個 Classpath 選項,請把你用到的第三方jar文件添加至此處。
然后基本就可以了

5.其實下面還有一個 JVM Selection ,和 JVM Config,這兩個,如果你是在自己的機器上使用,這兩個基本默認就好,如果你運行 這個exe 的環境和你的機器上的jre版本不同,那就要在設置了,我也正在看這里,因為我今題那就遇到了此問題。會在補充的。
6.前面設置都ok了,就可以選擇菜單欄里的project 下的 compile,這時候,會跳出一個對話話,問你要保存exe文件要保存到哪里,你選擇一下,其他的不用動。
這里保存的其實是兩個文件,一個是 exe 文件,一個是 相對應的 同名的xml 文件,在那個xml文件里 有這個exe的信息。
去你生成exe的路徑下檢查一下吧,應該是可以用的了。
上面那篇文章 《如何用My Eclipse 發布 帶mianfes.mf 的 jar 文件(一)》
講了用My Eclipse 發布jar文件的步驟,這里可以在做一個,這個程序不依賴 dos 的控制臺,所以發布好的jar文件是可以雙擊直接運行的哦。
比如程序:
import javax.swing.JOptionPane;
public class Output {
/**
* @param args
*/
public static void main(String[] args) {
JOptionPane.showMessageDialog(null,"aaaaaa");
}
}
按照前一篇的方法 將 其發布成 jar 文件,然后雙擊該文件,就能夠直接運行,運行效果如圖:
如果你已經可以 發布這樣的jar包了,那么下面就可以 看下我的 第三篇 ,帶第三方jar文件(比如常用的sqlserver的驅動jar:mssqlserver.jar...)的項目,這樣的項目 打成jar包后,如何運行。
關于這個jar文件,我可是費了很多的時間,力氣,和腦細胞,雖然只是這么一個小小的問題,可的確不是讓人很省心的事情。
網絡上雖然有不少這樣的文章,但當一個新手看的時候,還是會發現 很多情況說的不夠明確,測試也不會成功,這里就先將一個簡單的程序打成jar文件,下面提到的方法都是我親自實踐過的。
可以看到我的這篇文章的title并沒有起成“如何用My Eclipse 發布 能夠雙擊運行的 jar 文件”,而是寫成了帶 mianfest..mf 的jar文件。
這是因為 有的jar文件 雖然是包含了 mianfest.mf 的,但是,你雙擊它卻依舊看不到 程序的 運行結果。
因為這個程序的運行結果需要 依靠 dos窗口。
比如這樣一段程序:-------該程序在項目test下,test下只有這一個類文件
public class Output {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("aaaaaaaa");
}
}
讓我們來試試:
1.右鍵選中你的項目,選擇 export,選擇JAR file
2.選擇Next ,然后選擇你要打包的項目,畫上小對號就好。然后在底下 JAR file 那里選擇你要 存儲 jar文件的路徑,另外就是自己給你的jar文件起個名字,這里我就存在了D盤下,名字就叫test.jar
3.然后接著點擊 Next,會出現下面的界面,這里默認設置就好,這兩個小對號是說帶著編譯提示的錯誤和警告export。目前我這里每次都是默認的設置
4.接著點擊Next,這里就要注意選擇 Mianfiest.mf 文件了,點擊下面 Main class 右邊的Browser ,會跳出一個窗口,讓你選擇 你的main類(主程序,就是java文件里有main方法的那個類),我這里的是Output,選中Output,然后點擊小窗口上的OK
5.選擇完畢后,應該就是這個樣子的:
6. 點擊 Finish ,結束了哦。
用My Eclipse 發布jar文件的步驟 到這里就結束了呢。
*********************************************************************************
然后就可以在D盤下找到 test.jar 這個文件
可是你雙擊運行它,并沒有得到什么反應,因為該程序的運行結果是依靠 控制臺的。所以你 從運行--cmd--進入dos下。
然后到test.jar的目錄下,(這里是d盤下),運行 java -jar test.jar ,就能夠看到程序運行的結果了。
|