Struts1のSSH学習の詳細な学習

1.動的ActionForm。

前回の記事では静的ベースのActionFormを実装しており、すべてのフォームでActionFormを作成する必要がある場合は、ActionFormが多すぎます。次に、Strutsは動的DynaActionFormを使用して上記の問題を解決でき、新しいActionFormを作成せずに構成するだけで済みます。

①構成:

<form-beans>
		<!-- 定义DynaActionForm,至少指定两个属性: name(自定义) , type 指定Struts中的路径 -->	
		<form-bean name="dynaForm" type="org.apache.struts.action.DynaActionForm">
			<form-property name="userName" type="java.lang.String"/>
			<form-property name="pswd" type="java.lang.String"/>
		</form-bean>
	</form-beans>
②アクションの値は、フォームをDynaActionFormに強制することで取得され、取得するオブジェクトの値は、マップのキー/値getString(name)と同様であり、nameは属性名です。

public class DynaAction extends Action {

	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		DynaActionForm form2 = (DynaActionForm) form;
		String userName = form2.getString("userName");
		String pswd = form2.getString("pswd");
		if ("admin".equals(userName) && "admin".equals(pswd)) {
			System.out.println(userName+"    " + pswd);
			return mapping.findForward("error");
		}

		return mapping.findForward("error");

	}
}


2.DispathAction

ユーザーを追加、削除、変更、および確認する場合は、次の2つの方法があります。

①機能を実現するための4つのアクションの作成は非常に複雑で管理が難しい。

②DispathActionを使用すると、executeメソッドを書き直す必要はありませんが、実装する必要のあるActionメソッドを定義します。

③構成:DispathActionには、xml構成のActionよりも1つ多くのパラメーター属性があり、DispathActionメソッドにアクセスするためにフィールドをカスタマイズします。

<action-mappings>
		<action path="/login" type="com.example.UserAction" name="dynaForm_2"
			scope="request" parameter="method">
			<!-- 配置局部Forward -->
			<forward name="welcome" path="/index.jsp" />
			<forward name="input" path="/login.jsp" />
			<forward name="main" path="/main.jsp"></forward>
			<forward name="add" path="/add_success.jsp"></forward>
			<forward name="delete" path="/delete_success.jsp"></forward>
			<forward name="modify" path="/modify_success.jsp"></forward>
		</action>

	</action-mappings>
④実現:
public class UserAction extends DispatchAction{

	
	public ActionForward add(ActionMapping arg0, ActionForm arg1,
			HttpServletRequest arg2, HttpServletResponse arg3) throws Exception {
		// TODO Auto-generated method stub
		PrintWriter out=arg3.getWriter();  
        out.println("add!!!!!");  
        return arg0.findForward("add");
	}

	public ActionForward delete(ActionMapping arg0, ActionForm arg1,
			HttpServletRequest arg2, HttpServletResponse arg3) throws Exception {
		// TODO Auto-generated method stub
		PrintWriter out=arg3.getWriter();  
        out.println("add!!!!!");  
        return arg0.findForward("delete");
	}

	public ActionForward modify(ActionMapping arg0, ActionForm arg1,
			HttpServletRequest arg2, HttpServletResponse arg3) throws Exception {
		// TODO Auto-generated method stub
		PrintWriter out=arg3.getWriter();  
        out.println("add!!!!!");  
        return arg0.findForward("modify");
	}

}
⑤アクセス方法:
        <a href="login.do?method=add">add</a><br>
	<a href="login.do?method=delete">delete</a><br>
	<a href="login.do?method=modify">modify</a><br>

3.MappingDispathAction

DispathActionが使用されるたびに同じパラメータフィールドが使用されますが、これはエラーが発生しやすいため、MappingDispathActionを使用できます。

①構成:パラメータの名前は、アクションの名前と完全に同じである必要があります。

<action path="/add" type="com.example.UserMapAction" name="dynaForm_2"
		    scope="request" parameter="add"></action>
		<action path="/delete" type="com.example.UserMapAction" name="dynaForm_2"
		    scope="request" parameter="delete"></action>
		<action path="/modify" type="com.example.UserMapAction" name="dynaForm_2"
		    scope="request" parameter="modify"></action>
②実現:

public class UserMapAction extends MappingDispatchAction{

	
	public ActionForward add(ActionMapping arg0, ActionForm arg1,
			HttpServletRequest arg2, HttpServletResponse arg3) throws Exception {
		// TODO Auto-generated method stub
		PrintWriter out=arg3.getWriter();  
        out.println("add!!!!!");  
        return arg0.findForward("add");
	}

	public ActionForward delete(ActionMapping arg0, ActionForm arg1,
			HttpServletRequest arg2, HttpServletResponse arg3) throws Exception {
		// TODO Auto-generated method stub
		PrintWriter out=arg3.getWriter();  
        out.println("add!!!!!");  
        return arg0.findForward("delete");
	}

	public ActionForward modify(ActionMapping arg0, ActionForm arg1,
			HttpServletRequest arg2, HttpServletResponse arg3) throws Exception {
		// TODO Auto-generated method stub
		PrintWriter out=arg3.getWriter();  
        out.println("add!!!!!");  
        return arg0.findForward("modify");
	}

}
③アクセス方法:

	<a href="add.do">add_mapping</a><br>
	<a href="delete.do">delete_mapping</a><br>
	<a href="modify.do">modify_mapping</a><br>



おすすめ

転載: blog.csdn.net/u010857795/article/details/50962533