struts2ftp
㈠ 怎麼配置struts2.0
struts2.0 配置篇
1、web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>
struts2</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
其中,綠底色的部分是通用的部分。
2、struts.xml文件
這個文件的配置是最為重要的,也是比較容易出問題的地方,初學者對其中很多的參數不太明白,導致調試時候經常出錯。下面先給出一個配置的代碼:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml"/>
<package name="package1" extends="struts-default">
<action name="Hello" class="tutorial.HelloWorld">
<result>HelloWorld.jsp</result>
</action>
<action name="HelloWorld" class="package1.HelloWorld">
<result>HelloWorld.jsp</result>
</action>
</package>
</struts>
1)對於<include file="struts-default.xml"/>這行代碼,可以要也可以不要。
2)package的name是可以虛構的,並不一定要在classes目錄下要有一個與這個name名對應的包名;像上面的配置文件中的name="package1"可以隨便改成name="aaa"等是不影響結果的,只不過這個package名可以使得多個action聚合在一起,對大型的模塊設計的時候是很有幫助的。
3)<action name="HelloWorld" class="package1.HelloWorld">中的HelloWorld這個name並不一定要與package1包中的類名相同,比如<action name="Hello" class="tutorial.HelloWorld">這樣兩個名字完全不一樣是可以的,但是"Hello"這個name必須與輸入的jsp頁面裡面的action內容是一致的,如<s:form action="Hello">
4)從上面的配置文件可以看出,在classes目錄下面有兩個包,一個是tutorial,一個是package1。
3、struts.properties文件
這個文件最簡單,它與struts.xml文件一樣,都是位於classes目錄下面。其內容為:
struts.devMode = true
struts.enable.DynamicMethodInvocation = false的
4、建議初學者先看看為Struts 2.0做好准備這篇文章,這里每個步驟講的非常的詳細,但是有些細節作者沒有寫出來,讓很多初學者調試的時候出很多錯誤,比如The requested resource (/項目名/HelloWorld) is not available.,java.lang.NullPointerException等等。
1)關於工具web tools platform,這是一個eclipse集成了很多web開發下所需工具的一個比較好的平台,它在eclipse的網站下面http://www.eclipse.org/webtools/有下載。打開這個頁面的右邊download欄目下面有wtp的下載,點擊這個去下載,如果不行,就再仔細找找了。
2)如果出現The requested resource (/項目名/HelloWorld) is not available.的話,就仔細找找看是不是輸入的時候把配置文件等等地方寫錯了,對於初學者最容易把其中的字母搞錯,比如struts是不寫成了其它的形式,反正出現這個錯誤就是說訪問的資源不存在,那就肯定要麼是配置文件出錯了,要麼是你的類文件沒有放在classes目錄下面,無外這兩種情況。錯了不要緊,沒有錯誤,哪會有進步呢。
3)如果你真的發現什麼錯誤都沒有,但就是盡管調試了半天還是調試不成功,那就考慮你的JDK版本是不是和你下載的wtp搭配了,建議把原來低版本的JDK卸載,裝上新去下載的JDK,寫這篇博客時,最新版本是jdk-1_5_0_10。如果還不行,你就把tomcat或者其它的web伺服器換版本,總之要不怕錯誤和失敗,要勤於不斷的調試。
網路博客雖然訪問速度快,但是連粘貼個代碼都不方便,真希望能改進改進。
㈡ struts和struts2的區別是什麼
你問的應該是 struts1 和struts2 的區別:
Struts2與Struts1的對比
1,在Action實現類方面:
Struts1要求Action類繼承一個抽象基類;Struts1的一個具體問題是使用抽象類編程
而不是介面。Struts2 Action類可以實現一個Action介面,也可以實現其他介面,使可選和定製服務成為可能。
Struts2 提供一個ActionSupport基類 去實現常用的介面。即使Action介面不是必須實現的,只有一個包含
execute方法的POJO類都可以用作Struts2的Action。
2,線程模式方面:
Struts1 Action是單例模式並且必須是線程安全的,因為僅有Action的一個實例來處理所有的請求。單例策略限制了Struts1 Action能做的事,並且要在開發時特別小心。Action資源必須是線程安全的或同步的;Struts2 Action對象為每一個請求產生一個實例,因此沒有線程安全問題。
3,Servlet依賴方面:
Struts1 Action依賴於Servlet API,因為Struts1 Action的execute方法中有HttpServletRequest和HttpServletResponse方法。
Struts2 Action 不再依賴於ServletAPI,從而允許Action脫離Web容器運行,從而降低了測試Action的難度。當然,如果Action 需要直接訪問HttpServletRequest和HttpServletResponse參數,Struts2 Action仍然可以訪問它們。但是,大部分時候,Action都無需直接訪問
HttpServletRequest和HttpServletResponse,從而給開發者更多靈活的選擇。
4,可測試方面:
測試Struts1 Action的一個主要問題是execute方法依賴於Servlet於ServletAPI, 這使得Action 仍然的測試要依賴於Web容器。為了脫離Web容器測試Struts1 的Action, 必須藉助於第三方擴展:Struts TestCase,該擴展下包含了系列的Mock對象,從而脫離Web容器測試Struts1的Action類。
Struts2Action可以通過初始化,設置屬性,調用方法來測試。
5,封裝請求參數方面:
Struts1 使用ActionForm對象封裝用戶的請求參數,所有的ActionForm 必須繼承一個
基類:ActionForm。 普通的JavaBean不能用作ActionForm因此,開發者必須創建大量的ActionForm類封裝用戶請求參數。雖然Struts1 提供了動態ActionForm 來簡化ActionForm 的開發,但依然需要在配置文件中定義ActionForm; Struts2 直接使用Action 屬性來封裝用戶請求屬性,避免了開發者需要大量開發ActionForm類的繁瑣,實際上,這些屬性還可以是包含子屬性的Rich對象類型。如果開發者依然懷念Struts1 ActionForm 的模式
Struts 2 提供了ModelDriven 模式, 可以讓開發者使用單獨的Model 對象來封裝用戶請求參數,但該Model對象無須繼承任何Struts2基類,是一個POJO,從而
降低了代碼污染。
6,表達式語言方面:
Struts1 整合了JSTL,因此可以使用JSTL表達式語言。這種表達式語言有基本對象圖遍
歷,但在對集合和索引屬性的支持上則功能不強
Struts2 可以是用JSTL,但它整合了一種更強大和靈活的表達
式語言:OGNL(Object Graph Notation Language),因此,Struts2下的表達式語言功能更加強大。
7,綁定值到視圖方面:
Struts1 使用標准JSP機制把對象綁定到視圖頁面;
Struts2 使用「ValueStack」技術,使標簽能夠訪問值,而不需要把對象和視圖頁面綁定在一起。
8,類型轉換的方面:
Struts 1 ActionForm 屬性通常都是String 類型。 Struts1 使用
Commons-Beanutils 進行類型轉換,支持基本數據類型和常用對象之間的轉換。
9,數據校驗的方面:
Struts1 支持在ActionForm 重寫 validate方法手動校驗,或者通過整合Commonsalidator框架來完成數據校驗。
Struts2 支持通過重寫validator方法進行校驗,也支持整合XWork校驗框架進行校驗
10,Action執行控制的方面:
Struts1 支持每一個模塊對應一個請求處理(既生命周期的概念),但是模塊中的所有Action必須共享相同的生命周期。
Struts2支持通過攔截器堆棧為每一個Action 創建不通的生命周期。開發者可以根據需要創建相應堆找,從而和不同的Action一起使用。
㈢ sql2005 僅struts2框架 配資料庫連接池 失敗啊。 Cannot create PoolableConnectionFactory
首先確認你的密碼是不是對的。如果是對的:
所有程序 -> Microsoft SQL Server 2005 ->配置工具 ->SQL Server Configuration Manager
選擇:SQL Server 2005網路配置,然後選擇:MSSQLSERVER 的協議 ,然後將TCP/IP右鍵啟動,然後右鍵TCP/IP,選擇屬性,選擇IP地址,在IP1下邊的「已啟用」,選擇「是」...然後重啟服務..................OVER!
㈣ struts2怎麼在伺服器上創建一個空文件夾
像在桌面創建一樣~
如果是ftp傳~你可以先在自己桌面設置好再傳上去啊!
㈤ struts2存在命令執行漏洞,上傳webshell文件等什麼意思
就是控制網站 傳一個腳本木馬上去 (可以是一句話,用中國菜刀控制你的網站 或者直接傳jsp大馬控制)。最起碼有相當於你網站的ftp許可權。Windows的伺服器一般jsp的腳本許可權都是系統許可權,linux也許可權很高。
㈥ struts2.0的工作原理
客戶端發出一個請求,伺服器端接收請求。
如果該請求是一個以 .action 結尾請求,則Struts2將請求轉發至相應的Action,進行數據類型轉換,如果數據類型轉換出錯,則返回到 input 指定的結果頁面。
如果數據類型轉換沒有出錯,則調用setXX 方法進行設值,如果使用了validate()驗證方法(或者是使用了驗證框架),則進行相應的驗證。
如果驗證出錯,回到 input 指定的結果頁面。
如果沒有使用驗證,或者驗證沒有出錯,則執行 execute() 方法,返回到相應的頁面。
(6)struts2ftp擴展閱讀:
Struts2流程註解
當Web容器收到請求(HttpServletRequest)它將請求傳遞給一個標準的的過濾鏈包括(ActionContextCleanUp)過濾器。
經過Other filters(SiteMesh ,etc),需要調用FilterDispatcher核心控制器,然後它調用ActionMapper確定請求哪個Action,ActionMapper返回一個收集Action詳細信息的ActionMaping對象。
FilterDispatcher將控制權委派給ActionProxy,ActionProxy調用配置管理(ConfigurationManager) 從配置文件中讀取配置信息(struts.xml),然後創建ActionInvocation對象。
ActionInvocation在調用Action之前會依次的調用所用配置攔截器(Interceptor N)一旦執行結果返回結果字元串ActionInvocation負責查找結果字元串對應的(Result)然後執行這個Result Result會調用一些模版(JSP)來呈現頁面。
攔截器(Interceptor N)會再被執行(順序和Action執行之前相反)最後響應(HttpServletResponse)被返回在web.xml中配置的那些過濾器和核心控制器(FilterDispatcher)。
㈦ java實現FTP文件上傳功能的原理是什麼
。。參照ftp協議。直接用socket發送就行了。。。ftp本來控制信息就不是很復雜的。