`

struts <action>元素属性parameter的作用

    博客分类:
  • SSH
阅读更多


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>



最后,有图有真相:













.



分享到:
评论

相关推荐

    web_xml中ActionServlet中的属性

    6. **application**: 指定应用资源束的名称,不推荐使用,现在推荐使用`&lt;messageresources&gt;`元素的`parameter`属性进行配置。 7. **bufferSize**: 默认值为4096,用于在处理文件上传时设置输入文件缓冲区的大小。...

    struts 配置文件 标记库

    - **`&lt;action path="/..." type="..." parameter="..."&gt;`**:通过`parameter`属性可以指定参数值,这在使用`ForwardAction`时特别有用,因为这种情况下,Action可以直接转发到一个特定的URL,而无需进行任何业务逻辑...

    struts 配置

    每个`&lt;action&gt;`元素包含`path`(请求路径)、`parameter`(请求参数)、`forward`(转发的页面或Action)等属性。 4. `&lt;global-exceptions&gt;`:定义全局异常处理,可以将特定类型的异常映射到一个处理页面。 5. `...

    struts2 配置文件

    - **根元素 `&lt;struts-config&gt;`**: - **子元素**: - `&lt;data-sources&gt;`: 数据源配置。 - `&lt;form-bean&gt;`: 表单Bean的定义。 - `&lt;global-exception&gt;`: 全局异常处理配置。 - `&lt;global-forward&gt;`: 全局转发配置。 -...

    一个struts的action跳转大全

    &lt;action path="/aFormOnlyAction" type="org.apache.struts.actions.ForwardAction"&gt; name="someForm" input="someJSP.jsp" parameter="someOtherJSP.jsp" &lt;/action&gt; ``` 当请求路径为`/aFormOnlyAction`时...

    Struts配置文件详解

    在`struts-config.xml`中,Action配置使用`&lt;action&gt;`元素,它包含`path`属性定义请求路径,`type`属性指定Action类,`parameter`属性用于指定提交的请求参数,`forward`元素定义了Action执行成功后的转发路径。...

    Action使用说明

    每个`&lt;action&gt;`元素都通过`parameter`属性指定了要执行的方法名。这种方式更加灵活,适合处理复杂逻辑的应用程序。 ### 总结 通过上述三种不同的实现方式,我们可以根据实际项目需求选择最适合的Action设计模式。...

    Struts配置详解.doc

    2. **&lt;action&gt;**:定义Action,每个Action都与一个Servlet中的处理方法相对应,`path`属性定义了请求的URL路径,`type`属性指定Action的类,`parameter`属性用于传递请求参数。 3. **&lt;action-mapping&gt;**:配置...

    Struts1配置

    在`struts-config.xml`中,`&lt;action&gt;`标签是用来配置Action的核心元素,其主要属性包括: 1. `path`: 这个属性定义了Action的URL路径,不包含文件扩展名`.do`。例如,`/Register`。Struts1会自动处理`.do`扩展名的...

    struts国际化功能

    接着,为了使用这些资源文件,我们需要在Struts配置文件(struts-config.xml)中声明一个`&lt;message-resources&gt;`元素,指定资源文件的位置。例如: ```xml &lt;struts-config&gt; &lt;global-exceptions/&gt; &lt;global-forwards...

    Struts的小列子三个Action

    在这个"Struts的小列子三个Action"中,我们将深入探讨Struts框架的核心概念,特别是Action组件在其中的作用。 首先,Action是Struts框架中的关键组成部分,它是业务逻辑与请求处理的桥梁。在描述中提到的"三个...

    第一个struts成功例子

    `&lt;action&gt;` 元素中的 `path="/Welcome"` 指定 URL `/Welcome.do` 将被映射到 `org.apache.struts.actions.ForwardAction` 类,`parameter="/pages/Wel...` 表示请求处理完成后,页面将转向 `/pages/Wel...`。...

    struts的总结(struts1.x)

    在这个例子中,`&lt;action&gt;` 标签定义了一个具体的 Action 映射,其中 `path` 属性指定请求的 URL,`type` 属性指定了 Action 类的全限定名,`input` 属性指定了当 Action 执行失败时返回的 JSP 页面路径。`&lt;exception...

    ssh配置总结

    Struts2的主要配置文件是`struts.xml`,在此文件中需要定义Action、拦截器等元素。 **2. 集成Spring与Struts2**: 除了在Struts2配置文件中进行上述设置外,还需要在`web.xml`文件中进行Spring的初始化,具体包括:...

    Struts标签的使用说明

    此标签用于生成HTML的`&lt;form&gt;`元素,其`action`属性指定处理用户提交表单的组件。在Struts框架中,会根据`struts-config.xml`配置文件中定义的`action`来定位和调用相应的组件。例如: ```xml ...

    配置 struts1.3

    - Struts通过URL路径与Action进行关联,如`&lt;action path="/login" type="com.example.LoginAction" parameter="method"&gt;`,其中`path`是请求路径,`type`是Action类,`parameter`指定调用哪个Action方法。...

    赖家材Struts 传智播客笔记下载

    &lt;servlet-class&gt;org.apache.struts.action.ActionServlet&lt;/servlet-class&gt; &lt;init-param&gt; &lt;param-name&gt;config&lt;/param-name&gt; &lt;param-value&gt;/WEB-INF/struts-config.xml&lt;/param-value&gt; &lt;/init-param&gt; &lt;load-on-...

    Struts批量上传文件实例word

    &lt;action path="/upload" type="ResourceAction" name="batchUploadForm" parameter="method" scope="request"&gt; &lt;forward name="success" path=""/&gt; &lt;/action&gt; &lt;/action-mappings&gt; ``` 在Action类中,我们需要...

    Struts1.3和config配置详解

    7. **Plug-in配置**:插件扩展了Struts的功能,例如 strutstags-tiles 插件用于集成Tiles布局框架,`&lt;plug-in&gt;`元素下的`&lt;set-property&gt;`可以设置插件的属性。 8. **Exception处理**:`&lt;global-exceptions&gt;`允许...

Global site tag (gtag.js) - Google Analytics