通过Struts构建Web应用

702 views
641 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
702
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
10
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

通过Struts构建Web应用

  1. 1. 通过 Struts 构建 Web 应用 吴卫雄
  2. 2. 培训目的 <ul><li>本次培训的目的是为了让有一定 Java 开发基础的参与者能在最短时间内熟悉和掌握基于 Struts 的 Web 应用的开发工作。 </li></ul><ul><li>在本次培训中将重点讲述以下内容: </li></ul><ul><ul><ul><li>Struts 以及相关技术的介绍 </li></ul></ul></ul><ul><ul><ul><li>Struts 的组成部份和结构 </li></ul></ul></ul><ul><ul><ul><li>Struts 构建 Web 应用的过程 </li></ul></ul></ul>
  3. 3. JSP Model 2 体系结构
  4. 4. JSP Model 2 概述 <ul><li>JSP 的意图是使创建动态页面更容易。 JSP 首先是作为 servlet 的替代引入的,还有就是 MS 的 ASP 。 Servlet 的强大功能当作易于创建服务器页面的工具提供给开发者。但强大的功能伴随着巨大的责任。很多团队发现,如果他们一不小心,他们的项目就会因为纠缠如麻的页面变的容易崩溃。进一步的特性需要使用复杂的脚本程序。但脚本程序是非常难于重用的—除非你在页面间把代码“拷贝粘贴”。 </li></ul>
  5. 5. JSP Model 2 概述 <ul><li>工具页面也可以包括进来,但他们很难被组织在一起,并且造成非常丑陋的“资源”树。有些东西会出错。 </li></ul><ul><li>很多开发人员很快意识到, JSPs 和 servlets 可以一起使用来部署 web 应用。 Servlet 可以应付控制流,而 JSP 则可专注于讨厌的编写 HTML 的任务。在例行课程中,结合使用 JSP 和 servlet 开始被称为 Model 2 ( 单独使用 JSP 称为 Model 1) 。 </li></ul><ul><li>当然,从 Sun 哪里仍然没什么新东西 ... 而且很多人很快指出 JSP Model 2 类似于经典的 Model-View-Controller 架构。 </li></ul>
  6. 6. JSP Model 2 概述 <ul><li>在很多场合,现在交互使用 Model 2 和 MVC 这两个词已经很平常了,虽然还有一些争论,即一个应用是否是 MVC ,以及是否支持经典的观察者通知模式。没有观察者通知的模型( Model ) - 视图( View ) - 控制器( Controller )有时被称为 MVC2 或 Web MVC 。 </li></ul>
  7. 7. <ul><li>Struts 通过提供一个控制器 Servlet 实现了 Sun 的 Model 2 架构,这个控制器可以用来管理 JSP 页面和其他表现设备之间的流程。 Struts 通过使用 视图层转移控制 ( ActionForward ) 和 映射控制 ( ActionMapping ) 来保证表现层之外的控制流决策来实现 MVC 模式。 JSP 可以引用一个逻辑目标。控制器组件在运行时提供准确的 URI 。 </li></ul>Struts 如何实现 Model2 与 MVC
  8. 8. 什么是 Struts 框架? <ul><li>Struts 框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于 MVC 的 web 应用程序的开发。 </li></ul><ul><li>通过本教程,你将看到 Struts 是如何清晰地区分控制、事务逻辑和外观,从而简化了开发应用程序过程的。我们还将介绍 Struts 提供的类如何使得开发工作更加简单,这些类包括: </li></ul><ul><li>1 、控制程序流程的类 </li></ul><ul><li>2 、实现和执行程序事务逻辑的类 </li></ul><ul><li>3 、自定义标签库使得创建和验证 HTML 表单更容易 </li></ul>
  9. 9. 应用程序功能层
  10. 10. Struts 体系结构
  11. 11. Struts MVC 状态图 red:controller purple:model green:view
  12. 12. Struts 应用程序活动图
  13. 13. Struts 架构
  14. 14. Struts 顶级程序包
  15. 15. 组件介绍 <ul><li>控制器基础类( ActionServlet ) </li></ul><ul><li>ActionServlet 表示 MVC 结构中的控制器部分,它需要完成控制器所需的前端控制及转发请求等职责。其次, ActionServlet 被实现为一个专门处理 HTTP 请求的 Servlet ,它同时具有 servlet 的特点。在 Struts 1.1 中它主要完成以下功能: ActionForm 是一个抽象类,你必须通过继承来实现自己的类。 </li></ul><ul><li>接收客户端请求 </li></ul><ul><li>根据客户端的 URI 将请求映射到一个相应的 Action 类 </li></ul><ul><li>从请求中获取数据填充 Form Bean (如果需要) </li></ul><ul><li>调用 Action 类的 execute() 方法获取数据或者执行业务逻辑 </li></ul><ul><li>选择正确的视图响应客户 </li></ul>
  16. 16. 组件介绍 <ul><li>控制器表单对象( ActionForm ) </li></ul>ActionForm 表示 HTTP 窗体中的数据,可以将其看作是模型和视图的中介,它负责保存视图中的数据供模型或者视图使用。 Struts 1.1 文档中把它比作 HTTP 和 Action 之间的防火墙,这体现了 ActionForm 具有的过滤保护的作用,只有通过 ActionForm 验证的数据才能够发送到 Action 处理。 ActionForm 是与一个或多个 ActionConfig 关联的 JavaBean ,在相应的 action 的 execute 方法被调用之前, ActionForm 会自动利用请求参数来填充自己(初始化属性)。 ActionForm 是一个抽象类,你必须通过继承来实现自己的类。 ActionForm 首先利用属性的 getter 和 setter 方法来实现初始化,初始化完毕后, ActionForm 的 validate 方法被调用,你可以在其中来检查请求参数的正确性和有效性,并且可以将错误信息以 ActionErrors 的形式返回到输入窗体。否则, ActionForm 将被作为参数传给 action 的 execute 方法以供使用。
  17. 17. 组件介绍 <ul><li>控制器( Action ) </li></ul><ul><li>我们通过继承 Action 类来实现具体的执行类。具体 Action 类的功能一般都在 execute (以前是 perform 方法)方法中完成,其中主要涉及到以下几个方面: ActionForm 是一个抽象类,你必须通过继承来实现自己的类。 </li></ul><ul><ul><li>辅助 ActionForm 进行一些表单数据的检查 </li></ul></ul><ul><ul><li>执行必要的业务逻辑,比如存取数据库,调用实体 bean 等 </li></ul></ul><ul><ul><li>更新服务器端的 bean 数据,后续对象中可能会用到这些数据,比如在 JSP 中利用 bean:write 来获得这些数据 </li></ul></ul><ul><ul><li>根据处理结果决定程序的去处,并以 ActionForward 对象的形式返回给 ActionServlet </li></ul></ul>
  18. 18. 组件介绍 <ul><li>映射控制对象( Action Mapping ) </li></ul>控制器通过动作和请求信息相对应的映射配置说明什么信息转发到什么 Action 类。这些配置映射信息是存储在特定的 XML 文件(比如 struts-config.xml )。 这些配置信息在系统启动的时候被读入内存,供 struts framework 在运行期间使用。 在内存中,每一个 <action> 元素都与 org.apache.struts.action.ActionMapping 类的一个实例对应。
  19. 19. 组件介绍 转移控制对象( ActionForward ) 用来抉择当一个 Action 结束时控制器将指示操作转移的对象。这个对象可以在配置文件里进行配置。
  20. 20. 组件介绍 ActionError 用来存储和回收错误。
  21. 21. J2EE 应用目录结构 <ul><li>WebApp ____web 应用根路径 </li></ul><ul><li>|____images/css/html/jsp/… ____web 视图资源 </li></ul><ul><li>|____META-INF </li></ul><ul><li>| |____Manifest.mf ____ 存储包和扩展的配置数据,如安全性和版本信息 </li></ul><ul><li>|____WEB-INF </li></ul><ul><li>|____web.xml ____web 应用行为描述 </li></ul><ul><li>|____*.properties/*.xml/*.tld ____ 配置文件 </li></ul><ul><li>|____lib </li></ul><ul><li>| |____*.jar ____web 应用引用类库 </li></ul><ul><li>|____classes </li></ul><ul><li>|____*.classes ____web 应用代码 </li></ul><ul><li>|____ *.properties/*.xml ____ 配置文件 </li></ul>
  22. 22. 范例
  23. 23. 范例
  24. 24. 范例
  25. 25. 范例
  26. 26. 范例
  27. 27. 范例
  28. 28. 推荐阅读 <ul><li>建议大家在业余时间阅读下列书籍或电子文档: </li></ul><ul><li>《 Jakarta Struts 》英文版 </li></ul><ul><li>《 Struts 在行动》中文版 </li></ul><ul><li>《 Struts 架构和标签库介绍》 </li></ul><ul><li>《 Struts 资料 1 、 2 》 </li></ul><ul><li>注:本人有以上书籍电子版,有兴趣的朋友可以来我这里复制。 </li></ul>
  29. 29. THANK YOU!

×