`

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>



最后,有图有真相:













.



分享到:
评论

相关推荐

    struts<optionsCollection>应用文档+实例

    struts&lt;optionsCollection&gt;应用文档+实例,我相信会给大家到来帮助

    使用Struts的Action来对数据库进行增、删、改、查四项操作(源码)

    使用Struts的Action来对数据库进行增、删、改、查四项操作&lt;br/&gt;&lt;br/&gt;1、数据库MySQL,创建数据库 Pagination&lt;br/&gt; MySQL.sql用来创建表结构&lt;br/&gt;&lt;br/&gt;连接方式有两种,一种直接JDBC,一种通过连接池,代码中有说明...

    使用Struts的Action和Hibernate来对数据库进行增、删、改、查四项操作(源码)

    autoReconnect=true&useUnicode=true&characterEncoding=GB2312&lt;/value&gt;&lt;br/&gt; &lt;/parameter&gt;&lt;br/&gt; &lt;parameter&gt;&lt;br/&gt; &lt;name&gt;username&lt;/name&gt;&lt;br/&gt; &lt;value&gt;root&lt;/value&gt;&lt;br/&gt; &lt;/parameter&gt;&lt;br/&gt; &lt;parameter&gt;&lt;br/&gt; &lt;name...

    struts框架jar包

    struts-1.3.8 包(&lt;br&gt;&lt;br&gt;antlr-2.7.2.jar&lt;br&gt;bsf-2.3.0.jar&lt;br&gt;commons-beanutils-1.7.0.jar&lt;br&gt;commons-chain-1.1.jar&lt;br&gt;commons-digester-1.8.jar&lt;br&gt;commons-fileupload-1.1.1.jar&lt;br&gt;commons-io-1.1.jar&lt;br&gt;...

    struts标签 <write><logic>

    可以直接运行 , 可以editplues 也可以看内容

    struts2.0中文教程

    发布地址:http://download.csdn.net/source/226103&lt;br&gt;&lt;br&gt;软件说明: &lt;br&gt;struts2.0中文教程&lt;br&gt;&lt;br&gt;[目录]&lt;br&gt;&lt;br&gt;01 为Struts 2.0做好准备 &lt;br&gt;02 常用的Struts 2.0的标志(Tag)&lt;br&gt;03 Struts 2.0的Action讲解 ...

    struts 标签 logic:iterate使用 logic:iterate

    DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;&lt;br&gt;&lt;html&gt;&lt;br&gt; &lt;head&gt;&lt;br&gt; &lt;/head&gt;&lt;br&gt; &lt;body&gt;&lt;br&gt; &lt;table&gt;&lt;br&gt; &lt;tr&gt;&lt;br&gt; &lt;td&gt;&lt;%@ include file="../menu.txt"%&gt;&lt;br&gt; &lt;/td&gt;&lt;br&gt; &lt;/tr&gt;...

    Struts2 入门培训

    4&lt;br&gt;1.3.2. 受控目录 5&lt;br&gt;2. 入门例子 5&lt;br&gt;2.1. 项目 5&lt;br&gt;2.2. 在WEB.XML中,配置FILTERDISPATCHER过滤器 6&lt;br&gt;2.3. 配置STRUTS.PROPERTIES 6&lt;br&gt;2.4. 编写一个简单的ACTION类 7&lt;br&gt;2.5. STRUTS.XML配置文件 8...

    struts2整合spring2的配置

    1. 导入的包&lt;br&gt;&lt;br&gt;l struts2的五个基础包:commons-logging-1.1.jar;...&lt;br&gt;&lt;br&gt;xwork-2.0.0.jar.&lt;br&gt;&lt;br&gt;l spring的核心包:spring.jar&lt;br&gt;&lt;br&gt;l 二者集成开发所需的包:struts-spring-plugin-2.0.6.jar&lt;br&gt;

    struts2 <s:if>标签使用

    struts2 &lt;s:if&gt;标签使用struts2 &lt;s:if&gt;标签使用struts2 &lt;s:if&gt;标签使用struts2 &lt;s:if&gt;标签使用struts2 &lt;s:if&gt;标签使用struts2 &lt;s:if&gt;标签使用

    struts2-指南

    — Web 应用的发展&lt;br&gt;— Model 1 和Model 2&lt;br&gt;— MVC 思想&lt;br&gt;— MVC 模式的优势&lt;br&gt;— 常用MVC 框架及其特征&lt;br&gt;— Struts 1 的基本结构及其存在的问题&lt;br&gt;— WebWork 的基本结构&lt;br&gt;— Struts 2 的起源&lt;br&gt;— ...

    北大青鸟第二学年4.0 Y2所有资料 三

    北大青鸟第二学年4.0 Y2所有资料 三&lt;br&gt;&lt;br&gt;我已经把第二学年所有的课件打包在一起了,一共有5部分,这是第 三部分&lt;br&gt;&lt;br&gt;大家下载时要记得评分,这样你们就不要资源分了&lt;br&gt;&lt;br&gt;Struts&& JSF&lt;br&gt;&lt;br&gt;Oracle&lt;br&gt;&lt;br&gt;...

    Struts+Spring+Hibernate实现上传下载(MyEclipse版)

    在天极网看了一篇用JBuilder实现的“Struts+... &lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;所用软件或包的版本: &lt;br&gt;Struts 1.2 &lt;br&gt;Spring 1.2.8 &lt;br&gt;Hibernate 3.1 &lt;br&gt;Oracle 9i &lt;br&gt;MyEclipse4.1.1 &lt;br&gt;&lt;br&gt;具体代码如下: &lt;br&gt;TFile类:

    JSP+ACCESS毕业设计 网上书店系统 源码+论文

    &lt;br&gt;3-3 Struts的工作流程&lt;br&gt;第三章 网上书店详细设计&lt;br&gt;3-1 需求分析&lt;br&gt;3-2 总体设计&lt;br&gt;3-3 功能设计&lt;br&gt;3-4 数据库设计与实现&lt;br&gt;3-4-1 数据库的需求分析&lt;br&gt;3-4-2 创建数据表的脚本&lt;br&gt;3-5 网上书店基本流程...

    spring+struts+hibernate+dwr+jstl做的实例

    struts.jar&lt;br&gt;spring-web.jar&lt;br&gt;spring-webmvc.jar&lt;br&gt;spring-portlet.jar&lt;br&gt;struts.jar&lt;br&gt;commons-fileupload.jar&lt;br&gt;commons-httpclient.jar&lt;br&gt;freemarker.jar&lt;br&gt;jasperreports-1.3.3.jar&lt;br&gt;commons-io.jar...

    北大青鸟第二学年4.0 Y2所有资料 一

    北大青鸟第二学年4.0 Y2所有资料 一&lt;br&gt;&lt;br&gt;我已经把第二学年所有的课件打包在一起了,一共有5部分,这是第一部分&lt;br&gt;&lt;br&gt;大家下载时要记得评分,这样你们就不要资源分了&lt;br&gt;&lt;br&gt;Struts&& JSF&lt;br&gt;&lt;br&gt;Oracle&lt;br&gt;&lt;br&gt;...

    MLDN框架笔记大全

    &lt;br&gt;07 Struts标签 -LOGIC标签 &lt;br&gt;08 Struts标签- HTML标签 &lt;br&gt;09 Struts高级部分(1)(解决重复提交、上传组件) &lt;br&gt;10 Struts高级部分(2)(常用Action、验证框架、动态Form) &lt;br&gt;11 留言管理程序_使用Struts + DAO...

    MyEclipse 6 Java EE 开发中文手册 第九章完整

    第九章 开发Struts 1.x应用 145&lt;br&gt;9.1 介绍 145&lt;br&gt;9.2 创建Struts项目 147&lt;br&gt;9.2.1 创建Web项目 148&lt;br&gt;9.2.2 加入 Struts开发功能 148&lt;br&gt;9.3 使用Struts工具 150&lt;br&gt;9.3.1 Struts配置文件编辑器 150&lt;br&gt;9.3.2 ...

    北大青鸟第二学年4.0 Y2所有资料 五

    北大青鸟第二学年4.0 Y2所有资料 五&lt;br&gt;&lt;br&gt;我已经把第二学年所有的课件打包在一起了,一共有5部分,这是第五部分&lt;br&gt;&lt;br&gt;大家下载时要记得评分,这样你们就不要资源分了&lt;br&gt;&lt;br&gt;Struts&& JSF&lt;br&gt;&lt;br&gt;Oracle&lt;br&gt;&lt;br&gt;...

    struts2.0官方项目之四(showcase)

    &lt;br&gt;struts2.0官方项目之四(showcase)&lt;br&gt;&lt;br&gt;===================================================&lt;br&gt;Struts2.0官方项目共4个,名字如下:&lt;br&gt;&lt;br&gt;blank&lt;br&gt;mailreader&lt;br&gt;portlet&lt;br&gt;showcase&lt;br&gt;&lt;br&gt;这4个官方...

Global site tag (gtag.js) - Google Analytics