初學struts小總結

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!!");

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章