Java_struts01

上传人:飞*** 文档编号:54580746 上传时间:2018-09-15 格式:PPT 页数:31 大小:442.50KB
返回 下载 相关 举报
Java_struts01_第1页
第1页 / 共31页
Java_struts01_第2页
第2页 / 共31页
Java_struts01_第3页
第3页 / 共31页
Java_struts01_第4页
第4页 / 共31页
Java_struts01_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《Java_struts01》由会员分享,可在线阅读,更多相关《Java_struts01(31页珍藏版)》请在金锄头文库上搜索。

1、JavaWeb框架_Struts 课程目标,理解Struts的MVC原理 掌握Struts的控制器组件 掌握Struts的视图标签 运用Struts的Validator框架/Tiles框架,目标,了解什么是框架 理解 Struts 框架 掌握Struts框架的基本应用 了解Struts的优点,MVC 模式,MVC是Model-View-Controller的简称,即模型-视图-控制器。 MVC是一种设计模式,它把应用程序分成三个核心模块:模型、视图、控制器,它们各自处理自己的任务。,MVC 模式,模型组件:负责业务逻辑 视图组件:负责表示业务范围的视图 控制器组件:负责控制用户输入的流和状态,

2、视图,视图是用户看到并与之交互的界面,作用如下: 视图向用户显示相关的数据。 接受用户的输入。 不进行任何实际的业务处理。 视图向模型查询业务状态,但不能改变模型。 视图接受模型发出的数据更新事件,从而对用户界面进行同步更新。,模型,模型是应用程序的主体部分, 模型表示业务数据和业务逻辑。 一个模型能为多个视图提供数据。 由于应用于模型的代码只需写一次就可以被多个视图重用,所以提高了代码的可重用性。,控制器,控制器接受用户的输入并调用模型和视图去完成用户的需求。 当Web用户单击Web页面中的递交按钮来发送HTML表单时,控制器本身不输出任何东西和做任何处理。 控制器接收请求并决定调用哪个模型

3、组件去处理请求,然后决定调用哪个视图来显示模型处理返回的数据。,MVC处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理。 然后模型根据用户请求进行相应的业务逻辑处理,并返回数据。 最后控制器调用相应的视图格式化模型返回的数据,并通过视图呈现给用户。,MVC的优点,首先,最重要的一点是多个视图能共享一个模型。同一个模型可以被不同的视图重用,大大提高了代码的可重用性。 由于MVC的三个模块相互独立,改变其中一个不会影响其他两个,所以依据这种设计思想能构造良好的松偶合的构件。 此外,控制器提高了应用程序的灵活性和可配置性。控制器可以用来联接不同的模型和视图去完成用户的需求,这样控

4、制器可以为构造应用程序提供强有力的手段。,MVC的适用范围,使用MVC需要精心的计划,由于它的内部原理比较复杂,所以你需要花费一些时间去理解它。将MVC运用到你的应用程序,会带来额外的工作量,增加应用的复杂性,所以MVC不适合小型应用程序。 但对于开发存在大量用户界面,并且业务逻辑复杂的大型应用程序,MVC将会使你的软件在健壮性、代码重用和结构方面上一个新的台阶。尽管在最初构建MVC框架时会花费一定的工作量,但从长远角度看,它会大大提高后期软件开发的效率。,JSP Model II体系结构,Struts概述,Struts 实质上就是在JSP Model2的基础上实现的一个MVC框架。 模型:J

5、avaBean、EJB组件 控制器:ActionServlet、Action 视图:JSP、Struts客户化标签 Struts框架由200多个类组成,分为8个核心包:config,action,actions,tiles,upload, Taglib,util,validator,Struts概述,Struts实现的MVC框架,Struts 控制器,Struts 框架是最重要的组件,它通过使用 org.apache.struts.action.ActionServlet 来实现,它继承HttpServlet类. struts-config.xml的配置信息,把请求转发给适当的Action,若

6、Action对象不存在,ActionServlet会先创建这个对象 Action类负责调用模型的方法,更新模型的状态,并帮助控制器应用程序的流程,ActionForm Bean,ActionForm Bean也是一种JavaBean,除了具有一些JavaBean的常规方法,还包含一些特殊的方法,用于验证HTML表单数据以及将其属性重新设置为默认值。 Struts框架利用ActionForm Bean来进行View组件和Controller组件之间表单数据的传递。 Struts框架把View组件接受到的用户输入的表单数据保存在ActionForm Bean中,把它传递给Controller组件,

