Presentation is loading. Please wait.

Presentation is loading. Please wait.

Struts开发技术.

Similar presentations


Presentation on theme: "Struts开发技术."— Presentation transcript:

1 Struts开发技术

2 本课程简介 课程内容 MVC与Struts框架简介 开发视图 扩展控制器 开发模型 配置Stuts应用

3 MVC与Struts框架简介 教学目标 理解MVC的概念 理解JSP Model1 理解JSP Model2 理解Struts框架的结构

4 MVC的概念 MVC是Model-View-Controller的简称,即模型-视图-控制器。

5 MVC结构图

6 视图 视图是用户看到并与之交互的界面,作用如下: 视图向用户显示相关的数据。 接受用户的输入。 不进行任何实际的业务处理。
视图向模型查询业务状态,但不能改变模型。 视图接受模型发出的数据更新事件,从而对用户界面进行同步更新。

7 模型 模型是应用程序的主体部分, 模型表示业务数据和业务逻辑。 一个模型能为多个视图提供数据。
由于应用于模型的代码只需写一次就可以被多个视图重用,所以提高了代码的可重用性。

8 控制器 控制器接受用户的输入并调用模型和视图去完成用户的需求。
当Web用户单击Web页面中的递交按钮来发送HTML表单时,控制器本身不输出任何东西和做任何处理。 控制器接收请求并决定调用哪个模型组件去处理请求,然后决定调用哪个视图来显示模型处理返回的数据。

9 MVC处理过程 首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理。 然后模型根据用户请求进行相应的业务逻辑处理,并返回数据。
最后控制器调用相应的视图格式化模型返回的数据,并通过视图呈现给用户。

10 MVC的优点 首先,最重要的一点是多个视图能共享一个模型。同一个模型可以被不同的视图重用,大大提高了代码的可重用性。
此外,控制器提高了应用程序的灵活性和可配置性。控制器可以用来联接不同的模型和视图去完成用户的需求,这样控制器可以为构造应用程序提供强有力的手段。

11 MVC的适用范围 使用MVC需要精心的计划,由于它的内部原理比较复杂,所以你需要花费一些时间去理解它。将MVC运用到你的应用程序,会带来额外的工作量,增加应用的复杂性,所以MVC不适合小型应用程序。 但对于开发存在大量用户界面,并且业务逻辑复杂的大型应用程序,MVC将会使你的软件在健壮性、代码重用和结构方面上一个新的台阶。尽管在最初构建MVC框架时会花费一定的工作量,但从长远角度看,它会大大提高后期软件开发的效率。

12 JavaWeb应用结构的发展 阶段1:JSP是一个独立的、自主完成所有任务的模块 阶段2:JSP Model1 阶段3:JSPModel2

13 JSP是一个独立的、自主完成所有任务的模块
早期的Java Web应用中,JSP文件同时负责生成网页、控制到下一个网页的流程,以及负责业务逻辑,这给Web开发带来一系列问题: HTML 和 Java 强耦合在一起,JSP 文件的编写者必须既是网页设计者,又是 Java 开发者。 可读性差。 调试困难。 不利于维护,更改业务逻辑或数据可能牵涉相关的多个网页。

14 JSP是一个独立的、自主完成所有任务的模块

15 JSP Model1

16 JSP Model2

17 JSP Model2 JSP负责生成动态网页 Servlet负责流程控制 JavaBean负责业务逻辑

18 Struts概述 Struts 实质上就是在JSP Model2的基础上实现的一个MVC框架。
模型:JavaBean、EJB组件 、java实用类 控制器:ActionServlet、Action 、RequestProcessor 视图:JSP(Struts客户化标签)+ActionForm

19 Struts概述

20 ActionForm Bean ActionForm Bean也是一种JavaBean,除了具有一些JavaBean的常规方法,还包含一些特殊的方法,用于验证HTML表单数据等。 Struts框架利用ActionForm Bean来进行View组件和Controller组件之间表单数据的传递。 Struts框架把View组件接受到的用户输入的表单数据保存在ActionForm Bean中,把它传递给Controller组件,Controller组件可以对ActionForm Bean中的数据进行修改 JSP文件使用Struts标签读取修改后的ActionForm Bean的信息,重新设置HTML表单。

21 ActionForm Bean

22 Struts框架的初始化流程 对于采用Struts框架的Web应用,在Web应用启动时就会加载并初始化控制器ActionServlet
ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到ActionMappings对象中。

23 Struts框架响应客户请求的工作流程

24 Struts框架响应客户请求的工作流程 (1)如果ActionMapping实例不存在,就创建一个ActionMapping对象,它包含了把请求转发给哪个Action的信息。 (2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中。 (3)根据配置信息决定是否需要表单验证。如果需要验证,就调用ActionForm的validate()方法。 (4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActionErrors对象,就表示表单验证成功。 (5)ActionServlet根据配置信息决定将请求转发给哪个Action。如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute方法。 (6)Action的execute方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指向的JSP组件。 (7)ActionForward对象指向的JSP组件生成动态网页,返回给客户。 对于以上流程的步骤(4),如果ActionForm的validate()方法返回一个包含一个或多个ActionError的ActionErrors对象,就表示表单验证失败,此时ActionServlet将直接把请求转发给包含客户提交表单的JSP组件。在这种情况下,不会再创建Action对象并调用Action的execute方法。

25 Helloapp应用 helloapp应用包括如下需求:
接受用户输入的姓名<name>,然后返回字符串“Hello <name> !” 如果用户没有输入姓名就提交表单,将返回出错信息,提示用户首先输入姓名。 如果用户输入姓名为“Monster”,将返回出错信息,拒绝向“Monster”打招呼。

26 控制器:ActionServlet、HelloAction
Helloapp应用的组成 视图:hello.jsp HelloForm Bean 控制器:ActionServlet、HelloAction struts-config.xml 模型:PersonBean

27 练习题1 问题:在Struts应用的视图中包含哪些组件? 选项: 答案:A,G (A) JSP (B) Servlet
(C) ActionServlet (D) Action (E) 代表业务逻辑或业务数据的JavaBean (F) EJB (G) 客户化标签 答案:A,G

28 练习题2 问题:在Struts应用的控制器中包含哪些组件? 选项: 答案:B,C,D (A) JSP (B) Servlet
(C) ActionServlet (D) Action (E)代表业务逻辑或业务数据的JavaBean (F) EJB (G) 客户化标签 答案:B,C,D

29 练习题3 问题:在Struts应用的模型中包含哪些组件? 选项: 答案:E,F (A) JSP (B) Servlet
(C) ActionServlet (D) Action (E)代表业务逻辑或业务数据的JavaBean (F) EJB (G) 客户化标签 答案:E,F


Download ppt "Struts开发技术."

Similar presentations


Ads by Google