你在<package name="struts2" extends="struts-default"> 中加一個(gè)namespace試試
<package name="struts2" namespace="/" extends="struts-default">
@亮
你的action路徑寫(xiě)錯(cuò)了,,在/ namespace里沒(méi)有這個(gè)action
@abcdefgxw
我是唯物主義者,更不是基督信徒,不相信有上帝,還是相信有外星人吧,哈哈。感謝你關(guān)注我的文章!
@王大力
這也更象windows下的程序了,如果用戶不了解java,在windows下執(zhí)行jar文件才更奇怪呢。哈哈。 象jbuilder等很多windows版的java系統(tǒng)都是這樣做的。這就叫入鄉(xiāng)隨俗!
@心夢(mèng)帆影
原來(lái)是這樣啊,這就沒(méi)辦法了,已經(jīng)做那么多了。不過(guò)在struts2中最好還是使用.action或其他的.xxx來(lái)作為后綴。這樣不容易與servlet等其他內(nèi)容沖突。沒(méi)有后綴的url盡量少用。struts2官方建議所有的web資源都使用.action或其他后綴來(lái)訪問(wèn)。這樣有利于struts 2管理。盡量不要直接訪問(wèn)servlet、jsp等內(nèi)容。
到request.getParameter已經(jīng)和socket沒(méi)關(guān)系了,servlet容器會(huì)分析http請(qǐng)求消息,并將分析的結(jié)果保存在HttpServletRequest對(duì)象中。而getParameter方法就是從HttpServletRequest對(duì)象中獲得相應(yīng)的值。
是的,ie調(diào)用了windows的socket api,java的socket在windows下也是調(diào)用了windows的api。
看看http協(xié)議的定義就知道了,是通過(guò)http消息體發(fā)送post請(qǐng)求數(shù)據(jù)的
http是建立在TCP基礎(chǔ)上的,socket只是通信框架,并不是協(xié)議。
struts 2的過(guò)濾器只是選擇由struts 2處理的URL,與其他的無(wú)關(guān),不知你說(shuō)的struts2.1.6的默認(rèn)的路徑映射功能是指什么?
@心夢(mèng)帆影
你項(xiàng)目中無(wú)后綴的是什么,是Servlet?設(shè)成.action不應(yīng)該有什么問(wèn)題。只有Action由Struts 2處理,其他的仍然由Servlet容器處理。我也用的是struts2.1.6,沒(méi)什么問(wèn)題。但我的項(xiàng)目中沒(méi)有無(wú)后綴的。全都是.action。就算是靜態(tài)頁(yè)面,也映射成了.action。
將<url-pattern>的值改成*.action也可以。FCKEditor也有這樣的問(wèn)題。個(gè)人感覺(jué)改成*.action更好,否則需要在struts 2的action前前web,有些麻煩。
還有很多個(gè)20呢,哈哈,一點(diǎn)點(diǎn)來(lái)
@小毅
這個(gè)方法不光是安裝程序哦。還有一個(gè)實(shí)時(shí)更新的功能,如果服務(wù)端的程序更新的,就不用每個(gè)客戶端再次分發(fā)一遍安裝程序了,只需要再運(yùn)行jnlp文件就可以直接下載了。哈哈
@MC
對(duì),這個(gè)寫(xiě)錯(cuò)了,已經(jīng)改過(guò)來(lái)了。感謝MC的提醒。哈哈
stub不是用來(lái)修改的,是用來(lái)調(diào)用了,就將stub當(dāng)成普通類(lèi)好了(普通的Java類(lèi)怎么用,stub類(lèi)就怎么用)。
你的異常我沒(méi)遇到過(guò)。我使用其他方法只是做測(cè)試。實(shí)際應(yīng)用還是用stub的。否則會(huì)很麻煩。
不使用stub有時(shí)很麻煩。我一般很少使用其他方式調(diào)用。你的那段代碼就算調(diào)試成功,以后用時(shí)也會(huì)很麻煩,只是調(diào)用了一個(gè)方法,弄這么一大堆代碼。關(guān)于RPC還有有其他方式,只需要了解一下原理就可以。至于真正開(kāi)發(fā)時(shí),一般都用stub。你見(jiàn)用過(guò).net調(diào)用webservice用這么多代碼嗎?哈哈
struts 2的Action屬性可以讀取請(qǐng)求參數(shù)值,如果是變化的,可以通過(guò)請(qǐng)求參數(shù)值提交。
輸入jar -help,看看幫助
我后面還一個(gè)“.”呢,你沒(méi)輸入
@菜鳥(niǎo)
你看一看jar命令應(yīng)該如何用
re: 銀河系列原創(chuàng)教程 銀河使者 2009-05-19 19:23
jni還沒(méi)有,也許以后會(huì)有的,哈哈
@Harold.Zhang
我的有啊,不知你是怎么生成的,編寫(xiě)和我的一樣嗎?
你的get_return可以返回值嗎?
是的,題目打錯(cuò)了,改過(guò)來(lái)了,哈哈,想寫(xiě)網(wǎng)絡(luò),不知怎么著寫(xiě)成數(shù)據(jù)庫(kù)了。暈
re: 如何成為優(yōu)秀員工! 銀河使者 2009-05-18 12:56
如果自己成功了,說(shuō)什么都是正確的,如果沒(méi)有成功,那么只有默默地把自己變成一個(gè)成功者。再發(fā)表完全屬于自己的一番言論,也許會(huì)變成真理。想想bill gates如果沒(méi)有成功,會(huì)有這些多bill gates成功法則、成功箴言這樣的書(shū)嗎?
成功沒(méi)有固定的公式,任何成功法則都是私有的(private),別人不可訪問(wèn),當(dāng)然,自己的后人也不可能繼承。其他人要想從自己身上學(xué)到真正的成功法則,就只有根據(jù)外在的表現(xiàn)自己領(lǐng)悟了。
SOAP消息是底層的信息,除非提供了接口,否則無(wú)法獲得這些信息。我一般是通過(guò)模塊獲得soap消息,但通過(guò)其他方式還沒(méi)試過(guò)。
你的程序有語(yǔ)法錯(cuò)誤,你是手工編譯的嗎?還是用eclipse?
出現(xiàn)什么異常,請(qǐng)說(shuō)清楚一些
那個(gè)庫(kù)沒(méi)引用。你可以引用axis2中的所有的jar文件試試
axis2把有些簡(jiǎn)單類(lèi)型封裝到一個(gè)類(lèi)中了,你看看自動(dòng)生成的stub類(lèi),里面有類(lèi)型所指定的類(lèi),你建立個(gè)對(duì)象,賦一下值就可以了。
要想在services.xml中加中文,需要將編碼設(shè)為UTF-8或GBK。你怎么部署的?再刷新一下,或重啟tomcat,將tomcat的work目錄清空看看
@亦凡
你用的是jdk的哪個(gè)版本,tomcat和開(kāi)發(fā)webservice是用的同一個(gè)jdk版本嗎?
@dennis
實(shí)際上,學(xué)習(xí)并沒(méi)有絕對(duì)的重點(diǎn),不管是理論(如tcp/ip、網(wǎng)絡(luò)層等)或是api都需要會(huì),不會(huì)哪個(gè)都寫(xiě)不出優(yōu)秀的程序。但個(gè)人認(rèn)為在學(xué)習(xí)理論之前,應(yīng)該先了解一下api,也就是說(shuō),在寫(xiě)出優(yōu)秀的程序之前,先要能寫(xiě)出程序。如果連helloword都寫(xiě)不出來(lái),又怎么談高質(zhì)量的程序呢?而本系列文章就是先讓讀者能寫(xiě)出程序,至于寫(xiě)出優(yōu)秀的程序,那并不是本系列文章的目的。
還有就是,學(xué)習(xí)網(wǎng)絡(luò)編程的重點(diǎn)應(yīng)該放在實(shí)踐上,不管是學(xué)的tcp/ip,還是學(xué)的api、socket這些東西,都需要將它們轉(zhuǎn)換成代碼才可以。否則學(xué)了只能應(yīng)付考試。因此,無(wú)論是api,還是網(wǎng)絡(luò)理論,都應(yīng)該是重點(diǎn)。另外,api可不是很簡(jiǎn)單的。并不是有一堆方法,調(diào)用就完了。有很多參數(shù)和調(diào)用方法是和理論聯(lián)系非常緊密的。因此,最好理論和api一起學(xué),否則用什么實(shí)踐呢?直接訪問(wèn)網(wǎng)卡驅(qū)動(dòng)?
我這個(gè)系列文章才剛開(kāi)始,估計(jì)得有上百篇文章,還沒(méi)進(jìn)入大規(guī)模編程的階段。另外,你說(shuō)的熟悉什么 TCP/IP協(xié)議、并發(fā)模型這些都有些抽象。實(shí)際上,不管是網(wǎng)絡(luò)編程,還是多核編程,關(guān)鍵看你做出來(lái)什么。至于熟悉這個(gè)或那個(gè),只是知識(shí)量而已。只有做出有影響力的產(chǎn)品才是真的。還有并不一定技術(shù)高深就是好的,關(guān)鍵看能提供多少用戶價(jià)值。
當(dāng)然,如果發(fā)布到linux/unix,也可以采用類(lèi)似的方法
其實(shí)要將java程序變成exe不需要這么麻煩,只需要使用任何一種可以生成exe文件的語(yǔ)言,如C#、VB、delphi、C++,編寫(xiě)一個(gè)簡(jiǎn)單的沒(méi)有form的exe程序。然后在程序中通過(guò)windows api函數(shù)調(diào)用javaw -jar my.jar(my.jar是一個(gè)java GUI程序)即可。在運(yùn)行時(shí)只需要執(zhí)行這個(gè)exe就可以了。看看我寫(xiě)的文章:
http://www.aygfsteel.com/nokiaguy/archive/2009/04/15/265742.html弄成exe的好處是可以使java程序更符合windows用戶的習(xí)慣。否則就得執(zhí)行bat或cmd文件,或直接執(zhí)行jar包。這對(duì)于windows用戶來(lái)說(shuō)比較別扭。象很多基于java的程序在發(fā)布到windows上時(shí)都是使用的exe,而不是jar。
需要在web.xmll文件中加入下面內(nèi)容,加了吧?
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
這個(gè)改不了,但使用services.xml文件來(lái)發(fā)布webservice,就是name了。試試看
看看services.xml文件設(shè)置是否正確
在服務(wù)端的控件臺(tái)中,或eclipse的console里
@菜板
誰(shuí)說(shuō)的,你用的是哪個(gè)eclipse版本,我用的eclipse3.4,就是直接在可視化界面里設(shè)的,輸入了26個(gè)字母
輸入
http://192.168.0.171:8083/ppts/services/MyService?wsdl是為了生成wsdl文檔 。而輸入
http://192.168.0.171:8083/ppts/services/MyService,后面必須要加調(diào)用的方法才可以,如你的webservice里有一個(gè)方法叫g(shù)etName,沒(méi)有參數(shù),則可以調(diào)用
http://192.168.0.171:8083/ppts/services/MyService/getName,則會(huì)調(diào)用getName方法。在axis2生成的客戶端stub類(lèi)中只寫(xiě)了
http://192.168.0.171:8083/ppts/services/MyService,是因?yàn)樵诤竺娴恼Z(yǔ)句中處理了,使用了SOAP消息提交的getName請(qǐng)求。
為什么要導(dǎo)出再導(dǎo)入,是備份?直接修改成.abcdefghijklmnopqrstuvwxyz不就行了!
啟動(dòng)線程必須使用start方法,run方法是由系統(tǒng)負(fù)責(zé)調(diào)用的。如果直接調(diào)用run方法,并不是啟動(dòng)線程,而是直接調(diào)用了類(lèi)的一個(gè)普通方法,也就相當(dāng)于將run變成了一個(gè)普通的方法。
可以使用一個(gè)長(zhǎng)度為256的數(shù)組來(lái)保存字符的出現(xiàn)次數(shù),索引就是字符的ASCII,再用一個(gè)數(shù)組或鏈表保存字符出現(xiàn)的順序(保存了字符的ASCII,也就是前面數(shù)組的索引)