关于struts如何在action中实现多个处理方法
2008-07-17 17:39
627 查看
原本一个action对应一个exctue方法做业务处理,那么是不是很浪费呢?怎么让一个action可以包含多个处理方法呢?
1,继承(a)DispatchAction,(b)MappingDispatchAction,(c)LookupDispatchAction
2,分别适用于什么情况,a,b都可以通过在form的action和link等传递一个参数过去,让struts框架得知需要调用action中哪个方法,但是a的耦合性没有b的好。
3,a的配置文件
查看复制到剪切板打印
<action
attribute="buyForm"
input="/buy.jsp"
name="buyForm"
path="/buy"
parameter="ope"
scope="request"
type="prj11_1.action.BuyAction" />
[/code]
查看复制到剪切板打印
<html:form action="/add">
insert book : <html:text property="book"/><html:errors property="book"/><br/>
<html:submit/><html:cancel/>
</html:form>
<hr>
show book:<logic:present name="cart">
<logic:iterate id="book" name="cart">
<bean:write name="book"/>
<html:link action="/delete" paramId="BOOK" paramName="book">delete</html:link>
</logic:iterate>
</logic:present>
调用了继承b的action通过配置文件,直接可以确定调用那个action方法了。注意parameter="delete"和parameter="add"。
c的配置文件
<action
attribute="lrForm"
input="/lr.jsp"
name="lrForm"
parameter="ope"
path="/lr"
scope="request"
type="prj11_1.action.LrAction" />
c可以用来判断2个不同功能按钮到底怎么做出来。但是要结合资源文件来使用。
jsp页面
查看复制到剪切板打印
<html:form action="/lr">
account : <html:text property="account"/><br/>
password : <html:password property="password"/><br/>
<html:submit property="ope"><bean:message key="info.login"/></html:submit>
<html:submit property="ope"><bean:message key="info.register"/></html:submit>
</html:form>
资源文件
info.login=login
info.register=register
action的代码
查看复制到剪切板打印
public class LrAction extends LookupDispatchAction {
protected Map getKeyMethodMap() {
Map map=new HashMap();
map.put("info.login","login");
map.put("info.register","register");
return map;
}
public ActionForward login(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LrForm lrForm = (LrForm) form;
return null;
}
public ActionForward register(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LrForm lrForm = (LrForm) form;
return null;
}
必须实现getKeyMethodMap
1,继承(a)DispatchAction,(b)MappingDispatchAction,(c)LookupDispatchAction
2,分别适用于什么情况,a,b都可以通过在form的action和link等传递一个参数过去,让struts框架得知需要调用action中哪个方法,但是a的耦合性没有b的好。
3,a的配置文件
查看复制到剪切板打印
<action
attribute="buyForm"
input="/buy.jsp"
name="buyForm"
path="/buy"
parameter="ope"
scope="request"
type="prj11_1.action.BuyAction" />
<html:form action="/buy.do?ope=add"> insert book : <html:text property="book"/><html:errors property="book"/><br/> <html:submit/><html:cancel/> </html:form> <hr> show book:<logic:present name="cart"> <logic:iterate id="book" name="cart"> <bean:write name="book"/> <html:link action="/buy?ope=delete" paramId="BOOK" paramName="book">delete</html:link> </logic:iterate> </logic:present><action attribute="buyForm" input="/buy.jsp" name="buyForm" path="/buy" parameter="ope" scope="request" type="prj11_1.action.BuyAction" /> [code=HTML]<html:form action="/buy.do?ope=add"> insert book : <html:text property="book"/><html:errors property="book"/><br/> <html:submit/><html:cancel/> </html:form> <hr> show book:<logic:present name="cart"> <logic:iterate id="book" name="cart"> <bean:write name="book"/> <html:link action="/buy?ope=delete" paramId="BOOK" paramName="book">delete</html:link> </logic:iterate> </logic:present>
这段代码就调用a的action。到底区别在哪里呢?<html:link action="/buy?ope=delete> <html:form action="/buy.do?ope=add">就在这里,系统通过add和delete来识别调用的方法,但是jsp必须知道是哪个action。这样不太好。
b的配置文件
查看复制到剪切板打印
<action
attribute="buyForm"
input="/buy.jsp"
name="buyForm"
path="/add"
parameter="add"
scope="request"
type="prj11_1.action.BuyAction" />
<action
attribute="buyForm"
input="/buy.jsp"
name="buyForm"
path="/delete"
parameter="delete"
scope="request"
type="prj11_1.action.BuyAction" />
[code]<action
attribute="buyForm"
input="/buy.jsp"
name="buyForm"
path="/add"
parameter="add"
scope="request"
type="prj11_1.action.BuyAction" />
<action
attribute="buyForm"
input="/buy.jsp"
name="buyForm"
path="/delete"
parameter="delete"
scope="request"
type="prj11_1.action.BuyAction" />
[/code]
查看复制到剪切板打印
<html:form action="/add">
insert book : <html:text property="book"/><html:errors property="book"/><br/>
<html:submit/><html:cancel/>
</html:form>
<hr>
show book:<logic:present name="cart">
<logic:iterate id="book" name="cart">
<bean:write name="book"/>
<html:link action="/delete" paramId="BOOK" paramName="book">delete</html:link>
</logic:iterate>
</logic:present>
<html:form action="/add"> insert book : <html:text property="book"/><html:errors property="book"/><br/> <html:submit/><html:cancel/> </html:form> <hr> show book:<logic:present name="cart"> <logic:iterate id="book" name="cart"> <bean:write name="book"/> <html:link action="/delete" paramId="BOOK" paramName="book">delete</html:link> </logic:iterate> </logic:present>
调用了继承b的action通过配置文件,直接可以确定调用那个action方法了。注意parameter="delete"和parameter="add"。
c的配置文件
<action
attribute="lrForm"
input="/lr.jsp"
name="lrForm"
parameter="ope"
path="/lr"
scope="request"
type="prj11_1.action.LrAction" />
c可以用来判断2个不同功能按钮到底怎么做出来。但是要结合资源文件来使用。
jsp页面
查看复制到剪切板打印
<html:form action="/lr">
account : <html:text property="account"/><br/>
password : <html:password property="password"/><br/>
<html:submit property="ope"><bean:message key="info.login"/></html:submit>
<html:submit property="ope"><bean:message key="info.register"/></html:submit>
</html:form>
<html:form action="/lr"> account : <html:text property="account"/><br/> password : <html:password property="password"/><br/> <html:submit property="ope"><bean:message key="info.login"/></html:submit> <html:submit property="ope"><bean:message key="info.register"/></html:submit> </html:form>
资源文件
info.login=login
info.register=register
action的代码
查看复制到剪切板打印
public class LrAction extends LookupDispatchAction {
protected Map getKeyMethodMap() {
Map map=new HashMap();
map.put("info.login","login");
map.put("info.register","register");
return map;
}
public ActionForward login(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LrForm lrForm = (LrForm) form;
return null;
}
public ActionForward register(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LrForm lrForm = (LrForm) form;
return null;
}
public class LrAction extends LookupDispatchAction { protected Map getKeyMethodMap() { Map map=new HashMap(); map.put("info.login","login"); map.put("info.register","register"); return map; } public ActionForward login(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { LrForm lrForm = (LrForm) form; return null; } public ActionForward register(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { LrForm lrForm = (LrForm) form; return null; }
必须实现getKeyMethodMap
相关文章推荐
- 关于struts里面action方法的命名规范
- 关于mysql处理百万级以上的数据时如何提高其查询速度的方法
- 自学SSH框架之---struts(三):源码分析struts1如何实现Action单例模式
- 关于struts三种action后台接收参数的方法
- 关于mysql处理百万级以上的数据时如何提高其查询速度的方法
- php实现表单多按钮提交action的处理方法
- 关于struts如何实现跨页面的表单参数的传递呢
- Struts2一个Action内包含多个请求处理方法的处理
- 关于eclipse+struts action找不到问题解决方法 There is no Action mapped for namespace
- struts2框架中Action必须实现execute方法?和Struts参数传递
- python如何实现——日期加上天数的处理方法
- 关于mysql处理百万级以上的数据时如何提高其查询速度的方法
- js实现表单多按钮提交action的处理方法
- 关于mysql处理百万级以上的数据时如何提高其查询速度的方法
- struts2.3.1.2 使用动态方法配置 Action,使得一个Action可以处理多个请求
- python如何实现——日期加上天数的处理方法
- Opencv3.0-python的那些事儿:(九)、Opencv关于如何读取大量视频帧进行处理的方法
- Struts2中一个Action多个请求处理方法的三种实现方式
- struts2 中同一个action的实现中对应多个input的处理方法
- struts2.0中如何实现struts1.2中dispatchaction的功能