Java Web设计实用教程 主 编:孔 昊 副主编:卢 霞 机械工业出版社.

Slides:



Advertisements
Similar presentations
网络应用程序设计 2014 JavaBean. JavaBean 及其属性 JavaBean 就是一种 Java 的组件技术 JavaBean 是 Java 类 JavaBean 通过约定的方法名实现属性功能 简单属性 void setXxx(Type value) Type getXxx() boolean.
Advertisements

7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
Chapter 3: SQL.
Struts核心组件及 运行机制.
第六 章数据库访问页 6.1 数据访问页视图 6.2 创建数据访问页 6.3 编辑数据访问页 6.4 查看数据访问页 退出.
2017/3/6 V1 实习指导管理系统.
基于SSH的web开发 AND 企业级WEB应用开发新技术
J2EE Struts 和Spring 的区别.
第八单元 Struts 开源MVC框架.
Oracle数据库 Oracle 子程序.
出入金操作流程.
在PHP和MYSQL中实现完美的中文显示
SVN的基本概念 柳峰
第六章 窗口系统和用户界面管理系统 山东大学计算机学院.
Struts开发技术.
第二讲 搭建Java Web开发环境 主讲人:孙娜
面向对象建模技术 软件工程系 林 琳.
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
大学计算机基础 典型案例之一 构建FPT服务器.
SVN服务器的搭建(Windows) 柳峰
SQL Injection.
走进编程 程序的顺序结构(二).
辅导课程六.
PostgreSQL 8.3 安装要点 四川大学计算机学院 段 磊
Windows网络操作系统管理 ——Windows Server 2008 R2.
第一讲: 基本流程(1).
第五讲 四则运算计算器(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
研发内部系统 Pdc简要说明 2013年7月.
Hub Web System 主要功能: 1.查询库存(Query Current Storage) 2.创建PL(Create PL) 3.查询、打印PL单(Query & Print PL) 4.查询允交量、在途量 5.修改用户的基本信息(Update Password) 6.查询GR(Query.
以ISI平台为例,为您演示一下如何在Endnote文献中查看该文献的References
2019/1/12 GDP设计协同 超级管理员操作手册 GDP项目组.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
DevDays ’99 The aim of this mission is knowledge..
任务1-3 使用Dreamweaver创建ASP网页
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
SOA – Experiment 2: Query Classification Web Service
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
解决变化问题的自底向上 流程建模方法 严志民 徐玮.
Web安全基础教程
VisComposer 2019/4/17.
Java Server Faces 参考书籍 Java Server Faces 核心编程.
企业应用实训教程 JSP企业级应用.
Web安全基础教程
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
iSIGHT 基本培训 使用 Excel的栅栏问题
3.16 枚举算法及其程序实现 ——数组的作用.
Chapter 18 使用GRASP的对象设计示例.
2019/5/10 网络学习空间实务操作.
Visual Basic程序设计 第13章 访问数据库
郑 昀 应用开发事业部 神州泰岳 SIP多方会话消息 之实例讲解 郑 昀 应用开发事业部 神州泰岳
Delphi 7.0开发示例.
OpenStack vs CloudStack
Python 环境搭建 基于Anaconda和VSCode.
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
实施前的工作 CJEA : Holen
回归分析实验课程 (实验三) 多项式回归和定性变量的处理.
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
Chinese Virtual Observatory
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
第四章 UNIX文件系统.
使用ADO访问数据库 李宝智 BonizLee 课程 10564A
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
----以《西北民族音乐学术资源数据库》为例 西安音乐学院 景 月 亲
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
第六讲 酒店客房管理系统(二) 教育部“十二五”职业教育国家规划教材
第21章 Spring 的MVC框架 Spring不但一个很好的集成框剪,它还提供了构建Web应用程序的全功能MVC模块。Spring 的MVC框架非常强大并不逊色于其他专业的Web框架,如Struts、WebWork。但在国内Spring MVC应用的并不是特别多,原因可能是Struts太深入人心的缘故吧。
第十三章 Struts应用详解 在本章的内容中,将主要介绍Struts的基本知识, 对Struts处理用户请求过程的各个环节进行了详 细的介绍,并且还介绍在Struts中使用Validator、 Tiles等其他框架的基本方法,通过本章内容的学 习,读者可以掌握Struts的基本知识,具备.
学习目标 1、什么是列类型 2、列类型之数值类型.
Presentation transcript:

Java Web设计实用教程 主 编:孔 昊 副主编:卢 霞 机械工业出版社

知 识 点 实例介绍 Struts框架结构 用Struts设计实例 利用Struts实现“班级事务发布”模块

6.1 实例介绍 一、演示教材中的案例,明确执行过程 一个应用背景:假设用户在客户端完成关于图书信 息的录入,服务器端获取信息后给客户一个反馈,以新 的页面显示客户录入的图书信息。

实例介绍 二、制作并分析项目结构 按照MVC的处理方式实现这个过程: 视图部分仅为两个JSP页面,一个用于录入信息,一个用于显示信息; 控制器部分用来从录入界面接收数据,存储到内置对象里并交给视图页面显示即可; 由于数据较少,模型部分甚至没有必要去设计。

实例介绍 三、Struts实现实例的要点分析 明确Struts的结构和实现策略。 急需解决的设计任务: 现在要借助Struts框架实现这个过程,实际上还是围绕 MVC中的三个模块进行设计,只是要明确Struts架构与MVC各 模块的对应关系。 急需解决的设计任务: 明确Struts的结构和实现策略。

6.2 Struts框架结构 一、Struts的工作流程

Struts框架结构 图中反映出的概念: 控制器:用于接收客户端发来的请求,按照struts-congfig.xml文件中的配置分配工作。 逻辑处理单元:用客户端的请求数据初始化表单属性,即实例化表单数据,再根据事务逻辑完成具体的处理工作。 数据模型:泛指用于存储或处理数据的Bean,但这里特指Struts中用来存储客户端请求数据的Bean,即ActionForm类。 视图URL:当处理单元完成任务后,会给控制器返回一个ActionForward对象,控制器就能根据它找到对应视图的URL,将结果返回给客户端浏览器。

Struts框架结构 二、一个工作要点——控制器的工作方式 与前面所讲的MVC设计不同的是:控制器有且仅有一个,归Struts Web所共有;当不同的请求到达时,由这个控制器再把任务分配给具体的业务处理单元,所以业务单元是多个且具有针对性的。在后面的设计中,处理任务转移到了对逻辑处理单元的设计而不是对控制器的设计。

Struts框架结构 三、编程要点——Struts的组件结构 ⑴ 基本组件包 :查看教材讲解 ⑵ 几个重要的核心类: ActionServlet:继承于 javax.servlet.http.HttpServlet类,在Struts中扮演控制器的角色。它可以根据配置文件的描述将任务提交到适当的处理器,在web.xml文件中可以看到对它的声明。

Struts框架结构 Action:协助ActionServlet完成业务操作,实现了请求与业务逻辑的分离。通常的做法是:定义用户类继承于Action类,重写这个类的execute()方法,在execute()方法中编程完成处理逻辑。struts-config.xml配置文件对项目中所有的Action组件进行了描述,供控制器ActionServlet进行选择和任务分配。

Struts框架结构 ActionForm:其主要功能是为Action的操作提供与客户表单相映射的数据。通常的做法是:定义用户类继承于ActionForm类,以Bean的形式定义客户端所提交的各种数据。设计Action的时候,往往将它与某个ActionForm对象关联起来,以便通过getXXX()方法提取用户数据。设计者还可以重写其validate()方法以便对用户数据进行校验。

Struts框架结构 ActionMapping:代表当前Action的配置信息。该对象是Struts依据配置文件创建的,其各个属性在struts-config.xml文件中进行配置。 ActionForward:对应URL地址,其它组件可以通过ActionForward的名称找到其对应的URL地址,并把控制转移到该URL。

6.3用Struts设计实例 一、建立普通的Web项目,为项目添加Struts支持

用Struts设计实例 添加Struts支持后所做的工作: ⑴ 展开Struts 1.2 Libraries目录查看Struts的包结构,与Struts的组件结构进行对照 ⑵ 查看web.xml文件,明确下面的问题: <servlet>元素定义了Servlet实例—一个名为action的Servlet。其中有一项比较重要的初始化参数config,指明了Struts的配置文件的名称和所在的位置; <servlet-mapping>元素建立Servlet映射。这个Servlet处理的是URL以.do为结尾的用户请求。

用Struts设计实例 web.xml文件体现的处理意义: 凡是以“*.do”形式发送到Web项目中的请求,全部调用action所代表的ActionServlet处理,所以我们把ActionServlet称为Struts中的控制器。

用Struts设计实例 ⑶ 查看struts-config.xml文件。 <?xml version="1.0" encoding="UTF-8"?> <struts-config> <data-sources /> <form-beans /> <global-exceptions /> <global-forwards /> <action-mappings /> <message-resources parameter="struts.ApplicationResources" /> </struts-config> 此时的配置信息还没有生成,随着Struts其他核心组件的创建,这些配置会随之变化。

用Struts设计实例 二、建立Struts核心组件—JSP页面

用Struts设计实例 建立JSP组件后所做的工作: ⑴ 查看项目结构和struts-config.xml文件(尤其Design方式) input.jsp文件: 关键点:① 形成符合要求的界面形式; ② 在提交表单时,action参数的设置值是“input.do”。 display.jsp文件: 关键点:通过request对象取出要显示的数据。

用Struts设计实例 三、建立Struts核心组件—ActionForm

用Struts设计实例 设计窗口中参数的含义: Name:ActionForm bean实例的名称,Action组件会初始化该实例,用于接收客户端录入的图书信息。 Form type:ActionForm组件的类名。图中将类存放在form包里,便于管理和维护。 Optional Details:用于设置ActionForm类的细节,比如该类中需要定义的各个属性。关于图书的信息有三个:图书类型、书名和作者,所以ActionForm bean中应该有三个属性对应这三个信息。

用Struts设计实例 建立ActionForm组件后所做的工作: ⑴ 查看struts-config.xml文件,分析<form-beans>元素的定义 ⑵ 查看InputActionForm.java文件的内容,分析bean的设计结构,明确它的作用和意义: Action对象通过这个类的实例获取表单中关于图书类别、书名和作者的数据。 reset()方法的重置作用和validate()方法的数据验证作用。

用Struts设计实例 四、建立Struts核心组件—Action

用Struts设计实例 Action组件的工作流程: ⑴ 接受控制器的调遣:当客户端提交了图书信息后,ActionServlet也需要将具体的任务交给一个指定的Action组件; ⑵ Action组件会通过ActionForm组件对象获取图书信息(没有Form对象时,会自动创建并初始化) ⑶ 在特定的方法中<execute()方法>,让用户编程完成具体的处理。

用Struts设计实例 设计窗口中参数的含义: Path:请求路径,以“/”开头,但不包括“*.do”后缀。与视图中的请求相对应。图中的情况说明:凡是以“input.do”发出的请求均由这个Action组件来处理。 Type:要建立的Action类的类名,这里起名为InputAction,同时又把它放在action包里。 Optional Details:配置Action组件类的各个细节,如:Form bean、参数、方法、Forwards组件、异常等。

用Struts设计实例 FormBean选项卡的设计: Name:ActionForm组件的对象名,体现了ActionForm组件与Action组件的绑定关系。Action组件会通过它接收向本Action发送的关于图书信息的表单数据。当输入不方便时,可以通过点击“Browse”按钮,选择已经声明了的Form bean对象。 Scope:ActionForm Bean的有效使用范围。 Input Source:指向一个视图。当执行了ActionForm的validate()方法时,如果返回了错误信息,那么Struts将会返回到这个input属性所指定的页面中。

用Struts设计实例 五、建立Struts核心组件—Forward 局部Forward组件的创建

用Struts设计实例 设计窗口中参数的含义: Name:Forward组件的名称,即要转发的名称,这里为result,设计者可以根据见名之意的原则起名。 Path:转发的目的页面,可以通过“Browse”选择前面已经建立好的display.jsp页面。 这样就建立了针对InputAction这个组件的跳转功能:Action组件 可以依据Forward的名称(result)将ActionForward对象返回到Servlet 中,控制器根据ActionForward的名称找到其对应的URL地址 (display.jsp的URL值),并把控制转移到该URL。

用Struts设计实例 六、观察结果,补充代码 ⑴ Struts项目的结构基本上完整了,发生的变化主要有两个: 在src目录下生成了action包,里面存放着Action组件对应的类文件 InputAction.java; 在struts-config.xml文件的视图显示区可以看到各组件的关系图。

用Struts设计实例 <action-mappings > <action attribute="inputForm" ⑵ struts-config.xml文件的内容变化 <action-mappings > <action attribute="inputForm" input="/input.jsp" name="inputForm" path="/input" scope="request" type="action.InputAction"> <forward name="result" path="/display.jsp" /> </action> </action-mappings>

用Struts设计实例 ⑶ 补充InputAction.java文件的代码 public ActionForward execute(mapping, form, request, response)throws IOException { InputAcionForm inputForm = (InputAcionForm) form; String bookType=inputForm.getBookType(); String bookName=inputForm.getBookName(); String bookAuthor=inputForm.getBookAuthor(); request.setAttribute("bookType", bookType); request.setAttribute("bookName", bookName); request.setAttribute("bookAuthor", bookAuthor); return mapping.findForward("result"); }

用Struts设计实例 ① 通过Form类中定义的getXXX()方法获取表单中的图书信息 ② 将信息存储到request对象里,存储的关键字名称与display.jsp文件相呼应 ③ 依据Forward组件的名称(result),返回到Servlet中

6.4 利用Struts实现“班级事务发布”模块 一、准备项目结构 ⑴ 明确设计要素

利用Struts实现“班级事务发布”模块 ⑵ 准备工作 建立一个普通的Web项目,添加Struts支持,使其成为Struts项目,同时配置构建路径中关于MySQL的库文件; 将上面所提到的使用资源复制到这个项目的恰当位置。 准备工作结束后的项目结构

利用Struts实现“班级事务发布”模块 二、 获取事务分类信息的设计 ⑴ 设计组件

利用Struts实现“班级事务发布”模块 要点说明: Path:接收“getsort.do”形式的请求,所以把left.jsp文件中关于“班级事务发布”的超级链接代码改为—<a href="getsort.do">。 Type:在action包中,增加了SortListAction类,用于Action组件设计逻辑处理代码。 Form选项卡:只配置了Input Source细节,使其指向left.jsp页面。 Forwards选项卡:Action组件得到分类信息后,通过“input”名称跳转到信息的录入界面。

利用Struts实现“班级事务发布”模块 设计好组件之后,struts-config.xml文件的代码如下: <action-mappings > <action input="/left.jsp" path="/getsort" type="action.SortListAction"> <forward name="input" path="/affairs_add.jsp" /> </action> </action-mappings>

利用Struts实现“班级事务发布”模块 ⑵ 编写代码 编写Action组件中关于分类信息的获取代码 SortListAction.java文件的代码如下: public ActionForward execute(mapping, form, request, response) { SortHandle handle=new SortHandle(); List<Sort> list=handle.getSorts(); request.setAttribute("sortList", list); return mapping.findForward("input"); }

利用Struts实现“班级事务发布”模块 三、班级事务发布的设计 ⑴ 设计组件 ActionForm组件的设计: Form Properties选项卡中三个属性的设置一定要与视图中的表单数据一一对应。

利用Struts实现“班级事务发布”模块 Action组件和Forward组件的设计细节

利用Struts实现“班级事务发布”模块 struts-config.xml文件中关于<action-mappings>元素的代码: <action-mappings > <action input="/left.jsp" path="/getsort" type="action.SortListAction"> <forward name="input" path="/affairs_add.jsp" /> </action> attribute="inputForm" input="/affairs_add.jsp" name="inputForm" path="/affairsAdd" scope="request" type="action.AffairsAddAction"> <forward name="result" path="/result.jsp" /> </action-mappings>

利用Struts实现“班级事务发布”模块 ⑵ 编写代码 在Action组件中设计代码(AffairsAddAction.java文件) 代码通过form对象初始化了inputForm实例,随后调用getXXX()方法获取表单中的信息,并为affair对象准备好所有数据后(包括编码处理),经过处理Bean完成了数据存储,最后经过Forward组件完成结果视图的调用。

本章课程结束,谢谢!