1.简介:
没有struts之前,使用servlet,最常用的是 doGet,doPost,service方法,如果有些经验的程序员会合理的使用这三个方法:如在用户发出get的请求时,将用户请求在doGet方法中处理,用户发出post请求时,将用户的请求用doPost请求处理,必要时加上service方法去处理那些在一个servlet中必须执行的请求,用户的请求大体也就这三类,但是如果细分,一个“编辑”,“删除”,“查看”等操作都是doGet的范围,当然也可以都写到serice方法中或 doPost中处理,这样为了区分这些请求,我们通常都要在程序中加入一个判断的参数,如:operate,然后在程序中判断 if operate.equals("update")....,if operate.equals("del")....,if operate.equals("view")....等,实际上这只是个简单的逻辑,如果业务更加复杂,你可能写更多的类时operate的参数,这样就造成程序中有若干if..else if...else if ..,即便你有非常好的编码规范,整齐的缩进,这个程序也相当难维护;而用到struts时,你又可能把这些参数都写到execute方法中;那么最好的方法还是将这些逻辑分开处理,如果执行“编辑”操作的时候调用“编辑”对应的方法,执行“删除”的时候调用“删除”对应的方法...将是比较理想的结果,为了实现这个应用要求,struts引入许多类型的工具类,如:MappingDispathAction,LookDispachAction,DispatchAction,以满足不同要求的需要,这样你在struts-config.xml文件的action元素中增加 parameter属性即可实现这个功能。
2.下面是Struts中的一些常用Action如DispatchAction/LookupDispatchAction/MappingDispatchAction/ForwardAction/IncludeAction的总结
② 第二就是使UserAction继承DispatchAction,不需要重写execute方法:
public ActionForward create(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
// 進行一些create的逻辑
// ……
return mapping.findForward("createUser");
}
public ActionForward save(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
// 進行一些save的逻辑
// ……
return mapping.findForward("saveUser");
}
DispatchAction 在配置上和一般Action稍有不同,就是要在Action配置中多一个parametr属性,这个属性可以指定执行DispatchAction中对应的方法。
struts-config.xml 中:
<action path="/processUser" type="examples.UserAction"
name="userForm"
scope="request"
parameter="method">
<forward name="createUser" path="/pages/listUser.jsp"/>
<forward name="saveUser" path="/pages/saveUser.jsp"/>
</action>
4.详细请参考:
(1)
http://blog.csdn.net/newpiaoyun/archive/2008/09/10/2907703.aspx
(2)
http://huangliangbao.iteye.com/blog/816332
5.总结:
这样我们就可以不再在execute方法中写那么多的if(){}else(){}咯
一、
让Action方法继承至DispatchAction
package com.cdl.mail.struts.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
public class StudentAction extends DispatchAction {
//不需要重写execute方法了
// public ActionForward execute(ActionMapping mapping, ActionForm form,
// HttpServletRequest request, HttpServletResponse response) {
// String paraStr = request.getParameter("actionMethod");
// System.out.println("execute方法获得参数:" + paraStr);
// return mapping.findForward("success");
// }
public ActionForward isExist(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
String paraStr = request.getParameter("actionMethod");
System.out.println("isExist方法获得参数:" + paraStr);
return mapping.findForward("success");
}
public ActionForward save(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
String paraStr = request.getParameter("actionMethod");
System.out.println("save方法获得参数:" + paraStr);
return mapping.findForward("success");
}
}
二、在struts-config.xml中配置<action>的parameter属性,相当于map的key,一个key可以对应多个value哦!
<action parameter="actionMethod" path="/student"
type="com.cdl.mail.struts.action.StudentAction">
<set-property property="cancellable" value="true" />
<forward name="success" path="/index.jsp" />
</action>
三、在视图层testPara.jsp中,在url中配置参数key-value,相当于一个key可以对应多个value哦!实际上就是一个类对应到多个方法!
<body>
<a href="student.do?actionMethod=isExist">执行isExist方法</a> <br>
<a href="student.do?actionMethod=save">执行save方法</a> <br>
</body>
最后,有图有真相:
.
分享到:
相关推荐
6. **application**: 指定应用资源束的名称,不推荐使用,现在推荐使用`<messageresources>`元素的`parameter`属性进行配置。 7. **bufferSize**: 默认值为4096,用于在处理文件上传时设置输入文件缓冲区的大小。...
- **`<action path="/..." type="..." parameter="...">`**:通过`parameter`属性可以指定参数值,这在使用`ForwardAction`时特别有用,因为这种情况下,Action可以直接转发到一个特定的URL,而无需进行任何业务逻辑...
每个`<action>`元素包含`path`(请求路径)、`parameter`(请求参数)、`forward`(转发的页面或Action)等属性。 4. `<global-exceptions>`:定义全局异常处理,可以将特定类型的异常映射到一个处理页面。 5. `...
- **根元素 `<struts-config>`**: - **子元素**: - `<data-sources>`: 数据源配置。 - `<form-bean>`: 表单Bean的定义。 - `<global-exception>`: 全局异常处理配置。 - `<global-forward>`: 全局转发配置。 -...
<action path="/aFormOnlyAction" type="org.apache.struts.actions.ForwardAction"> name="someForm" input="someJSP.jsp" parameter="someOtherJSP.jsp" </action> ``` 当请求路径为`/aFormOnlyAction`时...
在`struts-config.xml`中,Action配置使用`<action>`元素,它包含`path`属性定义请求路径,`type`属性指定Action类,`parameter`属性用于指定提交的请求参数,`forward`元素定义了Action执行成功后的转发路径。...
每个`<action>`元素都通过`parameter`属性指定了要执行的方法名。这种方式更加灵活,适合处理复杂逻辑的应用程序。 ### 总结 通过上述三种不同的实现方式,我们可以根据实际项目需求选择最适合的Action设计模式。...
2. **<action>**:定义Action,每个Action都与一个Servlet中的处理方法相对应,`path`属性定义了请求的URL路径,`type`属性指定Action的类,`parameter`属性用于传递请求参数。 3. **<action-mapping>**:配置...
在`struts-config.xml`中,`<action>`标签是用来配置Action的核心元素,其主要属性包括: 1. `path`: 这个属性定义了Action的URL路径,不包含文件扩展名`.do`。例如,`/Register`。Struts1会自动处理`.do`扩展名的...
接着,为了使用这些资源文件,我们需要在Struts配置文件(struts-config.xml)中声明一个`<message-resources>`元素,指定资源文件的位置。例如: ```xml <struts-config> <global-exceptions/> <global-forwards...
在这个"Struts的小列子三个Action"中,我们将深入探讨Struts框架的核心概念,特别是Action组件在其中的作用。 首先,Action是Struts框架中的关键组成部分,它是业务逻辑与请求处理的桥梁。在描述中提到的"三个...
`<action>` 元素中的 `path="/Welcome"` 指定 URL `/Welcome.do` 将被映射到 `org.apache.struts.actions.ForwardAction` 类,`parameter="/pages/Wel...` 表示请求处理完成后,页面将转向 `/pages/Wel...`。...
在这个例子中,`<action>` 标签定义了一个具体的 Action 映射,其中 `path` 属性指定请求的 URL,`type` 属性指定了 Action 类的全限定名,`input` 属性指定了当 Action 执行失败时返回的 JSP 页面路径。`<exception...
Struts2的主要配置文件是`struts.xml`,在此文件中需要定义Action、拦截器等元素。 **2. 集成Spring与Struts2**: 除了在Struts2配置文件中进行上述设置外,还需要在`web.xml`文件中进行Spring的初始化,具体包括:...
此标签用于生成HTML的`<form>`元素,其`action`属性指定处理用户提交表单的组件。在Struts框架中,会根据`struts-config.xml`配置文件中定义的`action`来定位和调用相应的组件。例如: ```xml ...
- Struts通过URL路径与Action进行关联,如`<action path="/login" type="com.example.LoginAction" parameter="method">`,其中`path`是请求路径,`type`是Action类,`parameter`指定调用哪个Action方法。...
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <load-on-...
<action path="/upload" type="ResourceAction" name="batchUploadForm" parameter="method" scope="request"> <forward name="success" path=""/> </action> </action-mappings> ``` 在Action类中,我们需要...
7. **Plug-in配置**:插件扩展了Struts的功能,例如 strutstags-tiles 插件用于集成Tiles布局框架,`<plug-in>`元素下的`<set-property>`可以设置插件的属性。 8. **Exception处理**:`<global-exceptions>`允许...