在实际应用中,每个action都要处理多个业务,所以每个Action都会包含多个处理业务逻辑的方法,针对不同的客户端请求,Action会调用不同的方法进行处理,就要使用动态方法调用。
方法一:
在使用动态方法调用时,jsp里面Form表单的action属性必须符合如下格式:
<s:form action="Action名字!方法名称">或者<s:form action="Action名字!方法名称.action">
在struts.xml文件中配置如下:
<action name="Action名称" class="包名.Action类名">
<result>视图UR</result>
</action>
这个方法就能让jsp动态访问Action中的不同方法。
方法二:
使用method属性
Action元素除了name,class属性以外,还有一个method属性,该属性用于指定要执行的Action方法,在struts.xml文件中的配置如下:
<action name="Action名字" class="包名.Action类名" method="Action类名中的方法的名称">
<result>视图UR</result>
</action>
因为为每一个action都指定了要处理的方法名称,所以在jsp中form表单action的名称可以直接写struts.xml文件配置的action的名称,格式如下:
<s:form action="action名字.action">或者<s:form action="Action名字">
这种方法对业务逻辑层的每一个方法都要在struts.xml文件设置其对应的action,这种方法虽然简单容易理解,但是为业务逻辑层每一个方法配置都一个action,会使得struts.xml文件过于庞大,如果业务逻辑层要处理的方法特别多时,不推荐使用该方法。
方法三:
使用通配符
为了解决struts.xml过于庞大的问题,struts2推出一种通配符解决这个问题。下面我以一段代码来说明:
<action name="user_*" class="com.test.action.userAction" method="{1}">
<result>/user_{1}.jsp</result>
</action>
几点说明如下:
(1)user_*:user_之后可以匹配任意字符,比如user_add。
(2)method="{1}":表示method属性值匹配的第一个“*”的内容,比如name="user_add",则method=“add”。
(3)user_{1}.jsp:这里的{1}与method属性值中的{1}表示的含义相同,都表示匹配第一“*”的内容,比如name="user_add",则返回的视图为user_add.jsp。
注意:这里的name属性值只有一个“*”,其实还可以有两个,三个或者多个,比如含有两个的name="*_*" ,此时们可以使用{1},{2}来表示每个“*”的内容。
使用通配符时的检索规则,在struts.xml中如果能找到name属性值与请求的Action名完全一致时,则匹配该action元素,而不会匹配使用通配符的配置。如果没有找到,才会匹配通配符。且按照配置文件的配置顺序依次匹配,最先符合的action元素将会被匹配。
另外,这里讲下默认的action配置元素default-action-ref,其作用是当用户找不到对应的action元素值时,系统将调用默认的Action来接受用户请求信息。其配置规则如下:
<default-action-ref name="user"/>
<action name="user" class="com.test.action.userAction" method="userAdd">
<result>/success.jsp</result>
</action>
在上述代码中使用了default-action-ref元素配置了一个默认的Action,该元素只包含一个name属性,属性名字为user,表面默认的Action为user所对应的Action类。在该文件中必须使用action元素对应名称为user的Action进行配置,例如上面的代码action name="user"配置,否则,默认的Action是不起作用的。
相关推荐
3. **Spring事务管理**:插件允许Struts2的Action方法直接参与到Spring的事务管理中,无需关心事务的开启和提交。 4. **AOP集成**:结合Spring的AOP能力,可以为Struts2的Action提供切面增强,如性能监控、日志记录...
4. **值栈(Value Stack)**:Struts2的模型部分主要依赖于值栈,它是`org.apache.struts2.util`包的一部分,用于存储Action的属性和结果,方便视图层直接访问。 5. **结果类型(Result Types)**:`org.apache....
它允许开发者直接访问对象属性,支持动态方法调用,使得视图层的绑定变得简单而强大。 **6. freemarker和JSP视图技术** Struts2支持多种视图技术,包括FreeMarker模板引擎和传统的JSP。开发者可以根据需求选择合适...
OGNL(Object-Graph Navigation Language)是Struts2中用于数据绑定的语言,它允许在标签中直接访问Action对象的属性。例如,`<s:property value="#session.user.name" />`就能显示会话中用户对象的姓名属性。 五、...
Struts2是一个非常著名的Java Web开发框架,它基于MVC(Model-View-Controller)设计模式,极大地简化了企业级应用的开发流程。Struts2的核心是Action类,它负责处理用户请求,与业务逻辑交互,并将结果传递给视图...
Struts2是一个非常著名的Java Web开发框架,它提供了一种模型-视图-控制器(MVC)架构,便于开发者创建动态、数据驱动的Web应用程序。标题中的"struts2-2.3.32-all"指的是Struts2框架的2.3.32版本的完整包,通常包含...
Struts2-Spring-Plugin-2.2.3.1.jar是Apache Struts框架与Spring框架集成的一个插件,主要用于帮助开发者在基于Struts2的应用程序中无缝地使用Spring进行依赖注入(Dependency Injection,DI)和控制反转(Inversion...
Struts2标签经常与OGNL(Object-Graph Navigation Language)表达式一起使用,允许动态访问和操作对象的属性。例如,`s:property value="%{#session.user.name}"`将显示Session中的user对象的name属性值。 **7. ...
Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它简化了开发过程,提供了强大的表单验证、国际化、动态方法调用等功能。 1. **MVC设计模式**:MVC模式是软件工程中常用的设计模式...
- `ognl.jar`: Object-Graph Navigation Language,用于表达式语言,支持Action属性的访问和动态方法调用。 - `freemarker.jar`: Freemarker是一个强大的模板引擎,用于生成动态内容,如HTML页面。 - `xwork-core...
总的来说,Struts2-core-2.0.11.jar是Struts2框架的心脏,包含了许多关键组件,使得开发人员能够高效、灵活地构建动态、交互式的Web应用。然而,值得注意的是,由于这是一个较旧的版本,可能不包含后来的改进和安全...
Struts2的核心在于其Action类,它是业务逻辑处理的入口,负责接收请求、调用业务层方法并返回结果。 Spring框架则是一个全面的企业级应用开发框架,提供包括DI、AOP、事务管理、数据访问/集成、MVC在内的多种功能。...
10. **javassist.jar**:Java编程辅助库,用于运行时修改和分析类,Struts 2使用它来实现动态方法调用。 以上就是“struts-2.3.15.3所有jar包”的主要组成部分及其功能。了解这些库的作用有助于我们更好地理解和...
OGNL支持属性访问、方法调用、动态对象创建等。 4. **freemarker.jar**:FreeMarker是一个模板引擎,用于生成HTML或其他格式的动态内容。在Struts 2中,它通常被用作视图层来渲染结果。 5. **javassist.jar**:这...
首先,这个压缩包中可能包含了`struts2-json-plugin-x.x.x.jar`,这是Struts2的JSON插件,它扩展了Struts2的核心功能,允许Action结果以JSON格式返回。这个插件实现了将Action的属性自动转换为JSON对象的功能,简化...
核心库包括struts2-core-2.x.x.jar,它是框架的基础,提供Action、Interceptor等核心概念。xwork-2.x.x.jar是XWork框架,是Struts2的基石。ognl-2.6.x.jar是对象图导航语言,用于在框架内部表达对象的访问和操作。...
2. **struts2-convention-plugin.jar** - 提供了约定优于配置的特性,允许根据类名和方法名自动映射Action。 3. **struts2-config-browser-plugin.jar** - 用于在Web应用中浏览器查看Struts配置的插件。 4. **xwork-...
### Struts 2 Action 动态方法调用详解 #### 一、引言 在Struts 2框架中,Action动态方法调用是一项非常实用的功能。它允许开发者在一个Action类中定义多个处理方法,而不仅仅局限于传统的`execute()`方法。这种...
这个"struts2-3-1常用包"集合包含了Struts2与Spring和Hibernate集成时所需的常用库,帮助开发者高效地搭建和管理基于这三个框架的项目。以下是关于Struts2、Spring和Hibernate的核心知识点及其在实际应用中的作用: ...
Struts2作为一款流行的Java Web框架,其动态访问调用机制是其强大特性的体现之一。在实际开发中,我们经常需要根据用户的不同操作来执行不同的业务逻辑,这时`struts2`的`method`属性就显得尤为重要。本文将深入探讨...