`

struts1自定义方法及struts1 Action 配置

阅读更多

Action 继承 DispatchAction 
public class UserAction extends DispatchAction{
private UserBO bo = new UserBOImpl() ;
public ActionForward add(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
  UserForm ff =(UserForm)form;
  UserModel model = new UserModel();
  try{
   BeanUtils.copyProperties(model, ff) ;
  }catch(Exception e){
   e.printStackTrace() ;
  }
  bo.addUserModel(model) ;
  ff.reset(mapping, request) ;
  return mapping.findForward("search") ;
}
public ActionForward update(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
  UserForm ff =(UserForm)form;
  UserModel model = new UserModel();
  try{
   BeanUtils.copyProperties(model, ff) ;
  }catch(Exception e){
   e.printStackTrace() ;
  }
  bo.updateUserModel(model) ;
  return mapping.findForward("search") ; 
  
  
  
  
  
}
}
在提交页面添加隐藏域
<html:hidden property="method" value="add"/>
当提交 到上面的 action 当中后  他就自动 去找 add 这个方法执行了  
还有必须在mxl  当中配置
<action path="/userOperator"   type="com.rhcj.customer.struts.action.UserAction"
    name="userForm"
    scope="request"
    parameter="method"
    validate="false">
   <forward name="search" path="/customer/search.jsp"></forward>
  </action>

parameter="method"  这个属性

在struts-config.xml里的<action  parameter="method" >就可以了
form 里 action.do?method=xxx
就可以了!

 

 

 

struts1 Action 配置

 

action元素的所有配置会被映射到ActionMapping对象中。

下面是action元素的每个属性的作用描述:

attribute

在struts将JSP页面的表单对象封装成一个ActionForm对象后,会将这个ActionForm对象保存在request作用域中或者session作用域中,attribute属性就是作为key被存储到作用域中。

在JSP页面可以直接使用EL表达式去获取ActionForm对象:

${requestScope.对象名.属性}

或者

${sessionScope.对象名.属性}

这里的对象名就是attribute属性定义的值。

注意:当action元素中定义了name属性后,attribute属性的值将被忽略。

如果当前action需要用到ActionForm时,name属性是必须的,attribute属性就是非必须的。

一般情况下,attribute属性值与name属性值的值相同。

cancellable

可 取的值为:true,false,yes,no。在JSP页面的表单中,<html:cancel />标签允许退出当前Action,如果cancellable属性值为真(true,yes),则一切正常。如果cancellable属性为假 (false,no),则点击cancel按钮后发生org.apache.struts.action.InvalidCancelException异常。

默认为false。

catalog

The name of a commons-chain catalog in which to look up a command to be executed as part of servicing this request. Only meaningful if "command" is also specified.

className

某个实现ActionMapping类的子类的全路径名(包括包名)。可以自定义一个ActionMapping的子类。

默认为<action>元素的父节点<action-mappings>的type属性,如果未定义则默认为org.apache.struts.action.ActionMapping

command

The name of a commons-chain command which should be looked up and executed as part of servicing this request.

extends

The path of the ActionConfig that this object should inherit properties from.

forward

某个servlet或者jsp页面或者其他资源的相对路径。如果使用了forward属性,则当前action被触发时,会跳转到forward属性指定的资源,不会继续进行处理,当然也会忽略type属性。

<action path="/login" forward="/form/login.jsp" />

当 用户访问"/login.do"时,会forward到"/form/login.jsp"页面,Struts内部会使用 RequestDispatcher.forward()方法。这是一个很好的隐藏JSP页面的真实路径方法。可以将JSP页面放在WEB-INF目录 下,这样只能通过"*.do"或者被Action调用的形式访问。

include

作用同forward属性,可以包含某个资源,内部是通过RequestDispatcher.include()方法实现。 同样会忽略type属性。

input

当前action的提交页面路径(默认)或者其他资源的相对路径。使用ActionMapping.getInputForward()可以返回input属性指定的资源路径。

当FormBean的验证方法vaildate返回不为null的ActionErrors时,将返回input属性指定的路径,如果没有指定input属性,将抛出异常(java.lang.IllegalArgumentException: The path of an ForwardConfig cannot be null

当在action元素中定义了name属性时,input属性是必须定义的。

name

FormBean的name,应该与<form-bean>元素中的name属性相同,这样才能将FormBean与当前action绑定起来。

如果有了name属性,则必须定义input属性。

attribute属性与name属性类似,但是name是必须的,attribute不是必须的。

Action是通过name属性去寻找自己的FormBean,而不是attribute属性。

parameter

此 属性结合DispatchAction类使用。当parameter属性值为method,则访问链接"/userAction?method=add" 时,在继承了DispatchAction的Action类中会调用自定义的add方法。实现不同的操作,自动调用不同的业务处理方法。不用手动去写if else代码了。

具体,请参看《Struts1.X-DispatchAction类-根据请求参数实现业务分派》

path

以"/"开头,不带文件扩展名的路径,Struts根据path属性来选择相应的Action处理用户的请求。比如当某个请求地址为"show.do",则path属性应该为"/show",这样才能找到合适的Action处理用户的请求。

prefix

指 定填充当前 Action 关联 FormBean 时 ,要添加到请求参数名称的前缀,因此,如果请求参数名为 "username" 并且 prefix 属性被设置为 "search" ,则将对 FormBean 调用一个名为 setSearchUsername() 的方法,只有指定了 name 属性,本属性才有效

roles

以逗号分割的一段role角色名,只有这些角色才能访问当前Action,其他用户访问后会抛出【org.apache.struts.chain.commands.UnauthorizedActionException】异常。

scope

FormBean的作用域,可取的值为request和session,默认为session。如果未定义name属性,则这个属性也就么意义了。

suffix

作用同prefix,suffix为后缀,prefixx为前缀。

type

完整的类名,包括包名,此类应该是org.apache.struts.action.Action类的子类。如果定义了forward属性或者include属性,则type属性被忽略。

unknown

可取的值:true,false,yes,no。当为真时(true,yes),当前这个Action将处理所有未找到相应处理Action的请求。只能有一个Action的unknown属性为真。默认为false。

validate

可取的值:true,false,yes,no。当为真时(true,yes),在进入Action处理类前,是否调用ActionForm Bean的validate()方法对表单数据进行验证。默认为true。

分享到:
评论

相关推荐

    struts2 自定义标签

    在Struts2中,自定义标签通常由Action类和结果页面共同完成,提供了一种声明式编程的方式,降低了视图与控制层的耦合度。 二、自定义标签的优点 1. 提高代码可读性:自定义标签将复杂的业务逻辑封装起来,使得HTML...

    struts2自定义结果类型demo

    这个"struts2自定义结果类型demo"可能包含了上述所有步骤的代码示例,包括配置文件、自定义结果类型类以及相关的Action配置。对于初学者,这是一个很好的实践案例,可以帮助理解Struts2的扩展机制和控制流程。通过...

    Struts2自定义分页标签

    总之,自定义Struts2分页标签是一项涉及服务器端和客户端交互的工作,需要理解分页原理,掌握Struts2框架的标签库开发,以及熟练运用各种开发工具。通过这种方式,你可以为项目构建出更灵活、高效的分页功能。

    struts2自定义拦截器配置心得

    Struts2自定义拦截器的配置是Struts2框架中一个非常重要的功能,它允许开发者在Action执行前后插入自定义的逻辑,以实现如权限验证、日志记录、性能监控等多种需求。以下是对标题和描述中涉及的知识点的详细说明: ...

    Struts2自定义校验框架

    - XML配置:在`struts.xml`或相应的Action配置文件中,使用`&lt;validators&gt;`标签定义自定义校验器,通过`&lt;field-validator&gt;`指定需要应用该校验器的字段。 - 注解配置:在Action类的属性上使用自定义注解,通过注解...

    基于struts2 自定义标签 分页

    1. **创建自定义标签**:在Struts2中,自定义标签是通过实现`org.apache.struts2.views.jsp.TagSupport`接口来创建的。你需要创建一个Java类,继承这个接口,并实现相关方法。例如,你可以创建一个名为`PagingTag`的...

    Struts自定义类型转换器

    ### Struts自定义类型转换器 #### 一、概述 在Web开发中,表单提交的数据通常是字符串形式的,而在业务逻辑处理时往往需要将这些数据转换为其他类型的对象(如日期、数字等)。Struts框架为了更好地处理这种类型...

    struts2 自定义验证程序的实现方法详解

    ### Struts2 自定义验证程序的实现方法详解 #### 一、Struts2 内建验证程序实现的分析 在探讨如何实现自定义验证程序之前,我们先来了解一下 Struts2 的内置验证机制。Struts2 提供了丰富的内置验证器(Validator...

    struts2自定义拦截器

    在Struts2的配置文件(如struts.xml)中,我们需要声明并配置自定义拦截器。可以通过`&lt;interceptors&gt;` 标签定义拦截器栈,然后在`&lt;package&gt;` 下通过`&lt;interceptor&gt;` 标签声明拦截器,并通过`...

    Struts 2 自定义MVC 框架

    1. **配置Struts 2**:设置struts.xml配置文件,定义Action类、结果类型、拦截器等。这一步骤可以理解为定制控制器的行为。 2. **创建Action类**:根据业务需求编写Action类,实现业务逻辑。Action类是模型和控制器...

    Struts2自定义类型转换

    1. **创建自定义类型转换器**:通过继承`StrutsTypeConverter`并实现`convertFromString`和`convertToString`方法。 2. **配置类型转换规则**: - 对于**全局类型转换**,在类路径下创建`xwork-conversion....

    ssh项目(自定义struts1)

    在这个项目中,自定义的Struts1可能意味着开发者对默认的Struts1行为进行了扩展或修改,以满足特定需求。 2. **Spring框架**: 虽然在标题中没有明确提到Spring,但在SSH项目中,Spring通常用于管理对象依赖关系(DI...

    Struts2自定义标签

    为了在JSP页面中使用自定义标签,我们需要在Action类中进行相应的配置。例如,我们可以定义一个抽象类`AbstractResAction`,并在其中使用Java反射机制来调用自定义标签的方法。 ```java public abstract class ...

    Struts2 自定义标签

    在Struts2的配置文件(通常是`struts.xml`)中,添加标签库的配置,让框架知道如何找到并使用这些自定义标签。 ```xml &lt;struts&gt; &lt;!-- 其他配置 --&gt; &lt;constant name="struts.custom.i18n.resources" value=...

    struts2自定义标签

    在Struts2的配置文件(如struts.xml)中,我们需要定义Action和对应的视图结果,确保自定义标签能够在页面上正确渲染。 5. **在JSP页面中使用自定义标签**: 最后,在JSP页面中,我们可以像使用其他Struts2标签...

    Struts2自定义拦截器

    全局拦截器是在struts.xml配置文件中定义的,它们会应用于所有Action或者指定的Action集。全局拦截器通常用于处理跨Action的需求,比如用户登录验证、性能监控等。创建全局自定义拦截器需要以下步骤: 1. **编写...

    struts2 action 配置方法 &&struts2的配置文件

    Struts2是一个强大的MVC框架,它在设计上吸收了XWork的核心机制,尤其是在Action的处理上。...同时,通过调整`struts.properties`,可以根据项目需求自定义Struts2的行为,使得框架更好地适应项目需求。

    struts2自定义类型转换器

    2. **配置转换器**:为了让Struts2知道何时使用自定义的转换器,我们需要在配置文件(通常是struts.xml)中进行声明。可以使用`&lt;conversion-property&gt;`标签来指定转换器应用于哪个字段,或者全局注册转换器。 ```...

Global site tag (gtag.js) - Google Analytics