1、第 一 章,Struts 简介,2,课程地位,.Net & C#,SQL Server,XML,SPM,ASP.NET & WebService,Oracle,UML,SPR: Computer Base,HTML&JavaScript,SQL Server Base,OOP&Java Base,C,STB,JSP/Servlet,EJB&WebService,WinForms,Struts&JSF,Testing&SQA,Linux,3,课程目标,掌握Struts的控制器组件 掌握Struts的视图标签 运用Struts的Validator框架 理解Struts的MVC原理 理解JSF的体系
2、结构 掌握JSF应用程序的开发步骤 掌握JSF应用的导航规则 熟练掌握JSF应用的标签库,4,目标,了解什么是框架 理解 Struts 框架 掌握Struts框架的基本应用 了解Struts的优缺点,5,回顾MVC 模式,模型组件:负责业务逻辑 视图组件:负责表示业务范围的视图 控制器组件:负责控制用户输入的流和状态,6,JSP Model II体系结构,7,框架,可重用组件,可重用类,接口,有助于构建,应用程序,框架,8,Struts实现的MVC框架,9,Struts 模型, 应用程序数据 .,逻辑,交互,Java 数据对象 (JDO),数据访问对象(DAO),Enterprise Java
3、 Bean (EJB),由 Struts Model 表示特征,或,或,创建模型的方式,10,其他组件,Struts 视图,Struts 视图,JSP 页,构建方式,广泛用于显示 动态内容,HTML,JSP 自定义标签库,JavaScript 和样式表,多媒体文件,ActionForm 类,广泛用于显示 静态内容,通过自定义标签 使用多媒体文件,ActionForm 从 HTML 表单中提取数据并将 其转换为Action 类,支持本地化并减少了 维护时间和整个 应用程序中的冗余。,为应用程序创建 HTML 表单和 一组 JSP 视图,增强了标签库内 Java 脚本和样式表的功能,消息资源包,1
4、1,Struts 控制器,Struts 框架是最重要的组件,它通过使用 Servlet org.apache.struts.action.ActionServlet 来实现 struts-config.xml的配置信息,把请求转发给适当的Action对象不存在,ActionServlet会先创建这个对象 Action类负责调用模型的方法,更新模型的状态,并帮助控制器应用程序的流程,12,验证,Struts 应用程序演示,登录成功!,登录失败!,欢迎进入登录页面!,登录,重置,请输入用户名:,请输入密码:,huu,*,Accp,*,13,Struts 控制器,示例应用程序分析,login.jsp
5、,success.jsp,error.jsp,UserActionForm.java,确定视图组件,LoginAction.java,UserBean.java,完整的应用程序,确定控制器组件,确定模型组件,Struts 模型,Struts 视图,14,创建 ActionForm,public class UserActionForm .private String password;private String userName;public String getPassword() return password;public void setPassword(String passwor
6、d) this.password = password; .public ActionErrors validate(ActionMapping actionMapping,HttpServletRequest httpServletRequest) /* todo: finish this method, this is just the skeleton.*/return null;public void reset(ActionMapping actionMapping,HttpServletRequest servletRequest) .,15,创建 Action,创建一个 Logi
7、nAction,public class LoginAction extends Action public ActionForward execute(ActionMapping actionMapping,ActionForm actionForm,HttpServletRequest servletRequest,HttpServletResponse servletResponse) UserActionForm userActionForm = (UserActionForm) actionForm;String username = userActionForm.getUserNa
8、me();String password = userActionForm.getPassword();UserBean user = new UserBean();boolean flag = user.verifyUser(username, password);if (flag) return actionMapping.findForward(“success“);else return actionMapping.findForward(“error“); ,16,创建模型组件,public class UserBean public UserBean() public boolea
9、n verifyUser(String userName, String password) if (userName.equals(“Accp“) ,17,struts-config.xml,18,Struts 的优点,使用标准的 HTTP 请求-响应设计来定义,使用容器的默认日志系统,在处理过程中可以记录状态消息, 这有助于调试,提供详细的 Java 文档和用户指南,支持本地化,提供标签扩展,不需要配置单独的包,优点,Struts,19,事件模型,默认数据或具体的建议,标签扩展要求提供多个属性, 因此难以进行详细的编程,一个应用程序中仅能使用 一个 ActionServlet,不提供界面组
10、件,Struts 的缺点,缺点,20,Struts 的备选框架,2001 年为一种称为 JavaServer Faces (JSF) 的 Java 新技术发布了新的 Java Specification Request (JSR)。JSR 提供了一组标准的 JSP 标签和类,用于复杂的 HTML 表单、事件处理和表示状态。,JSF,Spring,Spring 是一种新的 J2EE 应用程序框架,可以与其他不同的组件集成。它提供了管理业务对象的一种方式。其分层体系结构使得用户可以单独选择并使用它的各个部分。,Struts 的备选框架,21,总结,Struts 实现了模型-视图-控制器 (MVC, Model-View-Controller),它与 Sun 的 J2EE 平台兼容并使用了 J2EE 核心技术:Servlet、Java 服务器页面 (JSP) 和 JSP 标签库 Struts框架实现的只是MVC的视图和控制器组件 Struts 的备选框架JSF、Spring Struts支持本地化,提供标签扩展,