`
gstarwd
  • 浏览: 1525034 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

struts的parameter功能

阅读更多

    没有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引入DispatchAction ,这样你在struts-config.xml文件的action元素中增加parameter属性即可实现这个功能:

例如appfuse的配置:
<action
         path="/saveUser"
         type="org.appfuse.webapp.action.UserAction"
         name="userForm"
         scope="request"
         input="edit"
         parameter





="method"
         unknown="false"
         validate="false"
       >
         <forward
           name="list"
           path="/WEB-INF/pages/userList.jsp"
           redirect="false"
         />
         <forward
           name="edit"
           path="/WEB-INF/pages/userForm.jsp"
           redirect="false"
         />
       </action>
 

parameter="method"这个参数就是说,在用户提交请求时取得method参数,根据method参数调用相应的方法,如/editUser.html?method=Delete就是调用对应action中的Delete方法,这样你就可以写一个Action类处理很多的逻辑,而不是象从前那样在一个方法里面加上若干参数,或者直接建若干个action来处理。

例如appfuse的UserAction
package org.appfuse.webapp.action;
import ...

public final class UserAction extends BaseAction {
    
       public ActionForward add(ActionMapping mapping, ActionForm form,
                                HttpServletRequest request,
                                HttpServletResponse response)
       throws Exception {
           ...
       }
       public ActionForward cancel(ActionMapping mapping, ActionForm form,
                                   HttpServletRequest request,
                                   HttpServletResponse response)
       throws Exception {
           ...
       }
       public ActionForward delete(ActionMapping mapping, ActionForm form,
                                   HttpServletRequest request,
                                   HttpServletResponse response)
       throws Exception {
           ...
       }
       public ActionForward edit(ActionMapping mapping, ActionForm form,
                                 HttpServletRequest request,
                                 HttpServletResponse response)
       throws Exception {
           ...
       }
       public ActionForward save(ActionMapping mapping, ActionForm form,
                                 HttpServletRequest request,
                                 HttpServletResponse response)
       throws Exception {
           ...
       }
       public ActionForward search(ActionMapping mapping, ActionForm form,
                                   HttpServletRequest request,
                                   HttpServletResponse response)
       throws Exception {
           ...
       }
    
       public ActionForward unspecified(ActionMapping mapping, ActionForm form,
                                        HttpServletRequest request,
                                        HttpServletResponse response)
       throws Exception {
        
           ...
       }
       private void sendNewUserEmail(HttpServletRequest request, UserForm userForm)
       throws Exception {
           ...
       }
}
 

当你没有传入method参数,或者没有符合参数的方法时,程序将执行unspecified方法;当然method只是一个逻辑名字而已,你也可以使用其他名字,如:method1,method2,go2,asdad等

 
分享到:
评论

相关推荐

    struts国际化功能

    Struts的国际化(Internationalization,简称i18n)功能允许开发者为不同地区的用户提供本地化的界面和内容,使得同一应用在不同语言环境中能够自然地展现。下面我们将深入探讨Struts如何实现国际化功能。 首先,...

    struts1教程.doc

    &lt;message-resources parameter="struts/ApplicationResources"/&gt; &lt;plug-in className="org.apache.struts.tiles.TilesPlugin"&gt; &lt;!-- Tiles配置 --&gt; &lt;/struts-config&gt; ``` 在实际开发中,还需要创建ActionForm...

    Struts1.3和config配置详解

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

    struts1标签库详解

    Struts 提供了非常多的标签,依据功能和使用习惯的不同被分到了五个标签库中:Bean Tags、HTML Tags、Logic Tags、Nested Tags 和 Tiles Tags。下面将对前三个标签库中的标签进行详细的介绍。 Bean Tags Bean Tags...

    JSP文件上传功能(struts)

    本文将详细讲解如何利用JSP和Struts实现文件上传功能。 首先,我们要了解文件上传的基本概念。在Web应用中,文件上传是指用户通过浏览器选择本地文件并将其发送到服务器的过程。这个过程通常涉及到HTML表单、...

    struts的总结(struts1.x)

    Struts 1.x 支持数据类型的自动转换,但也可以通过自定义转换器来扩展这种功能。 **1. 自定义数据转换器** - 创建一个实现 `org.apache.struts.util.LabelValueConverter` 接口的类。 - 实现 `convert` 方法来完成...

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

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

    struts1的I18例子

    通过以上步骤和知识点,你可以了解并实现Struts1框架下的国际化功能,为用户提供多语言支持,提升应用的全球适用性。在实际开发中,确保对各种语言环境的支持,能提高用户体验,并有助于拓宽应用的市场覆盖范围。

    struts 配置

    在Struts 1.x版本中,配置文件主要包括`web.xml`和`struts-config.xml`,它们是实现Struts框架功能的核心配置。 **一、web.xml配置文件** `web.xml`是每个Web应用程序的部署描述符,它告诉服务器如何启动和运行...

    Struts2架构剖析

    ActionContext是每个Action执行的上下文环境,它包含了一组对象,如session、application、parameter等,这些都是Action在执行过程中可能需要的数据。ActionContext为Action提供了访问请求和会话数据的途径。 总的...

    自己写的struts程序

    总的来说,你的"自己写的struts程序"是一个典型的Web应用实例,通过Struts框架实现了用户注册功能,涉及了Action、Form Bean、配置文件、视图展示等多个方面。这个练习有助于理解MVC模式和Struts的工作原理,对...

    struts1多国语言的实现

    下面将详细介绍如何在Struts1中实现多国语言功能。 1. **理解基本概念** - **国际化(i18n)**:是指使软件能够在不同的国家和地区使用,主要涉及日期、时间、数字格式、货币单位以及文本翻译等。 - **本地化...

    struts DispatchAction

    使用DispatchAction的另一个优点是,它可以结合Struts的国际化和主题功能,为不同的用户群体提供定制的视图。此外,通过将Action类中的方法组织成逻辑相关的组,可以更方便地进行权限控制和事务管理。 然而,需要...

    struts2 配置文件

    - **功能**: 在开发者、发布者与组装者之间传递配置信息。 - **作用**: 容器启动时从中读取配置信息,并据此装载和配置Web应用。 - **元素结构**: - `&lt;web-app&gt;`: 根元素,所有其他元素均需嵌套在此元素内部。 - `...

    struts1的文件上传

    配置文件中可以指定上传文件的存储路径,例如在struts-config.xml中定义一个action-mapping,设置其`parameter`属性为文件上传的目录。为了更好地管理上传的文件,可以考虑创建多级目录结构,如按照日期或用户ID来...

    struts1实现的文件批量上传

    在本文中,我们将探讨如何使用Struts1框架实现文件的批量上传功能。Struts1是一个经典的Java Web应用程序框架,它提供了模型-视图-控制器(MVC)架构,用于构建动态Web应用。在Struts1中实现文件上传,我们需要考虑...

    struts1实现图片上传

    在这个"struts1实现图片上传"的实践中,我们将深入探讨如何使用Struts1来处理图片上传功能,包括图片预览。 首先,我们需要在Struts1的配置文件`struts-config.xml`中定义一个Action,这个Action将处理图片上传的...

    Struts2访问ServletAPI

    String parameterValue = ServletActionContext.getRequest().getParameter("parameterName"); ``` 同时,也可以通过`HttpServletResponse`设置响应状态码和内容: ```java response.setStatus(HttpServletResponse....

    struts1.x 最简洁国际化 源代码

    - 测试国际化功能时,可以模拟不同的浏览器设置,或者使用`java.util.Locale.setDefault()`临时改变应用的默认`Locale`。 以上就是关于Struts1.x国际化的基本概念和实现方式。通过理解这些知识点,开发者能够构建...

    Struts的小列子三个Action

    6. **例子分析**:虽然描述没有提供具体代码,但我们可以想象这可能是三个不同功能的Action,比如登录验证(LoginAction)、用户注册(RegisterAction)和商品查询(ProductQueryAction)。每个Action处理不同业务...

Global site tag (gtag.js) - Google Analytics