1.获得请求路径的URI,例如url是:http://server/struts2/path1/path2/path3/test.action
2.首先寻找namespace为/path1/path2/path3的package,如果不存在这个package则执行步骤3;如果存在这个package,则在这个package中寻找名字为test的action,当在该package下寻找不到action 时就会直接跑到默认namaspace的package里面去寻找action(默认的命名空间为空字符串“” ),如果在默认namaspace的package里面还寻找不到该action,页面提示找不到action
3.寻找namespace为/path1/path2的package,如果不存在这个package,则转至步骤4;如果存在这个package,则在这个package中寻找名字为test的action,当在该package中寻找不到action 时就会直接跑到默认namaspace的package里面去找名字为test的action ,在默认namaspace的package里面还寻找不到该action,页面提示找不到action
4.寻找namespace为/path1的package,如果不存在这个package则执行步骤5;如果存在这个package,则在这个package中寻找名字为test的action,当在该package中寻找不到action 时就会直接跑到默认namaspace的package里面去找名字为test的action ,在默认namaspace的package里面还寻找不到该action,页面提示找不到action
5.寻找namespace为/的package,如果存在这个package,则在这个package中寻找名字为test的action,当在package中寻找不到action或者不存在这个package时,都会去默认namaspace的package里面寻找action,如果还是找不到,页面提示找不到action。
示例:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="struts" namespace="/test" extends="struts-default"> <action name="helloworld" class="cn.struts.demo.HelloWorldAction" method="execute"> <result name="success">/WEB-INF/page/hello.jsp</result> </action> </package> </struts>
则访问路径为:http://localhost:8080/strutsdemo/test/helloworld(正常情况下是这样访问)
或者是http://localhost:8080/strutsdemo/test/aaa/helloworld
或者是http://localhost:8080/strutsdemo/test/aaa/bbb/helloworld 都可以
注:当在该package下寻找不到action 时就会直接跑到默认namaspace的package里面去寻找action(默认的命名空间为空字符串“” ),对这句话举个例子说明一下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="struts" namespace="/test" extends="struts-default"> </package> <package name="default" namespace="" extends="struts-default"> <action name="helloworld" class="cn.struts.demo.HelloWorldAction" method="execute"> <result name="success">/WEB-INF/page/hello.jsp</result> </action> </package> </struts>
访问的路径还是http://localhost:8080/strutsdemo/test/helloworld,不过此时name为struts的包并没有helloworld这个action,所以现在就到默认命名空间下面的包也即name为default的包中寻找name为helloworld的action,如果该包下面也没有helloworld这个action,则页面会报HTTP-404错误
相关推荐
在传统的Struts2应用中,开发者通常需要在`struts.xml`中定义每个Action及其对应的类、方法、结果页面等,而使用此插件后,大部分配置可以通过命名约定自动完成。 具体来说,当使用`struts2-convention-plugin`时,...
### Struts2中Action的理解与应用 #### 一、Action定义及作用 在Struts2框架中,Action作为控制层的核心组件,承担着接收请求、处理业务逻辑以及返回响应结果的任务。与传统的MVC框架(如Spring MVC)相比,Struts...
* 显示名称配置(<display-name />):用于配置struts应用程序的显示名称,例如简短的文字描述。 * 描述配置():用于配置struts应用程序的描述,例如完整的文字描述。 * 属性设置配置(<set-property />):用于...
### Struts2-4 标签库文件上传下载 #### 概述 Struts2框架提供了丰富的标签库,其中包含了多种用于简化Web开发过程的标签。这些标签不仅可以提高开发效率,还能增强页面的表现力和交互性。特别是对于文件的上传与...
每个`<action>`元素包含了Action的名称、对应的类以及可能的转发路径。 5. **`<controller>`**: 控制器部分,虽然在早期版本的Struts中使用,但在现代版本中已不再常用。在Struts 2中,控制器由Servlet ...
Struts2 拦截器是基于AOP(面向切面编程)的一种实现,它允许在Action调用前后插入特定的操作,提供了灵活的控制流程,增强了框架的功能和可扩展性。拦截器的主要作用包括:增强代码复用性、提供事务管理、日志记录、...
4. **拦截器**:拦截器是Struts 2的一个强大特性,它们按照预定义的顺序执行,可以实现如日志、权限检查、事务管理等通用功能,增强代码复用。 5. **结果类型**:Struts 2支持多种结果类型,如dispatcher(默认,...
7. **拦截器链执行**:在调用Action之前,Struts2会按照配置的顺序执行一系列拦截器。这些拦截器可以实现日志、权限检查、事务控制等功能。每个拦截器都有`preintercept`和`postintercept`方法,分别在调用Action...
需要注意的是,Struts-config.xml 文件中的元素必须按照特定的顺序出现,否则可能会导致 Struts 容器启动时出错。 Struts-config.xml 文件是 Struts 框架的核心配置文件,用于配置 Struts 应用程序的各种设置。通过...
- **Action类**: Struts2中的Action类是业务逻辑处理的主要载体。开发者可以创建自定义的Action类,继承自`com.opensymphony.xwork2.ActionSupport`或其子类,实现业务逻辑方法,并通过`execute()`方法返回一个表示...
在这个“传智播客Struts2.1视频教程”中,重点讲解了Action名称的搜索顺序,这是理解Struts2工作原理的关键部分。 首先,我们需要了解Struts2中Action的基本概念。Action是Struts2的核心组件,负责处理用户的请求并...
至于压缩包子文件的文件名称列表"struts2",这可能是表示包含了一系列与Struts2相关的文件,如示例代码、配置文件或其他相关库。 总之,Struts2是一个成熟的MVC框架,通过Action、Interceptor、Result等核心组件,...
2. **默认的搜索顺序**:对于Struts2中的常量,框架会按照一定的顺序进行搜索,这包括: - `struts2-default.xml` - `struts2-plugin.xml` - `struts.xml` - `struts.properties` - `web.xml`中通过`<include>`...
Struts2框架的配置文件不仅仅是struts.xml,还包括几个核心配置文件,其加载顺序如下: 1. struts-default.xml:提供默认的配置,包含默认拦截器栈和拦截器定义。 2. struts-plugin.xml:插件的配置文件,如果使用...
Action的配置包括Action名称、类名、方法以及对应的URL映射。拦截器是Struts2的一个强大特性,它们按照预定义的顺序在Action执行前后进行处理,可以用于日志记录、权限验证、数据校验等任务。结果类型则定义了Action...
此外,Interceptor(拦截器)是Struts2的重要特性,它可以实现诸如日志记录、权限检查、事务管理等通用功能,并且可以按照特定顺序进行链式调用。 Struts2的配置文件通常为struts.xml,它定义了Action、Result以及...
5. 拦截器:拦截器是Struts2的核心组件,它们按照预设顺序在Action执行前后执行,实现AOP(面向切面编程)功能,如日志记录、权限验证、性能监控等。开发者可以通过自定义拦截器来扩展框架功能。 五、配置与注解 6....
### Action名称的搜索顺序与Action配置的默认值 在Struts2框架中,Action的配置与执行流程至关重要,它不仅决定了Action的执行顺序,还影响着业务逻辑的处理方式及结果展示。本文将深入探讨Action名称的搜索顺序、...
总的来说,Struts2的工作流程大致为:请求到达->过滤器Dispatcher拦截->查找Action映射->创建Action实例->执行拦截器链->调用Action的execute方法->返回Result->渲染视图。这种设计允许开发者将业务逻辑、数据验证、...