7、Controller组件可以对ActionForm Bean中的数据进行修改 JSP文件使用Struts标签读取修改后的ActionForm Bean的信息,重新设置HTML表单。,ActionForm Bean,Struts框架的初始化流程,对于采用Struts框架的Web应用,在Web应用启动时就会加载并初始化控制器ActionServlet ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到ActionMappings对象中。,Struts框架响应客户请求的工作流程,(1)如果ActionMapping实例不存在,就创建一个ActionMapp

8、ing对象,它包含了把请求转发给哪个Action的信息。 (2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中。 (3)根据配置信息决定是否需要表单验证。如果需要验证,就调用ActionForm的validate()方法。 (4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActionErrors对象,就表示表单验证成功。 (5)ActionServlet根据配置信息决定将请求转发给哪个Action。如果相应的Action实例不存在,就先创建这个实例,然后

9、调用Action的execute方法。 (6)Action的execute方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指向的JSP组件。 (7)ActionForward对象指向的JSP组件生成动态网页,返回给客户。对于以上流程的步骤(4),如果ActionForm的validate()方法返回一个包含一个或多个ActionError的ActionErrors对象,就表示表单验证失败,此时ActionServlet将直接把请求转发给包含客户提交表单的JSP组件。在这种情况下,不会再创建Action对象并调用Action的

10、execute方法。,验证,Struts 应用程序演示,登录成功!,登录失败!,欢迎进入登录页面!,登录,重置,请输入用户名:,请输入密码:,huu,*,Accp,*,Struts 控制器,示例应用程序分析,login.jsp,success.jsp,error.jsp,UserActionForm.java,确定视图组件,LoginAction.java,UserBean.java,完整的应用程序,确定控制器组件,确定模型组件,Struts 模型,Struts 视图,创建 ActionForm,public class UserActionForm .private String passw

11、ord;private String userName;public String getPassword() return password;public void setPassword(String password) this.password = password; .public ActionErrors validate(ActionMapping actionMapping,HttpServletRequest httpServletRequest) /* todo: finish this method, this is just the skeleton.*/return

12、null;public void reset(ActionMapping actionMapping,HttpServletRequest servletRequest) .,创建 Action,创建一个 LoginAction,public class LoginAction extends Action public ActionForward execute(ActionMapping actionMapping,ActionForm actionForm,HttpServletRequest servletRequest,HttpServletResponse servletRespo

13、nse) UserActionForm userActionForm = (UserActionForm) actionForm;String username = userActionForm.getUserName();String password = userActionForm.getPassword();UserBean user = new UserBean();boolean flag = user.verifyUser(username, password);if (flag) return actionMapping.findForward(“success“);else

14、return actionMapping.findForward(“error“); ,创建模型组件,public class UserBean public UserBean() public boolean verifyUser(String userName, String password) if (userName.equals(“Accp“) ,struts-config.xml,Struts 的优点,使用标准的 HTTP 请求-响应设计来定义,使用容器的默认日志系统,在处理过程中可以记录状态消息, 这有助于调试,提供详细的 Java 文档和用户指南,支持本地化,提供标签扩展,不需

15、要配置单独的包,优点,Struts,Struts 的备选框架,2001 年为一种称为 JavaServer Faces (JSF) 的 Java 新技术发布了新的 Java Specification Request (JSR)。JSR 提供了一组标准的 JSP 标签和类,用于复杂的 HTML 表单、事件处理和表示状态。,JSF,Spring,Spring 是一种新的 J2EE 应用程序框架,可以与其他不同的组件集成。它提供了管理业务对象的一种方式。其分层体系结构使得用户可以单独选择并使用它的各个部分。,Struts 的备选框架,练习题1,问题:在Struts应用的视图中包含哪些组件? 选项:

16、 (A) JSP (B) Servlet (C) ActionServlet (D) Action (E) 代表业务逻辑或业务数据的JavaBean (F) EJB (G) 客户化标签答案:A,G,练习题2,问题:在Struts应用的控制器中包含哪些组件? 选项: (A) JSP (B) Servlet (C) ActionServlet (D) Action (E)代表业务逻辑或业务数据的JavaBean (F) EJB (G) 客户化标签答案:B,C,D,练习题3,问题:在Struts应用的模型中包含哪些组件? 选项: (A) JSP (B) Servlet (C) ActionServlet (D) Action (E)代表业务逻辑或业务数据的JavaBean (F) EJB (G) 客户化标签答案:E,F,总结,Struts 实现了模型-视图-控制器 (MVC, Model-View-Controller),它与 Sun 的 J2EE 平台兼容并使用了 J2EE 核心技术:Servlet、Java 服务器页面 (JSP) 和 JSP 标签库 Struts框架实现的只是MVC的视图和控制器组件 Struts 的备选框架JSF、Spring Struts支持本地化,提供标签扩展,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号