Struts配置 1.軟件下載: 2.前期工作 3.具體操作 A.將需要的jar文件複製到web項目中webroot下的lib文件夾中 Jar文件所在: Apps----->struts2-blank------>web-inf---->lib B.配置web.xml 和struts.xml 配置struts.xml 1.將struts.xml複製到項目中src目錄下 Struts.xml位置: 將struts-2.x.x中的apps打開------》解壓struts2-blank----》打開web-inf文件-----》classes------》找到struts.xml,如下圖 2.註釋掉struts.xml的多餘內容,將package標籤的內容複製下來,將package中內容更改如下: ( 注意: A.namespace的作用:與在瀏覽器中訪問的路徑一一對應 總結爲:http://localhost:8080/web項目名稱/struts.xml中的action name B.若在項目src中建立一個包package,則在struts.xml中配置package name=“包名” ) 配置web.xml 1.web.xml位置 將struts-2.x.x中的apps打開------》解壓struts2-blank----》打開web-inf文件-----》web.xml 2.將這其中的在<filter>中複製過來,如下圖 <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> Action流程 <form action=”*.action”>路徑映射到web.xml 中的url-pattern,然後在上面的filter中的*andexcute*進行過濾查找,即在struts.xml中查找action,由屬性class進行流程,然後運用方法,寫result name,必須要匹配,然後流程進入結果頁面。 Package講解 <struts>可以有多個Package</struts> <Package>可以有多個action</Package> 上述的name可以任意取名,extends必須有 查看源代碼的方法: 任意打開一個class文件,點擊 然後選擇文件夾: Struts2.3 api Doc 1.準備階段 新建java項目----》將E:\struct\struts-2.3.20\src\core\src\main\java下的org文件copy到src下----》將E:\struct\struts-2.3.20\lib中的jar文件(除了struts-core-*.jar)+E:apache-tomcat-6.0.10\lib中的jsp.api和servlet.jsp 2.生成工作 首先在桌面上創建一個文件夾struts—doc,然後選中項目進行下面操作。 等待生成。。。。。 Struts在啓動時有3個文件需要解析: 內置文件: Parsing configuration file [struts-default.xml] 插件文件: Parsing configuration file [struts-plugin.xml] 自己配置的文件: Parsing configuration file [struts.xml] 類型轉換 Struts2可以自動的進行類型轉換方式,但並不能滿足要求。 在寫action方法時,需要從actionsupport繼承,如下圖 需要寫轉換器: 另外建立一個包,需要繼承**,如下圖 轉換器內容自己寫入:如下 toType:表示傳向的方向 Value:表示所傳的值 創建屬性文件: 在與action類的同一個包中,建file,其中名字必須如下圖: 即:*action名-conversion.properties 然後打開此屬性文件,點擊source,寫入,如下圖 User是所對應的action中的類 後面的是轉換器的包 流程: 用戶提交 尋找action,實例化對象class 通過屬性文件,知道先進行類型轉換,生成某一類型轉換對象 自動調用方法轉換器,返回的user到useraction 類型轉換: 輸入校驗剖析:(分兩種) Addactionerror實現流程: Addfielderror實現流程: 第一種:編碼方式: action級別的處理錯誤信息 1.Action繼承actionsupport,所以可以進行校驗,提供Validate()方法 2.先執行validate(驗證),在execute() 3.進行校驗時,只寫不符合滿足要求的代碼 4.在validate方法中進行驗證,驗證的方法用addactionerror(“提示信息”) if(username == null || username.length() < 4 || username.length() > 6) { this.addActionError("username error!!"); } 5.在struts.xml中配置驗證錯誤相對應的result,即 <result name=”input”>/*.jsp</result> 6.要想要提示信息顯示在頁面上,需要在jsp頁面裏面加入struts標籤庫, <s:actionerror/> field級別錯誤消息 步驟和上述方法不同的是: 1.將this.actionerror()方法改寫爲: this.addFieldError("username", "name field!!!"); 即this.addFieldError("驗證名", "提示信息"); 2.要使信息提示顯示出來,則需要在顯示頁面添加另外一個標籤: <s:fielderror cssStyle="blue"></s:fielderror> 兩種級別比較: 1.存放的位置不一樣(addactionerror,fielderror) 2.呈現的方式不一樣(標籤) 總結: (1.類型轉換出現錯誤時,錯誤提示會保存到field級別,而不是action級別,並且Struts有自帶的field錯誤提示 (2.Field級別提示信息可以手動或者是自動提供 (3.Clear不可以清除action和field錯誤,仍有提示信息即 this.getFieldErrors().clear(); this.getActionErrors().clear();因爲返回的是集合的副本 (4.clear**error可以清除錯誤,並且沒有提示信息: this.clearActionErrors(); this.clearFieldErrors(); Struts標籤: 1.用struts標籤必須要寫的: 2.輸出的意思:<s:property> 3.Action級別驗證時出現錯誤且有信息提示: 也可以增加提示顏色: <s:actionerror cssStyle="color:red"/> 4.field級別驗證時出現錯誤時,有信息提示: <s:fielderror cssStyle="color:blue"></s:fielderror> 5.表單:<s:form></s:form> Action表示找的流程,theme的作用是用戶自定義表單用途的 6.輸入文本域,其中name=”文本框輸入的內容” label=”註釋” <s:textfield name="username" label="username"></s:textfield> 即:username: 7.輸入密碼時,其中name,label屬性同上 <s:password name="password" label="password"></s:password> 8.提交按鈕時, <s:submit value="submit"></s:submit> *注意: 1.如果方法中是自己定義的,則需要在struts.xml中的action的屬性後加入一個method=”方法名” 2.用struts標籤進行頁面提交時,後臺會自動的在處理field錯誤信息,即重複提示field錯誤信息。即: 若要消去重複的提示,則可以如下: <s:form action="register.action" theme="simple"> username:<s:textfield name="username" label="username"></s:textfield><br> password:<s:password name="password" label="password"></s:password><br> repassword:<s:password name="repassword" label="repassword"></s:password><br> age:<s:textfield name="age" label="age"></s:textfield><br> birthday:<s:textfield name="birthday" label="birthday"></s:textfield><br> graduation:<s:textfield name="graduation" label="graduation"></s:textfield><br> <s:submit value="submit"></s:submit> </s:form > 3.先執行型轉換,在執行輸入校驗,兩者息息相關 4.類型轉換出現錯誤時,錯誤提示會保存到field級別,而不是action級別,並且Struts有自帶的field錯誤提示。 錯誤剖析: 404:”result input”輸入校驗出錯,會尋找struts.xml中的result中name=”input”,如下圖: 代碼收集: 比較兩個日期誰前誰後時,採用一下代碼: if(birthday != null && graduation != null) { Calendar c1 = Calendar.getInstance(); c1.setTime(birthday); Calendar c2 = Calendar.getInstance(); c2.setTime(graduation); //比較c1 c2哪個在前面 if(!c1.before(c2)) { this.addActionError("birthdate is later!!"); } 比較密碼和重輸入密碼時,採納: //驗證密碼在4-6之間,先判斷長度是否相同,在判斷內容是否相同 if(password == null || password.length() < 4 || password.length() > 6) { this.addActionError("password error!!"); }else if(repassword == null || repassword.length() < 4 || repassword.length() > 6) { this.addActionError("repassword error!!"); }else if(!password.equals(repassword)) { this.addActionError("repassword no same password!!"); }
初學struts小總結
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.