Struts2 XML配置詳解
1.深入Struts2的配置檔案
本部分主要介紹struts.xml的常用配置。
1.1.包配置:
Struts2框架中核心元件就是Action、攔截器等,Struts2框架使用包來管理Action和攔截器等。每個包就是多個Action、多個攔截器、多個攔截器引用的集合。
在struts.xml檔案中package元素用於定義包配置,每個package元素定義了一個包配置。它的常用屬性有:
l name:必填屬性,用來指定包的名字。
l extends:可選屬性,用來指定該包繼承其他包。繼承其它包,可以繼承其它包中的Action定義、攔截器定義等。
l namespace:可選屬性,用來指定該包的名稱空間。
<!
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!-- struts2的action必須放在一個指定的包空間下定義 --> <package name="qiujy" extends="struts-default"> <!-- 定義處理請求URL為login.action的Action --> <action name="login" class="org.qiujy.web.struts2.action.LoginAction"> <!-- 定義處理結果字串和資源之間的對映關係 --> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> </action> </package> <package name="my" extends="struts-default" namespace="/manage"> <!-- 定義處理請求URL為login.action的Action --> <action name="backLogin" class="org.qiujy.web.struts2.action.LoginAction"> <!-- 定義處理結果字串和資源之間的對映關係 --> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> </action> </package></struts> |
<struts> <include file="struts-default.xml"/> <include file="struts-user.xml"/> <include file="struts-book.xml"/> <include file="struts-shoppingCart.xml"/> ...... </struts> |
<struts> ...... <constant name="struts.custom.i18n.resources" value="messages"/> </struts> |
package org.qiujy.web.struts2.action; import com.opensymphony.xwork2.ActionSupport; /** *@authorqiujy *@version1.0 */ publicclass LoginAction extends ActionSupport{ private String userName; private String password; private String msg; //結果資訊屬性 /** *@returnthemsg */ public String getMsg() { returnmsg; } /** *@parammsgthemsgtoset */ publicvoid setMsg(String msg) { this.msg = msg; } /** *@returntheuserName */ public String getUserName() { returnuserName; } /** *@paramuserNametheuserNametoset */ publicvoid setUserName(String userName) { this.userName = userName; } /** *@returnthepassword */ public String getPassword() { returnpassword; } /** *@parampasswordthepasswordtoset */ publicvoid setPassword(String password) { this.password = password; } /** *處理使用者請求的excute()方法 *@return結果導航字串 *@throwsException */ public String execute() throws Exception{ if("test".equals(this.userName) && "test".equals(this.password)){ msg = "登入成功,歡迎" + this.userName; returnthis.SUCCESS; }else{ msg = "登入失敗,使用者名稱或密碼錯"; returnthis.ERROR; } } } |
public String execute() throws Exception{ if("test".equals(this.userName) && "test".equals(this.password)){ msg = "登入成功,歡迎" + this.userName; //獲取ActionContext例項,通過它來訪問Servlet API ActionContext context = ActionContext.getContext(); //看session中是否已經存放了使用者名稱,如果存放了:說明已經登入了; //否則說明是第一次登入成功 if(null != context.getSession().get("uName")){ msg = this.userName + ":你已經登入過了!!!"; }else{ context.getSession().put("uName", this.userName); } returnthis.SUCCESS; }else{ msg = "登入失敗,使用者名稱或密碼錯"; returnthis.ERROR; } } |
<form method="post" action="userOpt!login.action"> |
package org.qiujy.web.struts2.action; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; /** *@authorqiujy *@version1.0 */ publicclass LoginAction extends ActionSupport{ private String userName; private String password; private String msg; //結果資訊屬性 /** *@returnthemsg */ public String getMsg() { returnmsg; } /** *@parammsgthemsgtoset */ publicvoid setMsg(String msg) { this.msg = msg; } /** *@returntheuserName */ public String getUserName() { returnuserName; } /** *@paramuserNametheuserNametoset */ publicvoid setUserName(String userName) { this.userName = userName; } /** *@returnthepassword */ public String getPassword() { returnpassword; } /** *@parampasswordthepasswordtoset */ publicvoid setPassword(String password) { this.password = password; } /** *處理使用者請求的login()方法 *@return結果導航字串 *@throwsException */ public String login() throws Exception{ if("test".equals(this.userName) && "test".equals(this.password)){ msg = "登入成功,歡迎" + this.userName; //獲取ActionContext例項,通過它來訪問Servlet API ActionContext context = ActionContext.getContext(); //看session中是否已經存放了使用者名稱,如果存放了:說明已經登入了; //否則說明是第一次登入成功 if(null != context.getSession().get("uName")){ msg = this.userName + ":你已經登入過了!!!"; }else{ context.getSession().put("uName", this.userName); } returnthis.SUCCESS; }else{ msg = "登入失敗,使用者名稱或密碼錯"; returnthis.ERROR; } } public String regist() throws Exception{ //將使用者名稱,密碼新增到資料庫中 //... msg = "註冊成功。"; returnthis.SUCCESS; } } |
<!DOCTYPE struts PUBLIC " |