對JBuilder而言要在configure Runtimes中配置main class就需要有一個Application否則單個的dos程序是無法直接運行的(因為無法設置main class);
在Tomcat中使用外來的JSP程序
()用JBuilder來實現的方法是新建一個有含基本的JSP(在沒有特殊需求的條件下
可選用默認的最小化該JSP然後設置Server Enterprise即可在localhost:在JBiulder內部運行同時在D:\Tomcat\Tomcat \conf\Catalina\localhost目錄下
生成個文件在loacalhost:/該文件名 即可訪問JSP
()當要在D:\Tomcat\Tomcat \webapps\jspexamples下實現訪問JSP方法同Servlet而且需要Jsp的class文件只有通過JBIulder來編譯生成然後把class
文件放到D:\Tomcat\Tomcat \webapps\jspexamples\WEBINF\classes\org\apache\jsp下再把JSP文件放到D:\Tomcat\Tomcat \webapps\jspexamples的任一文件(都可自己另行創建)然後修改相關的WEBxml文件(按照目錄分級特點進行)
在對文件(特別是類名)的命名時要注意盡可能的不要用關鍵字進行命名對於以提供的名稱可以把首單詞改有代表意義的單詞
原來的<struts_template>使用<struts_nested>代替
在配置tomcat的時候要檢驗是否存在lib和classes文件
對於struts的運行模式是前台一個Jsp文件對do進行請求
而這個do是由一個action和actionform形式的class文件組成
且strutsconfig扮演兩者被jsp文件訪問的橋梁(由對該文件進行配置來實現)
注意tile_ref文件在數據轉遞的過程中的角色
在建立web molumer時要把build war設置成when building project or webapp
lib中的文件jar和xml在編譯的時候會自動產生而webinf中tld文件則需要另行向裡加
把strutsexample安裝(把war文件放到/webapps下啟動tomcat會自動安裝)用法jsp
在配置webxml文件的時候要新加 <initparam>
<paramname>definitionsconfig</paramname>
<paramvalue>/WEBINF/tilesdefsxml</paramname></initparam>到
<servlet>
<servletname>action</servletname>
<servletclass>orgapachestrutsactionActionServlet</servletclass> 下!
.STRUTS的制作流程
.建立一個JBiulder工程並進行命名
.建立一個Web Module(WAR)文件Create an empty Web Module依次選中最新的組件(servlet JSPStruts )
.把出現的在WebModule頁下的Tag Library都改為WEBINF/strutstiles
建立第一個jsp文件作為整個工程的啟動頁(並在選擇標簽(tag)是選擇各種標簽其中strutstemplate不要選)
依次建立其他的jsp文件即可
同時注意到每一個在jsp中引用自定義的包名是小寫因為jbuilder默認是小寫不管實際的情況可以通過編譯發現匯報錯但在對應的java文件不一樣必須嚴格一致
.建立actionform文件按默認即可
.建立action文件第一步可按默認action起名第二步是對strutsconfig 文件進行配置
.當對選項進行合理的設置後struts_configxml中會增加如下
<formbeans>
<formbean name=uploadForm type=secondstrutsUploadForm />
</formbeans>
<action input=/uploadjsp name=uploadForm path=/untitledAction scope=request type=secondstrutsUntitledAction validate=true />
但這通常不夠可以改寫如下
<formbeans>
<formbean name=uploadForm type=secondstrutsUploadForm />
</formbeans>
<actionmappings>
<action path=/upload forward=/uploadjsp />//就有在浏覽器上的uploaddo和action=uploaddoh或action=upload
<! Upload Action >
<action path=/uploadsubmit type=secondstrutsUploadAction name=uploadForm scope=request input=input>
<forward name=input path=/uploadjsp /> //這種方法可以使得actionFrom獲取表單的值
<forward name=display path=/displayjsp/>//然後進行請求操作會返回一個findmapping進行頁面的倒轉
//代表有多少個連續操作例如上面就是uploadjsp對displayjsp的請求訪問
</action>
.這個工程中的文件編譯後會在WEB_INF中生成xml文件並同時需要把*tld文件拷到該目錄下
.按一般的生成的strutsconfigxml文件中會有有關相應的xml文件
<plugin className=orgapachestrutsvalidatorValidatorPlugIn>
<setproperty property=pathnames value=/WEBINF/validatorrulesxml/WEBINF/validationxml />
</plugin>//通常沒有問題
<plugin className=orgapachestrutstilesTilesPlugin>
<setproperty property=definitionsconfig value=/WEBINF/tilesdefsxml />
</plugin>//通常會出現錯誤且該文件要自己編寫有關對其他的*configxml文件(非strutsconfigxml)見D:\Tomcat\Tomcat \webapps\tilesdocumentation\WEBINF中的一些該文件是與WEBINF同目錄的文件夾(例ass)中一些jsp文件相關的同時用一個大tilesassdefsxml來對將要ass 目錄下的顯示頁上所有的用到的do的文件的actionmapping進行描述(是通過用assxxxxx方式)目的是使得然後再在對應的structsassconfigxml中加入(tilesdefsxml與strutsconfigxml相對應)
<plugin className=orgapachestrutstilesTilesPlugin >
<setproperty property=definitionsconfig
value=/WEBINF/tilesdefsxml /WEBINF/tilesdocdefsxml />
<setproperty property=moduleAware value=true />
</plugin>
</strutsconfig>
和部分的actionmapping即可(在jbuiler中默認生成tilesdefsxml文件但在工程小的時候並不給他進行操作會在服務器啟動的時候檢查配置文件是會出錯的故在strutsconfig中刪除
<plugin className=orgapachestrutstilesTilesPlugin>
<setproperty property=definitionsconfig value=/WEBINF/tilesdefsxml />
</plugin>即可(因為<tilesdefonation/>與模式不配
.Webxml文件通常不用配置
.在jbiulder中創建的工程編譯後生成一系列的文件位於D:\project\work\下可以對出錯的問題進行直接查看這些文件
.可用JSPFromActionFrom(file/new file/web中)生成對應的jsp文件在選擇action class 是不要用broswer而是直接用research進行搜索到自己所要的也是自定義的action class文件的文件名即可找到(這種方法針對要引用自定義的包中的類可選用)
.對於有關用JBuilder操作時可嚴格按操作過程來執行可以用<action path=/uploadsubmit type=secondstrutsUploadAction name=uploadForm scope=request input=input>
<forward name=input path=/uploadjsp /> ……
來獲取uploadjsp的form中的值但操作出現錯誤是會被警告input必須使用一個path(即/*jsp)這時可以用HttpServletRequest類的getparameter()來獲取form中的值然後即actionForm可獲取所有的值其他與一般的相同
對於包含文件傳輸的form就需要在form中添加Boolean maxLengthExceeded =
(Boolean) requestgetAttribute(
MultipartRequestHandlerATTRIBUTE_MAX_LENGTH_EXCEEDED);才能完成對form的進行mapping
<actionmappings>
<action forward=/submitjsp path=/submit />
<! submit Action >
<action path=/submitsubmit name=sumbitActionForm scope=request type=friststrutssumbitAction validate=true input=/failurejsp>
<forward name=failure path=/failurejsp/>
<forward name=success path=/deployjsp />
</action>
.根據struts的特點一般不在actionFrom中有任何業務處理通常只有get/setXXX方法和一個validate方法而且有近可能的減少處理
而Action中的主要在execute方法中有有關於調用外部的javaBean進行數據處理和findMapping進行到轉顯示也避免大量處理
配置webxml文件
不管應用中包含多少子應用都只需要配置一個ActionServlet配置多個ActionServlet類來處理應用中不同的功能其實是沒必要的因為Servlet本身支持多線程而且目前的Struts框架只允許在應用中配置一個ActionServlet
配置welcome file list看到這裡在想為什麼會要多個歡迎頁呢?這多個頁面又是如何調用?原來是這樣<welcomefilelist>元素可以包含多個<welcomefile>子元素調用從敘照第一個指定的文件開始如果這個文件存在將把這個文件返回給客戶如果該文件不存在則依次尋找下一個歡迎頁面的文件直到找到為止如果所有文件不存在服務器將向客戶端返回HTTP Not Found的出錯信息
在<welcomefilelist>元素中不能配置Servlet映射因此不能直接把Struts的Action作為歡迎文件但是可以通過配置一個全局的轉發項來實現
配置多應用模塊
. 為每個子應用創建單獨的Struts配置文件
. 在webxml的ActionServlet的配置代碼中添加每個子應用信息
. 采用<forward>元素或SwitchAction類來實現子應用之間的切換
多個子應用模塊之間的切換
例如用從默認模塊切換到ModuleB
從ModuleB切換到默認模塊
在用到form的時候可以在外部設一個bean用來對數據進行並在ActionForm中使用並在其中定義一系列的操作然後再向Action中傳遞參數
.可以使用DynaActionForm類來取代編寫一個ActionFrom要在configstruts中設定如下
<formbean name=sumbitActionForm type=orgapachestrutsactionDynaActionForm >
<formproperty name=name type=javalangString initial=gaolong/>
<formproperty name=password type=javalangString/>
<formproperty name=email type=javalangString/>
</formbean>
然後在action中直接應用DynaActionForm的各種方法可對form進行驗證並可以通過get方法獲取對應的值
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28730.html