入門
アクションとどのようにそれに合わせて、対応するリクエストを作るには?
パッケージおよびパッケージの名前空間
アクションStruts2のはそのため、パッケージ定義のアクションで定義され、<パッケージ... />完全に下の<action ... ./>子要素、およびパッケージの構成パッケージの各要素を使用してアクションを定義し、パッケージを整理するために使用しました。
例
<package name="lee" extends="struts-default">
</package>
プロパティの説明:
- 名前::必要な属性。この属性は、パッケージの名前を指定し、パッケージの名前は、他のパッケージのキーによって参照されています。
- 拡張:オプション。この属性は継承他のパッケージにパッケージを指定します。継承他のパッケージには、アクションが他のパッケージ、インターセプタ定義に定義されて継承することができます。
- 名前空間:オプション。この属性は、パッケージの名前空間を定義します。
- 抽象::オプションの属性。これは、パケットが抽象的パッケージであるかどうかを指定します。抽象パッケージがセットにアクションを含めることはできません。
関数の名前空間:
Webアプリケーションの場合に対応するためには、アクションのと同じ名前が含まれています。Struts2の名前空間のアクションを管理するための方法は、同じ名前を持つことはできません同じ名前空間のアクションは、異なる名前空間のアクションは、同じ名前を持つことができます。
Struts2のアクションは、別の名前空間が提供されるようにサポートされていますが、指定されたStrutsのアクション以下のパケットにパケットの名前空間属性で共通の名前空間を持っていません。属性は名前空間の構成に指定されていない場合は、<パッケージを... ./>、アクションスペースの下にあるすべてのパッケージには、デフォルトのパケットです。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<constant name="struts.custom.i18n.resources" value="mess"/>
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
<constant name="struts.devMode" value="true"/>
<package name="lee" extends="struts-default">
<action name="login" class="LoginAction">
<result name="error">error.jsp</result>
<result name="success">welocme.jsp</result>
</action>
</package>
<package name="Book" extends="struts-default" namespace="/book">
<action name="loginBook" class="LoginAction">
<result name="error">error.jsp</result>
<result name="success">welocme.jsp</result>
</action>
</package>
</struts>
上記のコードに示すように、前記パケットが風下名前空間、または名前空間ブックブックを指定したパッケージのデフォルトを指定しませんが、
パッケージには、名前空間を指定した場合、すべてのパケットを変更するURLは、アクションの名前空間を扱われるべきです+アクション名。
アクションの基本構成
アクションの定義
<action name="login" class="LoginAction">
<result name="error">error.jsp</result>
<result name="success">welocme.jsp</result>
</action>
アクション名は、(リクエストがURLを含む場合、。アクションの接尾辞を削除する必要があります。アクションサフィックス一致)、それを処理Struts2のURLであるActionクラス属性が実装クラスを指定することを特徴とします。
アクションを使用して動的な方法
Struts2の動的なメソッド呼び出しは、上のフォーム要素ACTIを指し、直接行動の名前に等しくされていませんが、次の形式で、フォームのaction属性を指定します。
<S:form action="login!execute">
メソッドの属性および使用方法を指定します。
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="lee" extends="struts-default">
<!-- 配置login Action,处理类为LoginRegistAction
默认使用execute方法处理请求-->
<action name="login" class="org.crazyit.app.action.LoginRegistAction">
<!-- 定义逻辑视图和物理视图之间的映射关系 -->
<result name="error">/WEB-INF/content/error.jsp</result>
<result>/WEB-INF/content/welcome.jsp</result>
</action>
<!-- 配置regist Action,处理类为LoginRegistAction
指定使用regist方法处理请求-->
<action name="regist" class="org.crazyit.app.action.LoginRegistAction"
method="regist">
<!-- 定义逻辑视图和物理视图之间的映射关系 -->
<result name="error">/WEB-INF/content/error.jsp</result>
<result>/WEB-INF/content/welcome.jsp</result>
</action>
<action name="*">
<result>/WEB-INF/content/{1}.jsp</result>
</action>
</package>
</struts>
2つのロジックアクションの上に、それらに対応するクラスがLoginRegistActionに処理されます。2つのログインおよびレジストActionクラスは、同じ処理を持っていますが、処理ロジックは、Aのctionに対応したレジストと呼ばれる処理ロジックアクションはデフォルトのログイン名executeメソッドに対応する前記処理ロジック11の異なる方法、によって指定されているが処理ロジックレジスト指定方法。
<script type="text/javascript">
function regist()
{
// 获取页面的第一个表单
targetForm = document.forms[0];
// 动态修改表单的action属性
targetForm.action = "regist";
}
</script>
// Action包含的注册控制逻辑
public String regist() throws Exception
{
ActionContext.getContext().getSession()
.put("user" , getUsername());
addActionMessage("恭喜您," + getUsername() + ",您已经注册成功!");
return SUCCESS;
}
冗長である上記のコードを解決するために
構成<a ction ... ./>要素に(すなわち、「*」は、任意の建物の1つまたは複数のシンボルを表すと)name属性を指定するとき、パターン文字列は、それがあってもよい、許容しましたクラス、メソッド、属性<結果... ./> {N}の形の子要素は、アスタリスク(*)を先行N番目のサブストリングが一致する表現するために使用されます。