设计模式 Design Patterns

Similar documents
本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

基于CDIO一体化理念的课程教学大纲设计

设计模式 Design Patterns

09 (File Processes) (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises)

设计模式 Design Patterns

untitled

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

EJB-Programming-4-cn.doc

EJB-Programming-3.PDF

J2EE MVC with Webwork2 Xwork, to J2EE MVC with Webwork2 Xwork

TopTest_Adminstrator.doc

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

untitled

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

jsp

附件2

resp.getwriter().print(j + "*" + i + "=" + j * i+" "); resp.getwriter().print("<br/>"); protected void dopost(httpservletrequest req, HttpServletRespo

优迈科技教学大纲2009版本

untitled

untitled

目 录 1. 业 务 流 程 系 统 开 发 面 临 的 挑 战 与 机 遇 业 务 流 程 管 理 新 一 代 开 源 业 务 流 程 开 发 平 台 BPMX BPMX3 是 什 么 为 什 么 要 优 先 采 用 BPMX

没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型

untitled

在所有的项目开发中, 一定是多人协作的团队开发, 但是使用框架就会出现一个问题, 我们所 有的 Action 以及相关的路径都要求在我们的 struts.xml 文件中配置, 如果所有的人去修改一个 文件, 那么就会变得混乱, 而且有可能出现冲突, 那么在 struts.xml 文件中为了解决这个问

Servlet

设计模式 Design Patterns

What Servlet

Struts2自定义类型转换.doc

D getinitparameternames() 9 下 列 选 项 中, 属 于 Servlet API 中 提 供 的 request 对 象 的 包 装 类 的 是 ( ) A HttpServletRequestWrapper B HttpServletRequest C HttpServ

然 而,JavaScript 编 程 的 最 大 问 题 是 来 自 不 同 的 浏 览 器 对 各 种 技 术 和 标 准 的 支 持 构 建 一 个 运 行 在 不 同 浏 览 器 ( 如 IE 和 火 狐 ) 中 的 应 用 是 一 个 困 难 的 任 务, 因 此 提 供 符 合 跨 浏 览

威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 號 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

Microsoft PowerPoint - 05-Status-Codes-Chinese.ppt

JSP基础编程

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复

计算机软件技术专业教学计划

"+handlermethod.getbean().getclass().getname()); public void aftercompletion(httpservletrequest req, HttpServletResponse resp, Object handler, Excepti

untitled

第一章

<4D F736F F F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

<ADB6ADB1C25EA8FAA6DB2D4D56432E706466>

新・解きながら学ぶJava

大连软~1

<4D F736F F D20BBF9D3DA416E64726F6964C6BDCCA8B5C4B5E7D7D3C5C4C2F4CFB5CDB32E646F63>

Untitled

填 写 要 求 1. 以 word 文 档 格 式 如 实 填 写 各 项 2. 表 格 文 本 中 外 文 名 词 第 一 次 出 现 时, 要 写 清 全 称 和 缩 写, 再 次 出 现 时 可 以 使 用 缩 写 3. 本 表 栏 目 未 涵 盖 的 内 容, 需 要 说 明 的, 请 在

PrintWriter s = new PrintWriter(writer); ex.printstacktrace(s); mv.addobject("exception", writer.tostring()); mv.setviewname("error"); return

1

電機工程系認可證照清單 /7/1

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile..

RUN_PC連載_10_.doc

软 件 工 程 专 业 习 指 南 目 录 一 软 件 工 程 专 业 设 置 背 景 与 发 展 前 景... 3 二 软 件 工 程 专 业 实 践 教 条 件... 4 三 软 件 工 程 专 业 课 程 类 型 及 核 方 式 软 件 工 程 专 业 课 程 类 型...7

Jfreechart 产生图形 Cvs svn Jpa 标准 Hibernet 是它的一个实现 Ajax 全称 asynchronous JavaScript and xml 无需重新刷新页面 onblur() 函数 失去焦点时调用的函数 eval() 函数 动态生成 JavaScript 代码 编

1.5招募说明书(草案)

由社會發展趨勢探討國人睡眠品質

untitled

Microsoft Word - SCWCD-CH01.doc

ASP.NET MVC Visual Studio MVC MVC 範例 1-1 建立第一個 MVC 專案 Visual Studio MVC step 01 Visual Studio Web ASP.NET Web (.NET Framework) step 02 C:\M

Microsoft Word - 第3章.doc

在Spring中使用Kafka:Producer篇

Microsoft Word - 1-3陳詠琳-近代..

设计模式 Design Patterns

PowerPoint 演示文稿

序 言 本 专 业 人 才 培 养 方 案 以 适 应 市 场 需 求 为 目 标, 根 据 学 校 校 企 双 主 体 人 才 培 养 的 要 求 和 移 动 应 用 开 发 专 业 的 特 点 设 置 课 程 体 系, 体 现 了 课 程 为 市 场 服 务 的 特 点 本 专 业 要 求 学

untitled

北 风 网 讲 师 原 创 作 品 ---- 仅 供 学 员 内 部 交 流 使 用 前 言 吾 尝 终 日 而 思 矣, 不 如 须 臾 之 所 学 也 ; 吾 尝 跂 而 望 矣, 不 如 登 高 之 博 见 也 登 高 而 招, 臂 非 加 长 也, 而 见

容 嵌 入 到 网 页 的 合 适 位 置 上 同 时 又 要 保 持 代 码 的 清 晰 简 单, 则 不 可 避 免 的 涉 及 到 JSP 标 准 动 作 JSP 标 准 标 记 库 (JSTL) 表 达 式 语 言 (EL) 等 与 动 态 网 页 生 成 相 关 的 技 术 JSP 标 准

《大话设计模式》第一章

2015 年 度 收 入 支 出 决 算 总 表 单 位 名 称 : 北 京 市 朝 阳 区 卫 生 局 单 位 : 万 元 收 入 支 出 项 目 决 算 数 项 目 ( 按 功 能 分 类 ) 决 算 数 一 财 政 拨 款 一 一 般 公 共 服 务 支 出 二

目 录 第 一 部 分 档 案 局 概 况 一 主 要 职 责 二 部 门 决 算 单 位 构 成 第 二 部 分 档 案 局 2016 年 度 部 门 预 算 表 一 2016 年 度 市 级 部 门 收 支 预 算 总 表 二 2016 年 度 市 级 部 门 支 出 预 算 表 三 2016

國立中山大學學位論文典藏.PDF

Microsoft Word - 01.DOC

untitled

基于ECO的UML模型驱动的数据库应用开发1.doc

RUN_PC連載_8_.doc

输入 project name 选择完成

Microsoft Word 级第二专业学士学位培养计划.doc

使用 Eclipse 开发 Java EE 应用 (Web 应用 ) 这里以开发一个简单的 Web 应用为例, 介绍使用 Eclipse 开发 Java EE 应用的一般步 骤 此处使用的 Eclipse 是 Eclipse IDE for Java EE Developers; 如果是使用的其他

实验六 JSP/Servlet

近四年网络工程专业培养方案.doc

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

建立Android新專案

目 录

设计模式 Design Patterns

拦截器(Interceptor)的学习

Microsoft Word - template.doc

概述

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

Microsoft Word - 第十一章 开发Spring+Struts+Hibernate应用.doc

LiveBOS产品白皮书

LiveBOS产品白皮书

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址 access_token=access_token (http

Microsoft Word - ec使用总结.doc

IoC容器和Dependency Injection模式.doc

CHAPTER 1

(Microsoft Word - \272\364\263q\245|\244A_ _\304\254\253\330\336\263__\272\353\302\262\263\370\247i.doc)

untitled

(CIP) Web /,. :, ISBN X.W T P393.4 CIP (2004) Web ( ) ( / ) : * 787

Transcription:

丁勇 Email:18442056@QQ.com

学习目标 理解 Struts 框架的工作原理 掌握使用 Struts 框架开发 Web 应用的基本步骤 熟悉 MyEclipse 对 Struts 开发的支持

Web 框架事实标准 : Web 框架的事实标准 http://struts.apache.org Java EE 主流技术趋势图 主流 Web 框架趋势图

使用 Struts 实现加法器 使用开发的 4 个步骤 1 2 3 4 给项目添加 Struts 支持 实现业务类添加 Struts 组件 1 ActionForm 2 Action 3 添加 jsp 页面 4 配置 struts config.xml 调试运行 完成的项目

使用 Struts 实现加法器 1 给项目添加 Struts 支持 新建 Web 项目 在项目节点上单击右键 添加 Struts 支持 点选 MyEclipse Add Struts Capabilities

使用 Struts 实现加法器 1 给项目添加 Struts 支持 增加了 : Struts JAR 包 strutsconfig.xml Struts 标签库 修改了 web.xml Struts 是基于 Servlet 技术实现的框架 可以配置 Struts 配置文件的文件名, 支持多个配置文件 添加 Struts 支持前的项目 拦截所有以.do 结尾的添加 Struts 支持后的项目请求

使用 Struts 实现加法器 2 实现业务类 ( 模型 -Model)

3 使用 Struts 实现加法器 添加 Struts 组件 2 1 ActionForm 填写 Name 属性 1 使用 Struts 1.2 Form,Action&J SP 向导新建组件填写 Form type 属性 3 单击 Add, 给 Form 增加属性

使用 Struts 实现加法器 3 添加 Struts 组件 2 Action 配置 Action 属性 设置 Path 属性即访问该 Action 的路径 设置 Type 属性即 Action 对应的 Java 类 设置 Form 属性将 Form 和 Action 关联 设置 Forwards 属性用于配置转发的 JSP 页面

3 使用 Struts 实现加法器添加 Struts 组件 2 Action -- 编写 Action 代 y2ssh.sg.chp2.addaction.ja 码 public ActionForward execute(actionmapping mapping, va ActionForm form, HttpServletRequest request, HttpServletResponse response ) { Calculator calc = new Calculator(); // 获得 ActionForm 的引用从 ActionForm 中即可 AddForm addform = (AddForm) form; 获得表单提交的参数 double model = calc.add( Double.parseDouble(addForm.getFirstNumber()), Double.parseDouble(addForm.getSecondNumber()) ); // 将计算结果存储到 request 中 request.setattribute("sum", model); 通过逻辑名引用页面 // 将请求转发到 "result" 出口指向的页面逻辑名和页面对应关系在 return mapping.findforward("result"); struts-config.xml 中配置

3 使用 Struts 实现加法器添加 Struts 组件 3. 添加 JSP 页面根据 Action 的 Forwords 属性的设置, 添加 add.jsp 和 add_result.jsp 两个页面采用 Struts 提供的对应前面 Action html:form 标签的 path 属性 <html:form action="/add" method="post"> 第一个数 : <input type="text" name="firstnumber"/> /ch02/add.jsp 第二个数 : <input type="text" name="secondnumber"/> /ch02/add_result.jsp <input type="submit" ActionForm 保存在 name="submitadd" value=" 加 "/> request 或 session 中 </html:form> 第一个数 : ${requestscope.addform.firstnumber} 第二个数 : ${requestscope.addform.secondnumber} 对应前面 Form 的属性名

3 使用 Struts 实现加法器 添加 Struts 组件 4 配置 struts-config.xml add.jsp AddAction.java

使用 Struts 实现加法器 3 调试运行 演示示例 : 基于基于 Struts 实现加法器

小结 使用 Struts 开发加法器过程中使用了哪些 Struts 组件? ActionForm 组件组件 Action 组件组件 使用 Struts 开发步骤是什么? 1 添加 Struts 支持 2 开发业务逻辑类 ( 模型,Model) 3 开发 ActionForm 组件 ( 视图组件,View) 4 开发 Action 组件 ( 控制组件,Controller) 5 开发 JSP 页面 6 修改配置文件 struts config.xml, 配置 ActionForm 和 Action 7 调试运行

回顾 Servlet+JSP+JavaBean 的编程模型 Servlet JaveBean JSP 数据库

自定义框架原理 Controller Servlet 视图 AddAction 控制器 add.jsp Calculator 业务逻辑方法 模型 add_result.jsp

Struts Web 应用运行过程 控制器组件 : ActionServlet struts- config.xml 控制器组件 : 控制器组件 : [Add]Action [Post]Action 模型组件 : [Post]Biz 视图组件 : JSP 视图组件 : JSP 模型组件 : [Post]DAO 数据库

1 6 开发时只需关注 : 两个核心组件 : ActionForm [Add]Action 一个配置文件 Controller ( 控制器控制器 ) ActionServlet 2 [Add]Action 5 JSP View( View( 视图视图 ) AddForm, ActionMapping JavaBean 3 1 页面提交的数据封装到 ActionForm 中 2 通过请求路径查找 Strutsconfig.xml 中 Action 的配置, 找到并调用对应的 Action 4 Model( 模型模型 ) 数据库 查找 ActionMapping, 找到正确的 JSP 页面, 并转发

Struts MVC 小结 控制器组件 ActionServlet 由 Struts 提供 :org.apache.struts.action.actionservlet 是一个 Servlet, 需要在 web.xml 中配置 [Add]Action Action Bean 封装一类客户操作继承自 org.apache.struts.action.action, 实现 execute public ActionForward execute(actionmapping 方法 mapping, 需要在 struts config.xml ActionForm 中配置 form, public class AddAction extends Action { } } HttpServletRequest request, HttpServletResponse response) { // TODO: 在这里添加代码 return mapping.findforward("result");

Struts MVC 小结 视图组件 ActionForm Form Bean 封装页面提交的数据继承自 org.apache.struts.action.actionform 需要在 struts config.xml 中配置与 JSP 的交互 -- 从页面获得输入 addform.getfirstnumber(); -- 发送数据到页面 request.setattribute("data", data); 其他视图组件 :JSP JSTL EL 自定义标签第 4 章介绍 Struts 标签

Struts MVC 小结 模型组件 Struts 对模型组件的实现没有任何限制 一般为 :[User]Biz 接口 [User]BizImpl 类 [User]DAO 接口 [User]DAOJdbcImpl 类 <struts-config> struts config.xml <form-beans> <form-bean name="addform" 配置 Form Bean 和 Action Bean type="y2ssh.sg.ch2.web.form.addform" /> 服务器启动时,Struts 装载 struts config.xml 信息 </form-beans> <action-mappings> <action name="addform" path="/add" scope="request" type="y2ssh.sg.ch2.web.action.addaction"> <forward name="input" path="/add.jsp" /> <forward name="result" path="/add_result.jsp" />

小结 Struts 是如何实现 MVC 的?

Struts 执行顺序 Struts 深度历险 在 AddForm 和 AddAction 中增加调试代码 运行程序查看控制台输出 ActionServlet 调用 AddForm 的 setter 方法然后调用 AddAction 的 execute 方法最后页面将 Form 中的值显示出来

Struts 深度历险 ActionForm 和 ActionMapping 中有什么? Action 中 execute 方法的参数列表 public ActionForward execute( AddAction.java ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) 设置断点, 观察变量 通过在 excute 方法中设置断点 观察变量, 可以帮我们解决很多使用 Struts 中出现的问题

小结 结合下图, 说说 Struts 的运行过程

使用 Struts 开发 发布出租信息 使用 Struts 开发 发布房屋信息 功能 模型 (Model) 组件 典型的三层结构 面向接口编程 开发顺序 : DAO Biz Form Bean JSP Action Bean struts config.xml 调试

使用 Struts 开发 发布出租信息 业务流程 post.jsp 1 如果未登录, 转到 login 2 如果 isconfirmed 为 false, 转到 confirm; 否则, 保存数据, 转到 userlist 3 如果出错, 转到 error confirm.jsp PostAction login error userlist

public ActionForward execute(...){ // 如果没有登录, 转发到登录页面 HttpSession session = request.getsession(false); 使用 Struts 开发 发布出租信息 USER user = null; if (session!= null) { user = (USER) session.getattribute("user"); } if(user == null){ PostAction.java return mapping.findforward("login"); 实现代码 } } // 如果还没有确认, 转到确认页面 String confirm = request.getparameter("confirm"); if(null==confirm!"yes".equals(confirm)){ return mapping.findforward("confirm"); } // 调用业务逻辑方法, 插入数据到数据库 try{ FwxxForm fwxxform = (FwxxForm) form; FWXX fwxx = new FWXX(); fwxx.settitle(fwxxform.gettitle());... biz.post(fwxx); request.setattribute("msg"," 发布成功!"); return mapping.findforward("index"); }catch(exception e){ request.setattribute("msg"," 出错啦 :" + e.getmessage()); return mapping.findforward("error"); }

使用 Struts 开发 发布出租信息 配置文件 <form-beans> <form-bean name="fwxxform" type="com.aptech.jb.entity.form.fwxxform" /> </form-beans> <action-mappings> <action name="fwxxform" path="/post" scope="request" type="com.aptech.jb.action.postaction"> <forward name="affirm" path="/affirm.jsp" /> <forward name="userlist" path="/list.do?myrent=y" /> <forward name="login" path="/login.jsp" /> <forward name="error" path="/error.jsp" /> 演示示例 </action> : 使用使用 Struts 开发开发 发布出租信息 功能功能 </action-mappings>

总结 如何使用 Struts 开发登录功能? Action 组件的作用是什么? ActionForm 组件的作用是什么? struts config.xml 中都配置了哪些信息? 回忆 Struts 架构图, 讲述 Struts 是如何实现 MVC 模式的?