`

从实例看struts2运行原理

 
阅读更多
1.1         简单例子
先做一个最简单的struts2的例子:在浏览器中请求一个action,然后返回一个字符串到jsp页面上显示出来。

第一步:把struts2最低配置的jar包加入的项目中。
         commons-logging-1.0.4.jar
    freemarker-2.3.8.jar
    ognl-2.6.11.jar
    struts2-core-2.0.11.jar
    xwork-2.0.4.jar

第二步:在web.xml中加入拦截器配置。
         <filter>
        <filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>

第三步:把空的struts.xml配置文件放到项目src下面。
         <struts>
 
</struts>

第四部:编写自定义的action类。
package test;
import com.opensymphony.xwork2.ActionSupport;
public class HelloAction extends ActionSupport {
    private String str;
    public String hello() {
       this.str = "hello!!!";
       return "success";
    }
    public String getStr() {
       return str;
    }
    public void setStr(String str) {
       this.str = str;
    }
}

第五步:编写struts.xml配置文件。
<struts>
    <package name="test" namespace="/np" extends="struts-default">
       <action name="hello" class="test.HelloAction" method="hello">
           <result name="success">/hello.jsp</result>
       </action>
    </package>
</struts>

第六步:编写hello.jsp文件。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Test</title>
</head>
<body>
    <h1><s:property value="str"/></h1>
</body>
</html>

第七步:启动tomcat,在浏览器中访问:
         http://localhost:8080/hello/np/hello.action
         hello 是项目名字
         np 命名空间,对应namespace里面的字符串。
         hello.action 其中hello对应action里面的字符串,“.action”表示请求的是一个action。

1.2         运行机制
1)客户端在浏览器中输入一个url地址。
2)这个url请求通过http协议发送给tomcat。
3)tomcat根据url找到对应项目里面的web.xml文件。
4)在web.xml里面会发现有struts2的配置。
5)然后会找到struts2对应的struts.xml配置文件。
6)根据url解析struts.xml配置文件就会找到对应的class。
7)调用完class返回一个字String,根据struts.xml返回到对应的jsp。

1.3         struts2流程

上图来源于Struts2官方站点,是Struts 2 的整体结构。
一个请求在Struts2框架中的处理大概分为以下几个步骤:
1)  客户端初始化一个指向Servlet容器(例如Tomcat)的请求。
2)  这个请求经过一系列的过滤器(Filter)。
3)  接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action。
4)  如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy。
5)  ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类。
6)  ActionProxy创建一个ActionInvocation的实例。
7)  ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8)  一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。
Struts2的核心就是拦截器。Struts.xml中所有的package都要extends="struts-default"。同理与所有的Java类都要extends自Object一样。struts-default.xml里面就是要做以上事情
分享到:
评论

相关推荐

    struts2 拦截器实例

    通过这两个实例,你将更深入地理解Struts2拦截器的工作原理和配置方式,以及它们如何在实际项目中发挥作用。记得在实践中多尝试,理解拦截器如何与其他Struts2组件协作,以提升你的Web应用开发技能。

    struts2简单实例

    总结,"struts2简单实例"展示了如何使用Struts2框架构建一个简单的学生信息查询功能,涵盖了配置文件、Action实现、数据传输以及视图展示等多个方面,是学习和理解Struts2工作原理的好例子。通过这个实例,开发者...

    Struts 2综合应用实例——添加学生信息

    ### Struts 2综合应用实例——添加学生信息 #### 实验背景与目标 在本实验中,我们将通过构建一个简单的Web应用程序——添加学生信息——来深入理解并掌握Struts 2框架的应用。此实验旨在帮助学习者熟悉Struts 2的...

    Struts2综合演示实例

    Struts2是一个强大的...通过学习和实践这个实例,我们可以深入理解Struts2框架的工作原理,掌握如何有效地使用OGNL进行数据绑定,以及如何将Java、JDBC、SQL、JSP和JavaScript协同工作,从而提高开发效率和应用质量。

    Struts2简单实例

    本实例将向您展示如何在MyEclipse环境中搭建并运行一个基础的Struts2项目。 首先,我们需要了解Struts2的基本架构。Struts2的核心组件包括Action类、配置文件(struts.xml)、拦截器(Interceptors)和结果类型(Results...

    struts2重要知识点原理

    FilterDispatcher是Struts2框架的核心控制器,它作为Servlet Filter在Web应用中运行。当用户发起请求时,FilterDispatcher会拦截所有请求。如果请求URL以".action"结尾,FilterDispatcher会将请求交给Struts2框架...

    struts2工作原理

    Struts2的工作原理深入探讨了其内部机制和核心组件,对于理解框架如何处理请求、路由到相应的Action以及渲染响应至关重要。 首先,Struts2并非Struts1的简单升级,而是融合了WebWork的核心,因此在设计和工作流程上...

    struts2 项目源码

    本项目源码提供了一个基础的Struts2应用程序实例,对于初学者来说,这是一个很好的学习资源,可以深入理解Struts2的工作原理和架构。 Struts2的核心组件包括: 1. **Action类**:Action类是业务逻辑的载体,它是...

    Struts2框架做的用户登录的简单实例

    Struts2框架是一个基于Model...这个实例虽然简单,但对于初学者来说,它很好地展示了Struts2框架的基础工作原理和基本的Web应用开发流程。通过这个实例,可以进一步学习和理解Java Web开发,为后续复杂的项目打下基础。

    struts2所有jar以及自带实例项目

    此外,还提供了一个名为"struts2-mailreader-2.0.11.1.war"的示例项目,它是一个具体的Struts2应用实例,可以帮助开发者更好地理解和学习如何在实践中使用Struts2框架。 首先,我们来深入理解Struts2的核心概念和...

    struts2+spring实例程序

    开发者可以通过学习这个实例来理解Struts2的工作原理,以及如何与Spring框架集成。通过查看Action的实现,我们可以看到如何处理HTTP请求,以及如何调用Spring服务。查看配置文件,可以学习如何配置Struts2和Spring的...

    Struts2实例代码

    同时,你还能了解到Struts2框架的核心组件及其工作原理,以及如何组织和管理一个基于Struts2的Java Web项目。这将为你的Java Web开发技能树添加重要的分支,并有助于你在实际项目中更加熟练地运用Struts2框架。

    Struts2工作原理

    本文将深入探讨Struts2的工作流程,从客户端请求到服务器响应的全过程,帮助读者全面理解Struts2框架的运行机制。 #### 客户端请求与Servlet容器 一切始于客户端的一次HTTP请求,该请求指向运行在Tomcat或类似...

    STRUTS2站点,STRUTS2学习实例4

    Struts2是一个强大的Java EE应用程序框架,...通过分析和运行这些文件,你应该能更深入地理解Struts2的工作原理和实际应用。记住,理论结合实践是掌握任何技术的关键,因此确保动手实践每个步骤,并理解背后的原理。

    STRUTS2站点,STRUTS2学习实例10

    "STRUTS2站点,STRUTS2学习实例10"很可能是针对Struts2框架的一个教学资源,旨在帮助开发者深入理解Struts2的工作原理和实践应用。 在Struts2的学习实例10中,我们可能会涵盖以下几个核心知识点: 1. **Action类与...

    Struts2 实例 HelloWorld

    通过这个HelloWorld实例,读者不仅可以了解到Struts2的基本工作原理,还可以学习到如何在Glassfish2上部署和运行Struts2应用。这个简单的实例将为后续更复杂的Struts2应用开发打下坚实的基础。在实践中,随着对...

    struts2简单实例(类型转换)

    通过运行这个实例,初学者可以了解到Struts2如何处理数据类型转换,以及如何在实际项目中应用。此外,这也是理解Struts2框架工作原理和MVC模式的一个好起点。在深入学习Struts2的过程中,你还会遇到拦截器...

    JAVA100例之实例98Struts的学习2

    在学习这个实例时,你需要创建Action类,配置struts.xml文件,编写JSP页面,并通过运行测试来理解Struts2的工作原理。同时,你还会了解到如何在实际项目中整合其他技术,如数据库访问、Spring框架等。 通过这个实例...

    struts2简单实例登录界面

    这个"struts2简单实例登录界面"是为初学者设计的,旨在帮助理解Struts2框架的基本工作原理和应用方式。下面我们将深入探讨Struts2的核心概念以及如何构建一个简单的登录界面。 1. **Struts2框架概述** Struts2作为...

Global site tag (gtag.js) - Google Analytics