🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: cn.bbs.comp.lang.java
Article #365

[ת]struts�м��ֳ��õ�Action

#365
From: ��ң
Date: Wed, 26 Nov 2008 08:32
268 lines
18412 bytes

���˻��Action ֮�⣬ Struts ���ṩ�˼����������͵�Action ����ЩAction ���
�ḻ��Struts �Ĺ��ܡ�����������¶�����õ�Action ��
? DispatchAction: ��ͬʱ��ɶ��Action ���ܵ�Action ��
? ForwardActon: �����������Struts ������ҵ���߼������ͨ��ֻ����������Ч
�Լ�顣
? IncludeAction: ���������������Դ��ҳ�档
? LookupDispatchAction: DispatchAction �����࣬��ݰ�ť��key ������ת����action
�����
? MappingDispatchAction: DispatchAction �����࣬һ��action ��ӳ������Action
��ַ��
? SwitchAction: ���ڴ�һ��ģ��ת������һ��ģ�飬���Ӧ�÷ֳɶ��ģ��ʱ��

�Ϳ���ʹ��SwitchAction ���ģ��֮����л���
����Գ��õ�Action ���н��ܡ�
3.11.1 DispatchAction ��������
DispatchAction �ǽ�����Action��ʹ����Ƶ����Action������ͬһ���?����������
����ťʱ�����ύ��Ҫ���߼�������ȫ��ͬ���������ͼ3.28 ��ʾΪ��¼ҳ�档
ͼ3.28 �����ύ��ť�ı?ҳ
��ҳ����������ύ��ť�����ύ��ť��Ҫִ�е��߼�ȴ��һ���������뵽��
��������ǣ�Ϊÿ����ť����JavaScipt�ű����ύ������ťʱ��ֱ��ύ��ͬ��Action
���?�����������뵽��Ҳ���鷳�ķ�ʽ��
Struts �ṩ��DispatchAction����֧�ֶ���߼����?���������ʾ��?��Ҫ��
���߼�����:���Ӻ��޸ġ�������ʾ����ʹ�õ�Action ���Դ����:
public class LoginAction extends DispatchAction
{
II ��һ�������߼�
public ActionForward add(ActionMapp��ng mapping , ActionForm form ,
HttpServletRequest request , HttpServletResponse response)
throws Exception
System.out.println( "����") ;
request. setAt tribute ("method" , "����") ;
return mapping.findForward("success");
II�ڶ��������߼�
public ActionForward modify(ActionMapping mapping , ActionForm form ,
HttpServletRequest request , HttpServletResponse response)
throws Exception
System.out.println(" �޸�") ;
request. setAttribute ("method��,"�޸�") ;
return mapping.findForward("success"};
�����Action �dz��򵥣��������߼�����Ҳ�dz��򵥡���Action ��û����дexecute
������������д�������Զ���ķ���:add ��modi�䡣�������������˷�������execute

������֮ͬ�⣬����IJ����б?�쳣�Ĵ�����ȫ��ͬ����������������execute ����
������������ҵ���߼��Ĵ��?
����Ĺؼ���: Struts ������ͬ�?�ύ�뷽��֮��Ķ�Ӧ��ϵ?��Ϊ��ʹ��
DispatchAction Ҫ��?�ύʱ�������ഫ��һ������ò���������ֵ��׵���
Action �е��ĸ�������
�����������struts-config.xml �ļ���ָ����ע������action �����ô���:
<action path="/login" type="lee.LoginAct��on ll name="1og inForm"
scope="request" validate="true" input="/login.jsp" parameter="method">
<forward name="success" path="/welcome.jsp"/>
<fact��on>
�ڸ�action �������У�������parameter���ԣ�����������ָ��������Struts ��
��ݸò����ֵ���ö�Ӧ�ķ�����Ϊ������������method �IJ���������JSP ҳ���
����м��޸ģ�����JSP ҳ��������һ��������ʹ�������������Ϊmethod������
��JSP ҳ��ı?����:
<html:form action="login.do">
<table border="O" width="100">
<tr>
<th align="left"><bean:message key="username"/></th>
<td align="left"><html:text property="username" size="15"/></td>
</tr>
<tr>
<th align="left"><bean:message key="pass"/></th>
<td align="left"><html:text property="pass" s ize="15"/></td>
</tr>
<tr>
<td>
<input type="hidden" name="method" value="add"/>
<input type="submit" value='<bean:message key="button.add"/>' onClick=
method.value='add'''/>
<input type="submit" value='<bean:message key="button.modify"/>'
onClick="method.value='modify'''/>
<input type="reset" value='<bean:message key="button.reset"/>'/>
<ltd>
</tr>
</table>
</html:form>
������Ĵ����п��Կ�����ҳ����������method �������򣬸��������Ĭ��ֵΪ
add��������ҳ���еġ��޸ġ���ťʱ�����������ֵ�����modify����������ӡ���
ťʱ�����������ֵ���add�������������Ƕ��⴫�ݵIJ���ֵ�����ڸ���Dispatch
�����ĸ���������������
���method �����ֵΪadd��������add ����;���method �����ֵΪmodify��
�����modify ����������ڵ�����ͬ��ťʱ��DispatchAction�����Զ����ö�Ӧ�ķ���
����ɴ��?
1. ʹ��MappingDispatchAction
MappingDispatchAction�ɽ�ͬһ��Action �IJ�ͬ����ӳ��ɶ��Action URI ������

Action ��д����DispatchAction �dz����ƣ�ͬ����Ҫ��дexecute ���������ǽ���д��
���Զ���ķ�������Щ�������˷�������execute ������ͬ�⣬����IJ����б?�쳣
������ȫһ��
�����DZ�ʾ����ʹ�õ�Action ��Դ����:
public class LoginAct��on extends MappingDispatchAction
II ��һ�������߼�
public ActionForward add(ActionMapping mapping , ActionForm form ,
HttpServletRequest request , HttpServletResponse respo��se)
throws Exception
System.out.println("����") ;
request.setAttribute( method" , "����") ;
return mapping.findForward("success");
}
II �ڶ��������߼�
public ActionForward modify(ActionMapping mapping , ActionForm form ,
HttpServletRequest request , HttpServletResponse response)
throws Exception
System.out.println("�޸�") ;
request.setAttribute( mnethod" "�޸�") ;
return mapping.findForward("success");
��Action ��ǰ���DispatchAction û��̫�����𣬽����ı���ĸ���:
MappingDispatchAction�����仯���ڸ�Action �����ã���������ڸ�Action �����ô���:
<1- ���õ�һ��Action. ʵ������lee.LoginAction , parameter Ϊadd-->
<action path="/add" type="lee.LoginAction" name="loginForm"
scope="request" val idate="true" input="login.jsp" parameter="add">
<forward name="success" path="/welcome.jsp"l>
</action>
<! ���õڶ���Action. ʵ������lee.LoginAction , parameter Ϊmodify-->
<action path="/modify" type="lee.LoginAction" name="loginForm"
scope��"request" validate="true" input="login.jsp��parameter="modify">
<forward name="success" path="/welcome.jsp"l>
</action>
����������£�����action ʹ�õ���ͬһ��Action �����ֻ࣬�ǵ��õķ�����ͬ��ͬ
��Ҳ�ɴﵽ�����Ч��ȻҲ��ҪΪҳ���е�������ť������Ӧ��JavaScript�ű�����
������ͬ��ťʱ���?���ύ����ͬ��action��������JSP ҳ�������ť��Դ����:
<td>
<input type="submit" value='<bean:message key="button.add"/>'
onClick="document.loginForm.action='add.do'''/>
<input type="submit" value='<bean:message key="button.modify"I>'
onClick="document.loginForm.action='modify.do'''I>
<input type="reset" value='<bean:message key="button.reset"I>'I>
<ltd>
���У�ǰ�������ύ��ť��������onClick �������������ð�ťʱ����ı�?����
����ַ��

ע��:ʹ��MappingDispatchAction ��û�д���̫������ƣ�ϵͳ��ȫ������д����
Action ���ֱ���������ͬ��action ӳ�䣬�������û�����
2. f����LookupDispatchAction
LookupDispatchActionҲ��DispatchAction ��һ�֣�����Ĵ����Ӽ򵥡���Action
Ҳ�ɰ������?��������ô��?���밴ťֱ�ӹ���������ʹ���κε�JavaScript
�ű���
ʹ��LookupDispatchActionʱ���ύ��ť����ʹ��Struts ��html ��ǩ�������Ǹ�ʾ
��ť���ֵ�Դ����:
<td>
<html:submit property="method">
<bean:message key="button.add"l>
</html:submit>
<html:submit property="method">
<bean:message key="button.modify"l>
</html:submit>
<input type="reset" value='<bean:message key="button.reset"I>'I>
<ltd>
�����������ύ��ť�ֱ�������property ���ԣ������Ե�ֵΪmethod������action
�������У�Ҳʹ��parameter��Ϊ���������action ���ô���:
<action path="/login" type="lee.LoginAction" name="loginForm"
scope="request" validate="true" input="/login.jsp" parameter="method">
<forward name="success" path="/welcome.jsp"l>
</action>
������ô������:��action Ҳ���method �������������ֱ�����ĸ���������
ʱ����ʹ��method �������򣬶��ǽ���ť��property ��Ϊmethod��ͨ�����ַ�ʽ����
������дJavaScript�ű���
��˿�ͨ����дgetKeyMethodMap������ɰ�ť��Action �з����Ĺ�����������
��Action ��Դ����:
public class LoginAction extends LookupDispatchAction
{
II ���ڹ�����ť�ͷ���
protected Map getKeyMethodMap()
Map map = new HashMap();
II���ť�����key Ϊbutton.add. ���ύ�ð�ťʱ��Ӧadd ����
map .put ("button. add" , "add");
II���ť�����key Ϊbutton.modify. ���ύ�ð�ťʱ��Ӧmodify ����
map.put ("button.modify" , "modify") ;
return map;
}
II ��һ�������߼�
public ActionForward add(ActionMapping mapping, ActionForm form ,
HttpServletRequest request , HttpServletResponse response)
throws Exception
System.out.println(" ����II) i
request.setAttribute("method" , "����") ;
return mapping.findForward(" success") ;
}
�ڶ��������߼�
public ActionForward modify(ActionMapping mapping , ActionForm form ,
HttpServletRequest request , HttpServletResponse response)
throws Exception
System.out.println("�޸�II) ;
request.setAttribute(" method" , " �޸�") ;
return mapping.findForward("success");
LookupDispatchAction������дgetKeyMethodMap�������÷�������һ��Map ����
���ڸö����ڱ����˰�ť�����뷽��֮��Ķ�Ӧ��
3.11.2 ʹ��ForwardAction
�����Ҫ��һ��ҳ�����Դת������һ����Դʱ��ֱ��ʹ��ҳ�����Դ·���ij���
���Ӷ�λ�����Ǻõ���������ʹ�ÿ�����û�л�ᴦ����ص�������ֱ��
ʹ��ForwardAction������������ת����������������ForwardAction��performO
����ʱ�����ʹ������parameter ���趨��·������forward �Ķ�����������һ���趨
ForwardAction������:
<actlon-mapplngs>
<action path="/welcome"
type="org.apache.struts.actions.ForwardAction"
parameter="/welcome.jsp"/>
</action-mappings>
��action �������ת������û��ִ������Ķ��⶯����
ҳ�����ת���Ĵ�������:
<a href="welcome.do">ת��</a>
������ת�볬������ʱ��������ת��ForwardAction parameterָ�����Դ��
3.11.3 ʹ��IncludeAction
IncludeAction���÷���ForwardAction���÷��Ƚ����ƣ��������ForwardAction��
��ת��action �������Դ����IncludeAction���������action ��Ӧ����Դ��
������IncludeAction�����Դ����:
<actio��-mapplngs>
<action path="/welcome"
type="org.apache. struts.actions. IncludeAction"
parameter="/welcome.jsp"/>
</action-mappings>

��action ���ھ�welcome.jsp ��Ϊ��Դ���롣
ҳ���и�����ظ�action ������Դ�Ĵ�������:
<jsp:include page="welcome.do"/><br>
����Ĵ��뽫���welcome action �������Դ�����ҳ�档
3.11.4 ʹ��SwitchAction
SwitchAction ��Ҫ����ģ��֮����л�����һ��Ӧ��֮�д��ڶ��ģ��ʱ��ʹ��
SwitchAction�ڲ�ͬģ��֮���action ֮���л������൱����ġ�
�������web.xml �У���������Struts �����������ļ�������һ����Ϊϵͳ��һ��ģ
����أ���web.xml �����ô�������:
<servlet>
<! ����Struts �ĺ��Ŀ�����-->
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<'һָ��Struts �ĵ�һ�������ļ�-->
<lnlt-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</inlt-param>
<!һָ��Struts �ĵڶ��������ļ�����Ϊwawa ģ������һ��
<lnlt-param>
<param-name>config/wawa</param-name>
<param-value>/WEB-INF/struts-configl.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
��Ӧ�ð�����һ��wawa ��ģ�飬����struts-config1.xml �ļ�������һ��action����
action ����������:
<action-mappings>
<action path="/welcome" forward="/welcome.jsp"/>
</action-mappings>
��action �Ķ���dz��򵥣������ҳ���ת�����������Ҫ��Ӧ�õ�ҳ�������
action������ʹ������SwitchAction��
����SwitchActionҲ�൱�򵥣�ֻ��Ҫ����path��type ���Լ��ɡ�������SwitchAction
�������:
<action-mappings>
<action path="/moduleSwitch" type="org.apache.struts.actions.SwithcAction"/>
</action-mappings>
��ʹ��SwitchAction ʱ�������������д���������:��һ����prefix������ָ��ģ
��լ��:��һ����page������ָ����ģ���е���Դ·����������ҳ���г������Ӷ�wawa
ģ���welcome action ����ҳ��ij������Ӵ�������:
<a href=doduleSwitch.do?prefix=/wawa&page=/welcome.do">����һ��ģ��</a>
����ij������ӵ�ַ�У�/wawa��ģ�����page��Ӧwawaģ���µ�welcome��action

--
        __       ___   ____    ____  ___         ��                   
       |  |     /   \  \   \  /   / /   \      ����      sadman       
   ��ӭ��Java�������\  \   \/   / /  ^  \      �c��                  
 .--.  |  |   /  /_\  \  \      / /  /_\  \  �t�������r               
 |  `--'  |  /  _____  \  \    / /  _____  \    ���� �s               
  \______/  /__/     \__\  \__/ /__/     \__\ �t�D�D�s                

�� ��Դ:�������ʵBBS bbs.tju.edu.cn��[FROM: 211.81.54.113]
Technical Details
Message-ID: <4dD2eA$A8U@bbs.tju.edu.cn>
Path: arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!proxad.net!feeder1-2.proxad.net!87.106.161.54.MISMATCH!feeder1.news.weretis.net!newsfeeder.dynfx.net!weretis.net!newsfeed.datemas.de!news.isoc.lu!news.shec6.edu.cn!news.byr.edu.cn!TJU

Show Full Headers
Complete Article Headers
X-Google-Thread: f6cb0,c6f47016c3873a55,start
X-Google-Attributes: gidf6cb0,domainid0,public,usenet
X-Google-Language: Chinese,GB
Path: arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!proxad.net!feeder1-2.proxad.net!87.106.161.54.MISMATCH!feeder1.news.weretis.net!newsfeeder.dynfx.net!weretis.net!newsfeed.datemas.de!news.isoc.lu!news.shec6.edu.cn!news.byr.edu.cn!TJU
From: sadman.bbs@bbs.tju.edu.cn.no.spam (��ң)
Newsgroups: cn.bbs.comp.lang.java
Subject: [ת]struts�м��ֳ��õ�Action
Date: 26 Nov 2008 08:32:10 GMT
Organization: �����ʵBBSվ
Message-ID: <4dD2eA$A8U@bbs.tju.edu.cn>
Mime-Version: 1.0
Content-Type: text/plain; charset="gb2312"
Content-Transfer-Encoding: 8bit
X-Filename: Java/M.1227688330.A