`

Struts2的处理流程

阅读更多
StrutsPrepareAndExecuteFilter是Struts 2框架的核心控制器,它负责拦截由<url-pattern>/*</url-pattern>指定的所有用户请求,当用户请求到达时,该Filter会过滤用户的请求。默认情况下,如果用户请求的路径不带后缀或者后缀以.action结尾,这时请求将被转入Struts 2框架处理,否则Struts 2框架将略过该请求的处理。当请求转入Struts 2框架处理时会先经过一系列的拦截器,然后再到Action。与Struts1不同,Struts2对用户的每一次请求都会创建一个Action,所以Struts2中的Action是线程安全的。


为应用指定多个struts配置文件


在大部分应用里,随着应用规模的增加,系统中Action的数量也会大量增加,导致struts.xml配置文件变得非常臃肿。为了避免struts.xml文件过于庞大、臃肿,提高struts.xml文件的可读性,我们可以将一个struts.xml配置文件分解成多个配置文件,然后在struts.xml文件中包含其他配置文件。下面的struts.xml通过<include>元素指定多个配置文件:


Xml代码
1.<?xml version="1.0" encoding="UTF-8"?> 
2.<!DOCTYPE struts PUBLIC  
3.    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
4.    "http://struts.apache.org/dtds/struts-2.0.dtd"> 
5.<struts> 
6.    <include file="struts-user.xml"/> 
7.    <include file="struts-order.xml"/> 
8.</struts> 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-user.xml"/>
<include file="struts-order.xml"/>
</struts>

通过这种方式,我们就可以将Struts 2的Action按模块添加在多个配置文件中。

动态方法调用



如果Action中存在多个方法时,我们可以使用!+方法名调用指定方法。如下:

Java代码
1.public class HelloWorldAction{  
2.    private String message;  
3.    ....  
4.    public String execute() throws Exception{  
5.        this.message = "我的第一个struts2应用";  
6.        return "success";  
7.    }  
8.      
9.    public String other() throws Exception{  
10.        this.message = "第二个方法";  
11.        return "success";  
12.    }  
13.} 
public class HelloWorldAction{
private String message;
....
public String execute() throws Exception{
this.message = "我的第一个struts2应用";
return "success";
}

public String other() throws Exception{
this.message = "第二个方法";
return "success";
}
}
假设访问上面action的URL路径为: /struts/test/helloworld.action
要访问action的other() 方法,我们可以这样调用:
/struts/test/helloworld!other.action
如果不想使用动态方法调用,我们可以通过常量struts.enable.DynamicMethodInvocation关闭动态方法调用。

Xml代码
1.<constant name="struts.enable.DynamicMethodInvocation" value="false"/> 
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>

使用通配符定义action




Xml代码
1.<package name="itcast" namespace="/test" extends="struts-default"> 
2.    <action name="helloworld_*" class="cn.itcast.action.HelloWorldAction" method="{1}"> 
3.        <result name="success">/WEB-INF/page/hello.jsp</result> 
4.    </action> 
5.</package> 
<package name="itcast" namespace="/test" extends="struts-default">
<action name="helloworld_*" class="cn.itcast.action.HelloWorldAction" method="{1}">
<result name="success">/WEB-INF/page/hello.jsp</result>
</action>
</package>


Java代码
1.public class HelloWorldAction{  
2.    private String message;  
3.    ....  
4.    public String execute() throws Exception{  
5.        this.message = "我的第一个struts2应用";  
6.        return "success";  
7.    }  
8.      
9.    public String other() throws Exception{  
10.        this.message = "第二个方法";  
11.        return "success";  
12.    }  
13.} 
public class HelloWorldAction{
private String message;
....
public String execute() throws Exception{
this.message = "我的第一个struts2应用";
return "success";
}

public String other() throws Exception{
this.message = "第二个方法";
return "success";
}
}

要访问other()方法,可以通过这样的URL访问:/test/helloworld_other.action



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/huanzhulouzhu/archive/2010/12/25/6097676.aspx
分享到:
评论

相关推荐

    struts2小程序 struts2代码

    在`struts2小程序`中,可能会包含一个或多个Action类,负责处理用户请求并返回相应的结果。 2. **配置文件**:Struts2使用XML配置文件(struts.xml或struts.properties)来定义Action、结果类型、拦截器等。这些...

    应用Struts2处理表单数据

    Struts2是一个强大的Java web应用程序框架,用于构建MVC(模型-视图-控制器)架构的应用程序。在处理表单数据方面,Struts2提供了一种高效且灵活的方法,使得开发者能够轻松地从用户提交的表单中获取并处理数据。这...

    struts2框架处理流程

    包含了struts2的处理流程以及struts2的配置文件,并附有处理流程显示图,更加清楚直观。

    Struts2 应用程序示例

    首先,Struts2是基于Model-View-Controller (MVC)设计模式的,它简化了从前端到后端的交互流程。在Struts2中,Action类扮演控制器的角色,处理用户的请求,并调用模型层进行业务逻辑处理。同时,Struts2通过配置文件...

    struts2工作流程

    总的来说,Struts2提供了一个灵活且强大的架构,用于组织和控制Web应用程序的流程。通过其内置的拦截器和自定义拦截器,可以扩展和定制各种功能,满足不同项目的需求。同时,它的模型驱动和类型转换机制简化了数据...

    Struts2框架程序示例

    8. **异常处理**: Struts2提供了一套完善的异常处理机制,能够捕获并优雅地处理应用程序中的异常,提供友好的错误提示页面。 在"StrutsFramework"这个压缩包中,可能包含了以下内容:基础的Struts2项目结构,例如...

    struts2项目开发

    Struts2 项目开发 Struts2 是一个基于 Java Web 的框架,广泛应用于 Web ...通过了解 Struts2 框架的应用、开发流程、技术架构、实践经验等方面的知识点,可以更好地应用 Struts2 框架,开发高质量的 Web 应用程序。

    Struts2之异常处理案例struts003

    在Struts2中,异常处理是一项重要的功能,它确保在应用程序遇到错误时能够优雅地处理,提供友好的用户反馈,并保持系统稳定性。下面将详细讨论Struts2中的异常处理机制及其相关知识点。 1. **异常处理机制概述** ...

    struts2建立流程

    Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,...

    Struts2工作流程

    在整个流程中,Struts2通过配置文件(如Struts.xml)来配置Action、拦截器和结果,使得开发者能够灵活地定义应用程序的行为。此外,Struts2还提供了丰富的标签库,简化了视图层的开发,使得开发者可以更专注于业务...

    struts2示例程序

    这个"struts2示例程序"是为了帮助初学者理解并熟悉Struts2框架的基本概念和工作流程。该程序基于Struts2的2.0.14版本,这是Struts2的一个较早版本,但其核心概念和机制在后续版本中仍然适用。 Struts2的核心特性...

    struts2实例小程序1

    - 你的小程序可能是为了演示基本的请求响应流程,比如用户提交一个表单,Struts2接收并处理这个请求,然后返回一个简单的响应,如"Hello, Struts2!"。 通过实践这个小程序,你可以逐步了解Struts2的工作原理,以及...

    留言板留言板struts2留言板struts2

    这个"留言板留言板struts2"项目,显然是一个基于Struts2实现的简单留言板系统,旨在展示Struts2的核心功能和开发流程。下面将详细介绍Struts2框架以及在该项目中可能涉及的关键知识点。 1. **Struts2框架概述**:...

    struts2登录程序源码

    Struts2是一个强大的MVC(Model-View-...通过学习和实践这个"struts2登录程序源码",初学者可以掌握Struts2的基本架构,了解如何处理用户输入、验证、业务逻辑以及与视图的交互。这为更复杂的Web应用开发奠定了基础。

    Struts2视频教程

    - **定义与特点**:Struts2是一款基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它继承了Struts1的优点,同时在设计上更加灵活、易用,支持拦截器、类型转换、文件上传等特性。Struts2使用过滤...

    struts2流程与流程图

    一个请求在Struts 2框架中的处理大概分为以下几个步骤。  客户端提交一个(HttpServletRequest)请求,如上文在浏览器中输入 http://localhost: 8080/bookcode/ch2/Reg.action就是提交一个(HttpServletRequest)...

    struts1和struts2的区别

    - **Struts2**: 直接使用Action来处理表单数据,不再需要专门的ActionForm。Action可以是一个普通的Java对象,并且可以通过标签库直接访问其属性。此外,Struts2还支持ModelDriven模式,允许使用模型对象来代替...

    Struts2小程序源代码

    Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展且易于管理的企业级应用程序。这个"Struts2小程序源代码"提供了丰富的学习资源,帮助开发者深入理解Struts2的核心概念和技术。 首先,我们来看看标题...

Global site tag (gtag.js) - Google Analytics