《JSP程序设计整本书课件完整版电子教案最新》由会员分享,可在线阅读,更多相关《JSP程序设计整本书课件完整版电子教案最新(270页珍藏版)》请在金锄头文库上搜索。
1、JSP程序设计学习情境学习情境1网上书店系统网上书店系统分析与设计分析与设计第一部分第一部分 案例模仿项目案例模仿项目网上书店网上书店【学习目标】【学习目标】本情境将绍案例模仿项目网上书店的基本概况,完成网上书店系统需求分析和设计。1知识目标(1)了解软件开发的过程;(2)掌握系统需求分析的基本方法;(3)掌握系统功能分析的任务、方法。2技能目标(1)能对网上书店系统进行需求分析;(2)能对网上书店系统进行系统功能分析;(3)能进行系统需求分析文档的书写。本情境主要任务学习任务1:系统需求分析1学习任务2:系统设计2学习任务学习任务1.1系统需求分析系统需求分析【任务计划】本任务主要完成网上书
2、店可行性分析及需求分析、网上书店需求分析设计文档。在完成过程中主要侧重网上书店数据库设计及系统功能设计。要求学生能够完整的完成网上书店数据库设计,清晰的描述系统功能。学习任务学习任务1.1系统需求分析系统需求分析【任务实施】 1开发背景 就网上书店而言,由于网络已经覆盖全球,信息量大而独具优势。售书的理念也很简单,就是读者可以自己寻找自己喜爱的书,替读者找寻他们想要的书。对于读者来说,可以随时随地自由地查询和订购图书,读者无需亲临书店,开机上网即可买到所需书籍,网上购书节省了大量时间,这对于那些没有时间经常逛传统书店或其住所离传统书店较远的读者来说,具有实际意义,因此网上售书必有长足发展。学习
3、任务学习任务1.1系统需求分析系统需求分析【任务实施】 2可行性分析(1)经济可行性分析 传统的销售方式是商家把商品放在店铺里供顾客挑选,店铺的规模、位置等客观因素影响着商店的客流量,并且商品的存放与销售需要人力进行管理,雇员的工资、店面的租金等又增加了成本,顾客也不能迅速找到所需要的商品,而开一个网上书店只需要一个可以存放商品的仓库,比租一个店面能节省很多,也不需要太多的人力来管理,不会因为商店的面积影响客流量,客户足不出户就能买东西,并且很容易就能找到所需要的商品。学习任务学习任务1.1系统需求分析系统需求分析【任务实施】(2)技术可行性分析 1) 网络应用基础设施完善,为发展电子商务提供
4、了基础设施。 2)网络安全技术应用,为电子商务应用提供安全保证。 3)法律保障,将解决电子商务活动的法律技术问题,网上书店经营活动将得到法律的保护。 4)网络技术的普及与掌握,使我们有能力开发实现适合自己的电子商务系统。学习任务学习任务1.1系统需求分析系统需求分析【任务实施】(3)操作可行性分析 由于网站的操作是基于B/S浏览器的页面操作,简单明了,用户无需学习,一般都能够很容易的知道如何操作。而管理员也无需具备专业知识,只需要对一些数据进行输入以及平时的日常维护就够了。学习任务学习任务1.1系统需求分析系统需求分析【任务实施】 3系统功能分析 该系统实现一个基于Web的书店系统。系统的业务
5、流程就是和现实中去书店购书一样。使用该系统的用户分为两个角色:一个是普通用户,主要是通过系统在线选择要购买的书籍并提交订单;另一个是管理员,主要是通过系统对用户、订单及图书信息进行管理。 (1)用户购书系统 用户购书系统是供用户使用的。用户通过它可以完成注册、登录、搜索、修改个人信息、和购书、书评功能。 (2)管理员管理系统 管理员管理系统是供管理员使用的。管理员通过它可以对用户订单、用户、图书、管理员信息进行管理。学习任务学习任务1.1系统需求分析系统需求分析【任务评价】 本任务主要完成网上书店需求分析任务书,并完成相关纸质文档。本任务从需求分析书内容是否详实、完整,表达是否清晰;文档结构是
6、否合理、版式美观等方面进行评价。学习任务学习任务1.2系统设计系统设计【任务计划】 本任务主要完成网上书店系统设计,要求据系统功能分析绘制网上书店系统功能模块图,完成相关数据库的设计与创建。学习任务学习任务1.2系统设计系统设计【任务实施】1系统功能模块图学习任务学习任务1.2系统设计系统设计用户购书系统顾客注册顾客登录图书购买留言板管理员系统管理员登录图书管理订单管理根据任务1.1的功能描述内容本系统分为前台用户和后台管理业务两部分,功能模块图如图1-1、1-2所示。图1-1用户购书系统模块图图1-2管理员系统模块图学习任务学习任务1.2系统设计系统设计【任务实施】2数据库结构及实现 网上书
7、店所使用的数据库是MySql用户名:root密码:123 数据库名:test数据库的连接代码:学习任务学习任务1.2系统设计系统设计tryClass.forName(com.mysql.jdbc.Driver);catch(Exceptione)tryStringuri=jdbc:mysql:/localhost/test;Connectioncon=DriverManager.getConnection(uri,root,123);Statementst=con.createStatement();/执行语句得到结果集ResultSetrs=st.executeQuery(sql);if(r
8、s.next()rs.close();st.close();con.close();catch(Exceptione)e.printStackTrace();学习任务学习任务1.2系统设计系统设计【任务实施】3文件目录结构 学习任务学习任务1.2系统设计系统设计本系统保存在myjsp文件夹下,下面是文件的结构目录图:学习任务学习任务1.2系统设计系统设计【任务评价】 本任务主要完成网上书店的系统设计,从能否根据系统功能正确地绘制出网上书店系统功能模块图,数据库设计规范(安全性、完整性、一致性和可恢复性),表之间的关联清晰、表的可读性明确等方面进行评价。课外拓展练习学生成绩管理系统学生成绩管理系
9、统 需求分析和设计需求分析和设计【学习目标】 通过对本学习情境的学习和实训,使学生了解成绩管理系统概况,完成该系统的需求分析及系统设计。【任务计划】1完成学生成绩管理系统的需求分析。2完成学生成绩管理系统的系统设计。第一部分第一部分 案例模仿项目案例模仿项目网上书店网上书店学习情境学习情境2书店动态首页的建立书店动态首页的建立【学习目标】【学习目标】通过对本学习情境的学习和实训,使学生了解动态网站开发 技术,掌握 JSP 基本语法和内置对象的使用,学会搭建 JSP 的运行环境,以切实提高学生的 Web程序开发能力和职业素质。1. 知识目标(1)了解多种网页开发技术;(2)熟悉JSP运行原理;(
10、3)熟练掌握JSP运行环境配置;2. 技能目标(1)能编写运行一个简单的JSP页面,并测试JSP运行环境的搭建是否正确;(2)能完成网上书店首页的建立;【情境资讯情境资讯】1.C/S与B/S模式 C/S(Client/Server)即客户端/服务器结构。在这种结构中,服务器通常采用高性能的PC或工作站,并采用大型数据库系统,客户端则需要安装专用的客户端软件。这种结构可以充分利用两端硬件环境的优势,将任务合理分配到客户端和服务器,从而降低系统的通信开销。在2000年以前,C/S结构占据网络程序开发领域的主流。图2-1C/S体系结构【情境资讯情境资讯】1.C/S与B/S模式 B/S(Brower/
11、Server)即浏览器/服务器结构。在这种结构中,客户端不需要开发任何用户界面,而统一采用如IE等浏览器,通过Web浏览器向Web服务器发送请求,由Web服务器进行处理,并将处理结果传回客户端。这种结构是一种全新的软件体系结构,这种结构已成为当今应用软件的首选体系结构。图2-2B/S体系结构【情境资讯情境资讯】2.静态网站与动态网站静态页面网页的内容是固定的,不根据浏览者的要求而改变,一般运行于客户端网站网站页面页面动态页面网页可以和用户进行交互,随浏览者输入数据、要求等进行改变,一般运行于服务器端静态页面案例动态页面案例v文件后缀以文件后缀以.html.html,.htm.htm,.xml.
12、xml,.shtml.shtml结束结束【情境资讯情境资讯】v文件后缀以文件后缀以.jsp.jsp,.asp.asp,.php.php,.cgi.cgi,.perl.perl等。等。【情境资讯情境资讯】【情境资讯情境资讯】3.多种动态网页开发技术当前比较流行的网站开发技术php技术1cgi技术2asp技术3jsp技术4ASP的特点 (1)使用简单易懂的脚本语言(JavaScript或VBScript等),结合HTML就可以快速开发出各种Web应用程序。 (2)无须编译,使用普通的文本编辑器即可编写,代码在服务器端直接执行。 (3)ASP源程序在服务器端执行,执行结果返回给客户端,保证了ASP源
13、程序的安全性。【情境资讯情境资讯】 (4)ASP源程序在服务器端执行,客户端只需有执行HTML的浏览器即可,保证了ASP程序的通用性。 (5)可以使用VB、Java等多种编程语言来开发ActiveX服务器组件,从而扩充服务器端程序的功能。 (6)可使用服务器端脚本来产生客户端脚本。 (7)ASP提供的内置对象使得脚本的功能更强。【情境资讯情境资讯】ASP的工作原理 当用户在浏览器的地址栏中输入ASP文件的路径,并按回车键触发这个ASP的申请后,浏览器将该请求发送给Web服务器。Web服务器接收这些请求并根据文件的后缀名为.asp判断这是ASP请求,然后从硬盘或内存中读取正确的ASP文件,将这个
14、文件发送到ASP.DLL的特定文件中。ASP文件将会从头至尾执行并根据命令要求生成相应的HTML文件。最后HTML文件被返回到浏览器,用户的浏览器解释这些HTML文件并将结果显示出来。 【情境资讯情境资讯】搭建ASP的工作平台 ASP程序是在服务器端执行的,因此要在本地计算机上运行ASP程序就必须先安装相应的Web服务器软件。 IIS是由微软公司发布,用于Windows系列操作系统的Web服务器软件。 【情境资讯情境资讯】 PHP是一种运行于服务器端的HTML内嵌式的网络程序设计语言,类似于IIS上的ASP。PHP是Hypertext Preprocessor(超文本预处理器)的缩写,作为服务
15、器端内嵌式的脚本语言,它是在服务器端执行的,从浏览器端看不到PHP的源代码,只能看到执行结果。【情境资讯情境资讯】PHP技术简介 PHP以其代码全部公开、开发容易、跨平台、功能强大以及支持的数据库类型繁多等特点赢得了众多Web开发人员的青睐。现在已经成为国内外流行的Web开发工具之一。PHP的优势 (1)PHP的简单易用 PHP的语法来源主要是C和C+,这样就延续了编写程序简单自由的特点,并且PHP也加入了自己的新特点,如变量不用定义、变量类型可以改变等,使编写程序更加简便。(2)PHP的强大功能 PHP功能的强大体现在对数据库提供了广泛的支持,这使得创建基于数据库的网站变得极为方便。 【情境
16、资讯情境资讯】(3)PHP的跨平台性 PHP在UNIX和Windows平台下都可以工作。(4)PHP的开放性 选择PHP作为开发工具的一个很好的理由是PHP的开放性。PHP不仅是免费的,而且开放源代码,任何人都可以无偿使用甚至修改、复制和分发该软件。 【情境资讯情境资讯】【情境资讯情境资讯】4.JSP运行原理 JSP(Java Server Pages)即Java应用页面程序,它是由Sun Microsystems公司倡导且由许多公司共同参与制定的一种动态网页技术标准。使用JSP可以将网页中的动态部分和静态HTML相分离,以便更好地设计动态网页。这种Web开发技术的设计目的在于使构造基于Web
17、的应用程序更加容易和快捷。【情境资讯情境资讯】 JSP的工作方式是请求/应答模式。JSP所有的程序都是在服务器端运行的,当用户在客户端通过浏览器向服务器提交请求之后,服务器上的JSP程序负责处理客户端的请求,并把处理结果以HTML的形式返回给客户端。其中客户端和JSP的交互是通过HTTP协议来实现的,整个过程中JSP程序对客户端来说是不可见的。 【情境资讯情境资讯】 在具体的交互过程中,客户端首先和服务器建立连接,然后用户通过浏览器发出的请求信息被储存在Request对象中并发送给Web服务器。JSP引擎根据JSP文件的指示处理Request对象,或者根据实际需要将Request对象转发给由J
18、SP文件所指定的其他的服务器端组件(如Servlet组件、JavaBean组件或EJB组件等)进行处理,处理结果以Response对象的方式返回给JSP引擎,JSP引擎和Web服务器根据Response对象最终生成JSP页面并返回给客户端浏览器。本情境主要任务学习任务1:JDK安装配置安装配置1学习任务2:Tomcat安装配置安装配置2学习任务1:网上书店首页创建网上书店首页创建3学习任务学习任务2.1JDK安装配置安装配置【任务计划】 本任务主要完成JSP运行环境JDK的下载、安装以及环境变量的设置。要求下载网站选择正确、下载迅速,JDK安装和配置熟练、正确,测试成功。学习任务学习任务2.1
19、JDK安装配置安装配置【任务实施】 1. JDK的下载 JDK是Sun公司Java应用程序和组件的开发环境,是调试和运行JSP所不可缺少的工具。用户可以从Sun公司的官方网站下载。2. JDK的安装 安装过程比较简单,运行安装程序JDK1.6,选择安装路径后将会自动完成安装。学习任务学习任务2.1JDK安装配置安装配置【任务实施】3.设置JDK环境变量 在不同的操作系统中配置环境变量的方法有所不同,但本质是一样的。它的作用是让应用程序可以方便快捷地找到所需路径。配置Java运行环境主要用到的环境变量有三个。JAVA_HOME设定Java的安装路径。PATH 它是Windows所固有的,追加JA
20、VA_HOMEbin目录后,在执行JAVA_HOMEbin文件夹下的命令时就不用输入长的路径了,如javac、java等命令。CLASSPATH是运行Java非常重要的环境变量,Java在编译和运行应用程序时都要通过它去找到需要的类文件。 学习任务学习任务2.1JDK安装配置安装配置【任务评价】 评价JDK下载、安装和配置任务的完成情况:启动命令行方式,再执行java命令,出现如下所示信息,则表示JDK安装成功。学习任务学习任务2.2Tomcat安装配置安装配置【任务计划】 本任务主要搭建JSP运行服务器的基本环境,主要以Tomcat作为本书使用的服务器,本任务主要介绍tomcat服务器的下载
21、以及安装和配置。学习任务学习任务2.2Tomcat安装配置安装配置【任务实施】 1. 下载Tomcat 可以从Apache站点http:/jakarta.apache.org下载。 2. 安装Tomcat 双击下载后的可执行文件jakarta-tomcat-6.0.32.exe,选择安装路径 后将会自动完成安装。学习任务学习任务2.2Tomcat安装配置安装配置【任务实施】 3. 测试安装是否成功 进入Tomcat安装目录bin目录,双击startup.bat即可启动Tomcat。 打开IE浏览器,在地址栏中输入http:/localhost:8080,按回车键即可打开Tomcat的测试主页,
22、表明Tomcat服务器可以正常运行了。 注意:8080为Tomcat默认的端口号。 将编写的JSP程序文件(如helloworld.jsp)放到Tomcat安装目录的webappsROOT中,在浏览器地址栏中输入http:/localhost:8080/helloworld.jsp , 就可以运行了。 学习任务学习任务2.2Tomcat安装配置安装配置【任务评价】 本任务主要完成Web应用程序服务器Tomcat的安装与配置,从正确下载与安装Tomcat、正确的配置TOMCAT_HOME系统变量并利用程序测试安装是否成功等进行评价。学习任务学习任务2.3网上书店首页创建网上书店首页创建【任务计划
23、】 在任务中主要学习网上书店页面设计,界面参考成熟的商业网站,如:当当网、卓越亚马逊网、中国互动出版网等。【任务实施】 根据系统功能分析,网上书店首页分为以下几个栏目: (1)用户登录 作为一个电子商务网站,涉及买卖交易,应有明确的客户信息,因此凡是要进入购买流程的用户,必须首先要登录,以此系统可以获取到用户的身份信息。 (2)用户注册 既然有登录功能,就相应地提供一个用户账号的注册功能,以便用户将自己的身份信息提交给系统。 (3)修改密码 为了安全,用户登录密码应提供修改功能。 学习任务学习任务2.3网上书店首页创建网上书店首页创建【任务实施】 (4)查看订单 用户可以查看自己已经买过的书籍
24、。 (5)我的购物车 这是整个网上书店的核心功能,购物车是用户在购物过程中存放书籍的,可以将想买的书籍放入购物车,也可以将不想要的书从购物车中删除,甚至可以清空购物车,整个过程就和我们去书店买书一样方面。 (6)离开书店 对登录后的身份注销,对同一台电脑来说,可以换一个用户账号登录,开始新的购书环节。 学习任务学习任务2.3网上书店首页创建网上书店首页创建【任务实施】 (7)管理功能 和现实的书店一样,书籍有补货、下架、统计销售等情况,那么作为网上书店也同样有这些基本要求,这个信息维护功能将由网站的系统管理员来操作,主要包括:书籍的添加、删除、修改、订单的查看、注册用户的管理等。图为网上书店的
25、首页。学习任务学习任务2.3网上书店首页创建网上书店首页创建学习任务学习任务2.3网上书店首页创建网上书店首页创建【任务评价】 本任务主要完成网上书店首页运行,从合理设计网上书店首页使其简洁明了、操作方便;在自己搭建的JSP运行环境中运行网上书店首页进行评价。课外拓展练习学生成绩管理系统学生成绩管理系统首页建立首页建立【学习目标】 通过对本学习情境的学习和实训,使学生了解动态网站开发 技术,掌握 JSP基本语法和内置对象的使用,学会搭建JSP的运行环境,以切实提高学生的 Web程序开发能力和职业素质。【任务计划】1.使用框架技术设计并实现本系统的首页 index.jsp。 该页面要包 括三个子
26、网页,顶部是一个页面 banner.htm,左边是一个页面menu.jsp,右面是具体的操作内容。 课外拓展练习学生成绩管理系统学生成绩管理系统首页建立2. 根据不同的登录角色在menu.jsp中显示不同的系统操作功能 菜单。方法是:当用户登录时记录用户的ID,根据这个ID查 询数据库得到用户的角色,在根据用户的角色控制显示的菜单。3. 系统管理员使用系统所有的功能,不受任何限制。 教务管理人员所使用的功能有:基础数据管理、教务管理(教师授课信息管理、录入学生信息、查询学生成绩、修改自己的登录密码)。老师所能使用的功能有:录入学生成绩、查询学生成绩、修改自己的密码。 学生所能使用的功能有:查询
27、学生成绩、修改自己的密码。第一部分第一部分 案例模仿项目案例模仿项目网上书店网上书店学习情境学习情境3 : 顾客的登录顾客的登录与注册与注册 1.知识目标知识目标(1)熟练掌握JSP内置对象的各种用法;(2)熟练掌握JSP变量和方法的声明,以及脚本元素的用法;(3)熟练掌握JSP中各种指令和动作。2.技能目标技能目标(1)熟练完成对登录页面,表单及表单对象的应用;(2)能编写表单客户端确认的jsp程序;(3)能完成登录页面制作,能获取用户名和密码。学习目标学习目标情境资讯情境资讯http:/了解一下了解一下HTML1JSP基本元素基本元素使用2JSP指令的指令的使用3JSP动作动作的使用的使用
28、4JSP内置对象的使用内置对象的使用5情境资讯情境资讯-了解一下了解一下HTMLHTMLhttp:/1. HTML注释格式:(显示注释) 读者可以在客户端浏览器中查看示例的源文件,会发现注释代码及内容2. JSP注释格式:(隐式注释) 隐藏注释标记的字符会在JSP编译时被忽略,web服务器不会对隐藏注释进行编译,也不会发送到客户端的浏览器。1.表单标记 : 数据提交手段部分数据提交手段部分2.标记 : 3.、标记 : 文本信息文本信息 文本信息文本信息 文本信息文本信息 情境资讯情境资讯-了解一下了解一下HTMLHTMLhttp:/HTML标记(标记(1)1情境资讯情境资讯-了解一下了解一下H
29、TMLHTMLhttp:/4. 4. 标记 TextArea name=5.5.表格标记 TR width= TH width= 单元格中的数据单元格中的数据 TD width= 单元格中的数据单元格中的数据 HTML标记(标记(2)1情境资讯情境资讯-了解一下了解一下HTMLHTMLhttp:/6.图像标记IMG src=URL描述文字描述文字 7. 多媒体标记 EMBED src=URL描述文字描述文字案例案例HTML(1)1HTML标记(标记(3)1无标题文档row1,cell1row1,cell2row2,cell1row2,cell2情境资讯情境资讯-了解一下了解一下HTMLHTML
30、http:/HT ML表格表格2表格由标签来定义。每个表格均有若干行(由标签定义),每行被分割为若干单元格(由标签定义)。字母td指表格数据(tabledata),即数据单元格的内容。数据单元格可以包含文本、图片、列表、段落、表单、水平线、表格等等。情境资讯情境资讯-了解一下了解一下HTMLHTMLhttp:/框架也是一种网页页面布局元素,它与表格的不同之处在于表格把页面分割成小的单元格,而框架把浏览器分割成一个个小的子窗口,这些子窗口就称为“框架”,每一个框架都相当于一个浏览器的窗口,这样就使一个浏览器窗口可以显示多个网页。案例案例HTML3HTML框架框架3网页1:fram.html网页2
31、:left.html右半部分网页3:right.html左半部分HTML利用表利用表单单可以生成一个交互的可以生成一个交互的页页面,表面,表单实现单实现了允了允许许用用户户在文档之在文档之间进间进行交互的高行交互的高级级功能,用功能,用户户通通过过表表单单可以可以进进行高行高级级的人机的人机对话对话,进进行数据行数据库库查询查询,收,收发发E-mail等。早期的表等。早期的表单单只支持客只支持客户户端与服端与服务务器端的器端的对话对话,用,用户户通通过过网网页页中的表中的表单单与服与服务务器端的程序通信。器端的程序通信。1. 表表单简单简介介表表单单在在实质实质上上实现实现了用了用户户的信息的
32、信息输输入。它通入。它通过过一些基本的控件,如一些基本的控件,如输输入文本入文本框、下拉列表框及按框、下拉列表框及按钮钮等,收集用等,收集用户户的的请请求信息,然后把求信息,然后把这这些信息些信息传给传给相相应应的的处处理程序,由理程序,由这这些程序些程序对对用用户户的的请请求做出回求做出回应应。表。表单单使用使用户户不再不再仅仅仅仅是信息的被是信息的被动动接受者,而是信息的主接受者,而是信息的主动请动请求者。求者。2. 表表单单中控件的使用中控件的使用表表单标记为单标记为,它的通用的格式,它的通用的格式为为TYPE设设置置该该控件的控件的类类型。如:型。如:checkbox,button。N
33、AME确定确定该该控件在整个文档中的名称。控件在整个文档中的名称。情境资讯情境资讯-了解一下了解一下HTMLHTMLhttp:/HTML表单表单4情境资讯情境资讯-了解一下了解一下HTMLHTMLHTML定义了可用以放置在表单区域內的属性与功能选项标签 。http:/功功 能能标标 签签说说 明明文本框提供输入单行文字、数字等数据的文本框。选项按钮提供类似收音机按钮的单一选项按钮。复选框提供外观包含一个四边形方块,可供勾选特定项目的复选框。文本区域提供大量、多行的文字、数字等类型的数据输入文本区域。下拉列表框提供具备清单选项的下拉式文本列表。组合式列表提供具备清单选项的多行选项文本列表。传送按
34、钮提供将网页数据内容传送回服务器的按钮。重设按钮提供重设网页数据内容的重设按钮。情境资讯情境资讯-了解一下了解一下HTMLHTMLhttp:/ 情境资讯情境资讯-JSPJSP基础基础http:/JSP页面可由5种元素组合而成: 普通的HTML标记符; JSP标记,如指令标记、动作标记; 成员变量和方法; Java程序片; Java表达式 JSP指令pageincludetaglibJSP指令的语法为:qJSP指令包括:情境资讯情境资讯-JSP指令指令http:/情境资讯情境资讯-JSP指令指令http:/1、page指令标记:page指令用来定义整个指令用来定义整个JSP页面的一些属性和这些属
35、性页面的一些属性和这些属性的值,属性值用单引号或双引号括起来。可以用一个的值,属性值用单引号或双引号括起来。可以用一个page指令指令指定多个属性的值指定多个属性的值,也可以使用多个也可以使用多个page指令分别为每个属性指令分别为每个属性指定值指定值.page指令的作用对整个指令的作用对整个JSP页面有效,与其书写的位置页面有效,与其书写的位置无关,习惯把无关,习惯把page指令写在指令写在JSP页面的最前面。例如页面的最前面。例如:或或情境资讯情境资讯-JSP指令指令page指令标记:page指令标记可以指定如下属性的值:contentType、import、language、sessio
36、n、buffer、auotFlush、isThreadSafe、pageEncodingcontentType属性contentType属性值确定JSP页面响应的MIME(MultipurposeInternetMailExtention)类型和JSP页面字符的编码。例如:不允许两次使用page指令给contentType属性指定不同的属性值.http:/llanguage属性定义JSP页面使用的脚本语言,该属性的值目前只能取java。为language属性指定值的格式:limport属性该属性的作用是为JSP页面引入Java运行环境提供的包中的类,这样就可以在JSP页面的程序片部分、变量及函
37、数声明部分、表达式部分使用包中的类。例如:情境资讯情境资讯-JSP指令指令http:/session属性用于设置是否需要使用内置的session对象。session的属性值可以是true或false。session属性默认的属性值是true。lbuffer属性内置输出流对象out负责将服务器的某些信息或运行结果发送到客户端显示,buffer属性用来指定out设置的缓冲区的大小或不使用缓冲区。例如:buffer属性的默认值是8kb。buffer属性可以取值none,设置out不使用缓冲区。lautoFlush属性指定out的缓冲区被填满时,缓冲区是否自动刷新。isThreadSafe属性用来设置
38、JSP页面是否可多线程访问。情境资讯情境资讯-JSP指令指令http:/2.include指令标记如果需要在JSP页面内某处整体嵌入一个文件,就可以考虑使用include指令标记,其语法格式如下:如果该文件和当前JSP页面在同一Web服务目录中,那么“文件的URL”就是文件的名字;如果该文件在JSP页面所在的Web服务目录的一个子目录中,比如fileDir子目录中,那么“文件的URL”就是“fileDir/文件的名字”。静态插入,就是当前JSP页面和插入的文件合并成一个新的JSP页面,然后JSP引擎再将这个新的JSP页面转译成Java文件。情境资讯情境资讯-JSP指令指令http:/JSPJS
39、P指令标记指令标记模仿试做(案例)模仿试做(案例)include指令实例Ex4_3.html部分显示结果http:/页面使用include指令包含了Ex4_3.html和Ex4_4.jsp两个文件http:/JSPJSP指令标记指令标记模仿试做(案例)模仿试做(案例)Ex44.jsp部分显示结果/bodyhttp:/JSPJSP指令标记指令标记模仿试做(案例)模仿试做(案例)情境资讯情境资讯-JSPJSP动作动作1. include 动作标记2. param动作标记 3. forward动作标记4. useBean 动作标记1、include动作标记或param子标记include动作标记是在
40、JSP页面运行时才处理文件,被处理的文件在逻辑和语法上独立于当前JSP页面.http:/情境资讯情境资讯-JSPJSP动作动作2、param动作标记param标记以“名字值”对的形式为其它标记提供附加信息.param标记不能独立使用,需作为jsp:include、jsp:forward、jsp:plugin标记的子标记来使用。param动作标记语法格式:当该标记与jsp:include动作标记一起使用时,可以将param标记中的值传递到include动作标记要加载的文件中去,被加载的JSP文件可以使用Tomcat服务器提供的request内置对象获取include动作标记的param子标记中n
41、ame属性所提供的值http:/情境资讯情境资讯-JSPJSP动作动作3、forward动作标记该指令的作用是:从该指令处停止当前页面的继续执行,而转向执行page属性指定的JSP页面。或param子标记http:/情境资讯情境资讯-JSPJSP动作动作4、useBean动作标记该标记用来创建并使用一个Javabean,是非常重要的一个动作标记,我们将在第4章详细讨论。Sun公司的倡导是:用HTML完成JSP页面的静态部分,用Javabean完成动态部分,实现真正意义上的静态和动态分离http:/情境资讯情境资讯-JSPJSP动作动作JSPJSP动作标记动作标记模仿试做(案例)模仿试做(案例)
42、jsp:include示例比较include和jsp:include用户名:密码:http:/jsp:include示例参数examp1的值:参数examp2的值:http:/JSPJSP动作标记动作标记模仿试做(案例)模仿试做(案例)JSPJSP动作标记动作标记模仿试做(案例)模仿试做(案例)jsp:include示例这是一个jsp:include的示例jsp:paramname=examp1value=/jsp:paramname=examp2value=/http:/情境资讯情境资讯-JSPJSP内置对象内置对象v1. 内置对象-requestv2.内置对象-reponsev3.内置对象
43、-outv4.内置对象sessionv5. 内置对象-Applicationv6. 内置对象-pagev7. 内置对象-configv8. 内置对象-Exception http:/1. include 动作标记2. param动作标记 JAVA内置对象内置对象Request对象方法成员http:/分分 类类方方 法法说说 明明取得用户参数GetParameter(strName)返回指定变量名称的数据。GetParameterValues(strName)返回所有变量名称的集合,集合中的内容为各个传送的变量名称。GetParameterNames()返回指定名称的数组,若用户所输入的数据为复
44、数,且变量名称相同,则使用此方法来取得复数的数组数据。取得系统信息getProtocol()返回通信协议的方式getRemoteAddr()返回客户端用户的IP地址getRemoteHost()返回客户端用户的主机名称getRemoteHost()返回发出请求的方式,如http、ftp、telnetgetScheme()返回发出请求的方式,如http、ftp、telnetgetServerName()返回服务器主机的名称getServerPort()返回服务器主机的连接端口号码,如:8080getRealPath()返回目前虚拟路径的真实路径getMethod()返回传送数据的方式,如:GET
45、、POSTgetQueryString()返回附在网址列后的字符串数据getRequestURI()返回请求的URI字符串,不包含网址列后的查询字符串,如“http:/myCom/jsp?data=helloworld!”会传回“/myCom/jsp”getServletPath()传回程序的相对路径与文件名取得标头信息getHeader(Stringname)返回名称为name的请求标头内容getHeaderNames()返回所有请求标头名称的集合第一部分第一部分 案例模仿项目案例模仿项目网上书店网上书店-学习情境学习情境3 3 顾客的登录与注册顾客的登录与注册 学习任务学习任务1:主页布局
46、设计主页布局设计 学习任务学习任务3.1 - 3.1 - 主页布局设计主页布局设计在本任务中主要实现静态的页面设计,网上书店的页面布局可以参考成熟的商业网站,如:当当网、卓越亚马逊网、中国互动出版网等。在实施主页设计之前要掌握HTML和DW的相关知识。【任务计划】JSP借由标签所构成的表单区块中,取得用户在其中特定字段输入的数据內容 。http:/学学习习任任务务3.1 - 3.1 - 主主页页布局布局设计设计网页的布局设计,就是指网页中图像和文字之间的位置关系,简单来说也可以称之为网页排版。从首页图示中可以看出此网页的布局设计如图: 网站logo图片导航菜单 内容页面底部学学习习任任务务3.
47、1 - 3.1 - 主主页页布局布局设计设计【任务实施】学习任务学习任务3.1-3.1-主页布局设计主页布局设计【任务评价】 本任务对整个系统的主页面设计进行了背景知识介绍和页面显示方案的设计:包括HTML基本知识、表格的应用、框架结构的设计以及表单的使用,在主页面设计中要求的效果和使用的技术进行了分析。根据知识铺垫和任务布置的流程,在接受主页面设计的时候更能清晰的知道所学的知识点在本项目中是如何运用的。本任务主要从页面布局、页面元素的使用以及能否正确运用jsp指令及动作来评价完成情况。第一部分第一部分 案例模仿项目案例模仿项目网上书店网上书店-学习情境学习情境3 3 顾客的登录与注册顾客的登
48、录与注册 学习任务学习任务2:用户注册用户注册 学习任务学习任务3.2 3.2 -用户注册用户注册务务3.2用户注册用户注册【任务计划】在本任务中主要设计了用户注册,用户应该分为3个不同的类型,普通用户、注册用户和管理员用户,根据用户的不同类型赋予不同的权限。完成本项目的注册页面用户注册实现流程1、静态页面实现方法:可以用DW软件添加表单和按钮、图片等2、动态页面实现方法:用jsp内置对象对用户注册信息的获取,并反馈注册信息给顾客3、注册页面userRegister.jsp:表单与按钮学习任务学习任务3.2 3.2 -用户注册用户注册务务3.2 用户注册用户注册【任务实施】静态页面静态页面-可
49、以用DW软件添加表单和按钮、图片等动态页面动态页面-用jsp内置对象对用户注册信息的获取,并反馈注册信息给顾客注册页面注册页面userRegister.jsp:表单与按钮学习任务学习任务3.2 3.2 -用户注册用户注册学习任务学习任务3.2 3.2 -用户注册用户注册务务3.2 用户注册用户注册用户注册成功页面:userRegisterSuccess.jsp【任务评价】 在JSP中,服务器端与客户端交互最常用的方法就是采用表单交互数据。本节课的演示试验比较简单,根据目前大部分交互页面的设计,可以在以下几个方面进行评价:能否利用JavaScript语句验证数据合法性,验证通过后数据才会提交;在
50、表单中对POST和GET方法的使用;能否使用request对象获取顾客信息的有效期(关闭本次连接之后情景);学习任务学习任务3.2 3.2 -用户注册用户注册务务3.2 用户注册用户注册第一部分第一部分 案例模仿项目案例模仿项目网上书店网上书店-学习情境学习情境3 3 顾客的登录与注册顾客的登录与注册 学习任务学习任务3:用户登录用户登录 【任务计划】 在本任务中主要设计了用户登录操作,用户应该分为3个不同的类型,普通用户、注册用户和管理员用户,根据用户的不同类型赋予不同的权限。在用户登录的时候注意登录成功页面的链接。 用户注册用户注册 用户注册用户注册学习任务学习任务3.3.3 3 -用户登
51、录用户登录学学习习任任务务3.3 -3.3 -用用户户登登录录【任务实施任务实施】1、顾客信息的提交-表单2、顾客信息的获取-request对象3、顾客信息的显示-out对象 任务实施任务实施 - -用户登录用户登录用户登录页面:userLogin.jsp登录成功转到index.jsp页面任务实施-功能实现技术关键问题:如何把顾客信息从登录页面的表单里获取,上传递给服务器,并让服务器把信息显示出来解决方案:request对象主要实现信息在不同页面之间的传递,可以获取客户提交的数据、网页地址后带的参数等。userLogin.jsp提交表单index.jsp任务实施-任务分析1、顾客信息的提交-表
52、单(userlogin.jsp)表单一般格式: 提交手段案例:帐号:密码:任务实施-任务分析2、顾客信息的获取-request对象(index.jsp) 内置对象request封装了用户提交的信息,使用该对象可以获取用户提交的信息,其中getParameter()方法获得指定名称的客户端提交的参数值。使用方法为:request.getParameter(String str)案例:request.getParameter(“username”);功能:获取表单中username文本框的内容;3、顾客信息的显示-out对象(index.jsp)u 利用println方法out.println(r
53、equest.getParameter(username);功能:输出文本框username的内容任务实施-任务分析u利用表达式输出功能:输出文本框username的内容任务实施-实现步骤1、确定实现功能通过服务器的内置对象request实现信息传递2、系统设计登录界面login.jsp接收登录信息页面index.jsp3、代码的编写4、系统测试5、代码的编写任务实施-示范引导登录页面-userLogin.jsp 用户登陆帐号:密码:divstyle=font-size:16px返回利用表单确定页面转向你还没有登录,欢迎您光临!今天是月日任务实施-关键代码演示登录成功页面-index
54、.jsp判断是否输入姓名显示日期显示用户姓名学学习习任任务务3.3 -3.3 -用用户户登登录录【任务评价】表单是实现浏览器和网站交互的重要手段,用户权限的设定是本节的重点。本任务主要从表单客户端确认的JSP脚本实现,常用内置对象request、session、out的功能和用法,登录功能的实现效果方面考查。同步拓展同步拓展 - -成成绩录绩录入入【学习目标】通过对本学习情境的学习和实训,使学生掌握连接数据库的 方法,并能熟练对数据库检索、添加、修改和删除记录。【任务计划】1.完成页面 core_add.jsp 页面的设计,该页面中有三个 HTML表格,上面的表格用于选择要录入学生成绩的班级和
55、对应的课程,当选择并按“提交”按钮后,就会出现第二个HTML表格:第二个表格显示了选中班级已有的课程成绩,在课程信息这一列中的输入框中可修改对应的学生课程成绩,按“保存成绩”按钮就会将输入的学生成绩保存到数据库中;第三个表格用于显示一些提示信息。 2. 完成页面core_save.jsp的设计,单击“保存成绩”按钮,会把数据提交到core_save.jsp页面。第一部分第一部分 案例模仿项目案例模仿项目网上书店网上书店学习情境学习情境4 图书管理图书管理JSP开发离不开JDBC数据库,几乎所有的JSP项目都要使用数据库,所以掌握JDBC数据库编程技术非常重要,本项目的目标是掌握JSP中使用数据
56、库的方法,对于网上书店的图书数据,也需要写入数据库。本项目就将对数据库访问进行说明,并完成网上书店数据管理的相关任务。1.知识目标知识目标(1)掌握jdbc基本概念,掌握JDBC连接数据库的工作原理、连接方式和连接过程;(2)熟练掌握纯JAVA驱动程序连接各种数据库;(3)熟练掌握网上书店数据库中书籍信息的添加、删除、更新及显示。2.技能目标技能目标(1)能独立设计网上书店数据库;(2)能安装数据库管理系统,建立数据库以及表;(3)能按照规范的JDBC开发步骤实现网上书店项目的应用。学习目标学习目标一、一、JDBC概述概述二、二、JDBC驱动驱动1JDBC-ODBC桥加ODBC驱动程序2本地A
57、PI3JDBC网络纯Java驱动程序4本地协议纯Java驱动程序三、连接数据库的常用方式三、连接数据库的常用方式1注册JDBC驱动程序。2建立到数据库的连接。3创建SQL语句。4执行SQL语句。5处理结果。6从数据库断开连接。情境资讯情境资讯情境资讯-JDBC概述JDBC是一种可用于执行SQL语句的JavaAPI应用程序设计接口)。它由一些Java语言编写的类和界面组成。JDBC提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。JDBC是由SUN公司免费提供的。操作不同的数据库仅有连接方式上的差异。(下图:使用JDBC操作数据库)应用程序JDBC使用连接
58、使用JDBC之应用程序所驻留的计算机数据库JDBC要与数据库建立连接,主要通过四个步骤1、装载数据库驱动程序2、与数据库建立连接3、将SQL语句传递给数据库,执行操作,返回得到结果4、关闭数据库连接请求应用服务器响应JSP页面页面数据库服务器客户端操作结果连接操作情境资讯-JDBC概述情境资讯-JDBC驱动目前比较常见的JDBC驱动程序可分为以下四个种类: (1)JDBC-ODBC桥加ODBC驱动程序 JavaSoft桥产品利用ODBC驱动程序提供JDBC访问。注意,必须将ODBC二进制代码(许多情况下还包括数据库客户机代码)加载到使用该驱动程序的每个客户机上。因此,这种类型的驱动程序最适合于
59、企业网(这种网络上客户机的安装不是主要问题),或者是用Java编写的三层结构的应用程序服务器代码。(2)本地API 这种类型的驱动程序把客户机API上的JDBC调用转换为Oracle、Sybase、Informix、DB2或其它DBMS的调用。注意,象桥驱动程序一样,这种类型的驱动程序要求将某些二进制代码加载到每台客户机上。 情境资讯-JDBC驱动(3)JDBC网络纯Java驱动程序 这种驱动程序将JDBC转换为与DBMS无关的网络协议,之后这种协议又被某个服务器转换为一种DBMS协议。这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上。所用的具体协议取决于提供者。通常,这
60、是最为灵活的JDBC驱动程序。有可能所有这种解决方案的提供者都提供适合于Intranet用的产品。为了使这些产品也支持Internet访问,它们必须处理Web所提出的安全性、通过防火墙的访问等方面的额外要求。几家提供者正将JDBC驱动程序加到他们现有的数据库中间件产品中。 (4)本地协议纯Java驱动程序 这种类型的驱动程序将JDBC调用直接转换为DBMS所使用的网络协议。这将允许从客户机机器上直接调用DBMS服务器,是Intranet访问的一个很实用的解决方法。由于许多这样的协议都是专用的,因此数据库提供者自己将是主要来源,有几家提供者已在着手做这件事了。 1使用JDBC-ODBC Brid
61、ge桥接方式连接数据库 使用JDBC-ODBC桥接器连接数据库的原理如图所示。应用程序只需建立JDBC和ODBC之间的连接,即所谓的JDBC-ODBC桥接器,而和数据库的连接由ODBC完成。这种方法通过建立ODBC数据源而不是直接连接数据库的方式屏蔽了不同数据库的异构性,在需要更换数据库系统时,操作非常简单。然而,这种方法也使得应用程序依赖于ODBC,移植性较差,即应用程序所驻留的计算机必须提供ODBC。情境资讯-连接数据库的常用方式2使用纯Java数据库驱动程序连接JDBC提供的API能够通过纯Java数据库驱动程序转换为数据库管理系统所使用的专用协议来实现和特定的数据库系统交互信息,其原理
62、如图所示。情境资讯-连接数据库的常用方式情境资讯-连接MYSQL数据库实例publicclassInsertInfo publicstaticvoidmain(Stringargs) try /1注册数据库JDBC驱动 Class.forName(com.mysql.jdbc.Driver );/2创建与数据库之间的连接 Connectioncon=DriverManager.getConnection(jdbc:mysql:/ localhost:3306/test,root,); /3创建用于转换并发送SQL语句的Statement对象 PreparedStatementpstm=con.
63、prepareStatement(insertinto employee(sex,name,age)values(?,?,?); /4执行SQL for(inti=0;i10;i+) pstm.setString(1,female); pstm.setString(2,name+i); pstm.setInt(3,i); pstm.executeUpdate();/step4and5 /5如果是查询SQL,还要处理查询结果,这里是插入语句,因此没有查询结果 /6释放JDBC对象以及建立的连接 pstm.close(); con.close(); System.out.println(信息已经插
64、入到表中); catch(SQLExceptione) System.out.println(插入失败); e.printStackTrace(System.out); System.out.println(错误代码is:+e.getErrorCode(); System.out.println(SQL状态is:+e.getSQLState(); catch(Exceptione) e.printStackTrace(System.out); 第一部分第一部分 案例模仿项目案例模仿项目网上书店网上书店-学习情境学习情境4 4 图书管理图书管理 学习任务学习任务1:图书管理的前图书管理的前期准备
65、期准备 学习任务4.1 图书管理的前期准备【任务计划】本任务主要是设计完善网上书店数据库,数据库设计的优劣对保证系统的安全性和高效性非常重要,本任务要建立网上书店数据库并连接成功。设计图书管理系统用户数据库,建立用户表,设计注册用户界面,将用户注册信息写入数据库,下次登录使用。学习任务4.1 图书管理的前期准备【任务实施】网上书店数据库详细设计如下数据库test库总共有五张表,表与表之间存在一定的关系,具体设计如下:(1)管理员信息表admininfo管理员信息表admininfo用来保存管理员的帐号和密码和管理员的类别,结构如图所示。v步骤步骤1 1: 学习任务4.1 图书管理的前期准备【任
66、务实施】(2)图书信息表GoodsInfo图书信息表GoodsInfo用来保存图书信息,图书ID、图书名称、图示价格、图书类别、图书数量、图书上架日期、图书图片、图书浏览量、图书作者、图书信息,结构如图所示。(3)用户信息表UserInfo用户信息表UserInfo用来保存用户的信息,和用户的书评信息,结构如图所示。(4)订单货物表OrderGoods订单货物表OrderGoods用于保存每一份订单中各种图书的信息,结构如图所示。学习任务4.1 图书管理的前期准备【任务实施】 (5)订单基本信息表OrderInfo订单基本信息表OrderInfo用来保存用户提交订单的基本信息。v步骤2:加载数
67、据库驱动(以项目为例子)v步骤3:连接数据库tryClass.forName(com.mysql.jdbc.Driver);catch(ClassNotFoundExceptione)out.print(e);trycon=DriverManager.getConnection(jdbc:mysql:/127.0.0.1:3309/a,root,root);Stringsql=insertintouser(USERNAME,PASSWORD,NAME,SEX,ADDRESS,CODE,TEL,EMAIL)values(+id+,+password+,+name+,+sex+,+address+
68、,+code+,+tel+,+email+);PreparedStatementps=con.prepareStatement(sql);ps.execute();con.close();response.sendRedirect(success.jsp);catch(SQLExceptione)out.print(e);v步骤4:执行SQL语句学习任务4.1 图书管理的前期准备v步骤步骤5:程序运行过程及结果:程序运行过程及结果成功注册页面效果学习任务4.1 图书管理的前期准备学习任务4.1 图书管理的前期准备【任务评价】本任务实现对数据库的设计和连接功能,主要从对常用数据库是否熟悉,是否能
69、独立设计并完善网上书店数据库以及能否在JSP中连接数据库方面评价。第一部分第一部分 案例模仿项目案例模仿项目网上书店网上书店-学习情境学习情境4 4 图书管理图书管理 学习任务学习任务2:书籍信息的动书籍信息的动态显示态显示学习任务4.2 书籍信息的动态显示【任务计划】在图书显示模块中,图书分类是将所有图书种类告知给消费者,使消费者快速地了解一些图书信息。为了使消费者更详细地了解图书信息,每类图书的图片和基本信息也要呈现在网上,包括封面、书名、出版社、出版时间、价格等。另外为了便于用户购买该图书或保存记忆该图书的信息,还需要有”购买”和”放入暂存架”按钮。【任务实施】 当管理员单击商品管理时,
70、会显示出图书的类别,还会显示所有图书信息主要涉及到AdminServlet.java,admsp.jsp这两个文件学习任务4.2 书籍信息的动态显示【任务评价】 本任务和用户注册功能相似,书籍信息添加就是往书籍信息表中插入一条记录。利用表单输入书籍各项信息,实现对数据库的操作,本任务将从用户对图书浏览页面的实现和管理员对图书管理功能的实现来评价。学习任务4.2 书籍信息的动态显示第一部分第一部分 案例模仿项目案例模仿项目网上书店网上书店-学习情境学习情境4 4 图书管理图书管理 学习任务学习任务3:书籍信息的添加、书籍信息的添加、更新、删除更新、删除学习任务4.3书籍信息的添加、更新、删除【任
71、务计划】 本任务实现管理员对网上书店数据库实现添加、更新及删除数据的功能,主要实现网上书店书籍信息的添加、更新及删除工作。【任务实施】1、admsp.jsp主要是显示管理图书界面。2、admadd.jsp是实现图书的添加。3、goodsmanage.jsp在管理图书的界面中显示图书的信息,供管理员进行修改和删除图书。4、AdminServlet.java 是处理管理员提交的信息。学习任务4.3书籍信息的添加、更新、删除学习任务4.3书籍信息的添加、更新、删除【任务评价】书籍信息的修改就是对数据库的书籍信息中的某一条记录的部分字段的值进行修改,然后再保存回数据库中。利用表单获取书籍的各项信息,主
72、要从图书更新是否成功,图书删除是否成功,图书添加是否成功来评价。学习任务4.3书籍信息的添加、更新、删除第一部分第一部分 案例模仿项目案例模仿项目网上书店网上书店-学习情境学习情境4 4 图书管理图书管理 学习任务学习任务4:书籍信息分页显书籍信息分页显示示学习任务学习任务4.4 4.4 书籍信息分页显示书籍信息分页显示【任务计划】本任务主要实现书籍信息的分页显示,主要介绍分页的算法和分页链接的生成方法。【任务实施】 当要显示的图书信息很多时,需要对数据分页显示。分页显示的关键是分页的算法和分页链接的生成方法。1、数据分页Bean2、数据分页控制端Servlet3、数据分页页面学学习习任任务务
73、4.4 4.4 书书籍信息分籍信息分页显页显示示【任务评价】 翻页的核心就是指针根据动态页码在结果集中重新定位,从而显示记录条数,本任务主要从书籍页面能否按照分页正确显示来评价。学学习习任任务务4.4 4.4 书书籍信息分籍信息分页显页显示示【学习目标】通过对本学习情境的学习和实训,使学生掌握JavaBean的编写和使用,以便时业务逻辑独立出来,会使用JSP+JavaBean模式 开发一般程序。【任务计划】1.能根据不同的查询条件查询出学生的成绩信息。 2.支持班级查询和学生姓名的组合查询。 3.支持模糊查询。4.设计并实现页面student_core_view.jsp实现学生成绩的查询。 5
74、. 要求该页面使用两个 HTML 表格,第一个表格用于输入查询 条件,可选择所属的班级,并输入要查询的学生姓名,输入后按“提交”按钮,查询的结果会显示在第二个表格中。同步拓展同步拓展- 查询查询成成绩绩第一部分第一部分 案例模仿项目案例模仿项目网上书店网上书店学习情境学习情境5图书购买图书购买【学习目标】【学习目标】一般来说,购物车要完成以下几个方法的功能:添加商品到购物车。用户选中商品后添加商品到购物车中。查看购物车。用户可以随时查看购物车中的商品内容。修改购物车。用户可以根据需要调整购物车中某商品的数量。删除购物车中的商品。用户可以删除购物车中的某件商品或全部商品。【学习目标】【学习目标】
75、1 1知识目标知识目标 (1)了解session对象和cookie的使用 (2)了解哈希表的使用 2 2技能目标技能目标 (1)熟练完成对购物车业务类设计 (2)能实现添加图书到购物车的操作 (3)能实现对购物车图书数量的修改【情境资讯情境资讯】一、一、sessionsession对象对象 HTTP协议是一种无状态协议,一个客户向服务器发出请求(request),然后服务器返回响应(response),连接就被关闭了。在服务器端不保留用户的连接信息,因此当下一次连接时,服务器无法判断和以前的连接是否属于同一客户。但是,在实际应用中,当一个用户访问某个网站时,可能会在这个网站的几个页面间反复连接
76、、刷新或向另一个页面提交信息等,服务器应当通过某种方法知道这是同一个客户。在JSP技术中,服务器通过内置Session对象记录有关连接的信息,内置对象Session是实现了HttpSession接口的一个实例。【情境资讯情境资讯】 从客户连接到服务器并请求打开第一个页面开始,到用户关闭浏览器离开网站结束,这个过程被称为一次会话(Session),在此期间,客户被分配了一个唯一编号SessionID,客户在一次会话期间始终使用此ID,直到会话结束。不同用户的SessionID是不同的。Session对象常用方法有以下几个:Public Objiect getAttribute(String ke
77、y):得到关键字是key的对象。Public Enumeration getAttributes():得到session中所有属性的一个枚举对象,该枚举对象使用nextElements()遍历session中各个对象的关键字。【情境资讯情境资讯】public String getID():得到SeesionID。public void invalidate():使session对象无效。public void removeAttribute(String name):删除名为name的属性值。【情境资讯情境资讯】二、二、CookieCookie对象对象1概述 Cookie是一种能够让服务器把少
78、量数据存储到客户端的硬盘中,或是从客户端硬盘读取的一种技术。Cookie是当用户浏览某网站时,由Web服务器置于用户硬盘上的一个非常小的文本文件,它可以记录用户的ID、浏览过的网页、停留的时间等信息。当用户再次来到该网站时,通过读取Cookie就可得知用户的相关信息从而做出相应的动作,如不让用户输入ID、密码就直接登录等。【情境资讯情境资讯】2写入Cookie信息 Cookie存放在客户端,首先要新建一个Cookie,然后设置其属性,再通过response对象的addCookie()方法将其放入客户端,获取Cookie对象可调用request对象的getcookies()方法。调用Cookie
79、对象的构造函数可以创建Cookie,构造函数的语法格式如下:Cookie(String cookiename,String cookievalue)在函数中,第一个参数cookiename是新建的Cookie对象的名称,第二个参数cookievalue是新建的Cookie对象的值。Cookie对象的名称和值都不能包含空白字符以及下列字符: ( ) = , / ? :【情境资讯情境资讯】3读取Cookie内容 Cookie文件创建后,如果用户再次访问该网站,服务器就可以从客户端读取已经存在的Cookie信息。三、三、HashTableHashTable和和HashMapHashMap概述概述1H
80、ashTable 哈希表(HashTable)是一种重要的存储方式,也是一种常见的检索方式。其基本思想是将关系码的值作为自变量,通过一定的函数关系计算出对应的函数值,把这个数值解释为结点的存储地址,将结点存入计算得到存储地址所对应的存储单元。检索时采用检索关键字的方法。现在哈希表有一套完整的算法来进行插入、删除和解决冲突。在Java中哈希表用于存储对象,实现快速检索。【情境资讯情境资讯】HashTable对象的创建格式如下:Hashtable hashtable=new Hashtable();Hashtable提供了基本的插入、检索等方法,简单介绍如下:public synchronized
81、 void put(Object key,Object value):给对象value设定一关键字key,并将其加到HashTable中。若此关键字已经存在,将此关键字对应的旧对象更新为新对象value.public synchronized Object get(Object key):根据给定关键字key获取相应的对象。public synchronized boolean containsKey(Object key):判断哈希表中是否包含关键字key.【情境资讯情境资讯】public synchronized boolean contains (Object value):判断valu
82、e是否是哈希表中的一个元素.public synchronized Object remove(Object key):从哈希表中删除关键字key对应的对象。public synchronized void clear():清除哈希表中所有的对象。public synchronized Enumeration keys():返回关键字对应的枚举对象。public synchronized Enumeration elements():返回元素对象枚举对象。【情境资讯情境资讯】HashMap类提供的常见方法:public Object get(Object key):返回指定键在此表示哈希映射总
83、所映射的值,如果对于此键来说,映射不包含任何映射关系,则返回null。public void put(Object key,Object value):在此映射中关联制定值与指定键。如果此映射以前包含了一个该键的映射关系,则旧值被替换。public void remove(Object key):如果此映射中存在该键的映射关系,则将其删除。public Collection values():返回此映射所包含的值的collection试图。【情境资讯情境资讯】2HashMapHashMap是基于哈希表的Map接口的实现。此实现提供所有可选的映射操作,并允许使用null值和null键。HashM
84、ap对象的创建语法格式如下:HashMaP map=new HashMap();【情境资讯情境资讯】3HashTable和HashMap的区别Hashtable的应用非常广泛,在新框架中,HashMap可以代替Hashtable。建议使用HashMap,不要使用hashtable。下面简单分析它们的区别。Hashtable的方法是同步的,HashMap未经同步,所有在多线程场合要手动同步。这个区别就像Vector和ArrayList一样。Hashtable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。【情境资讯情境资讯】Hashtab
85、le有一个contains(Object value),功能和containsValue(Object value)一样。Hashtable使用Enumeration,而HashMap使用Iterator。Hashtable中hash数组默认大小是11,增加的方式是old2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。本情境主要任务学习任务1:购物车业务类设计购物车业务类设计1学习任务2:添加图书到购物车添加图书到购物车2学习任务1:修改购物车中图书的数量3学习任务学习任务5.1购物车业务类设计购物车业务类设计【任务计划】 用户登录网站,进行显示图书信息的页面。在该页
86、面中,设有“查看购物车”的超级链接。此时若要购物,便可在相关图书后的表单中输入购买数量,将其放入购物车。若用户单击“查看购物车”的超级链接,进入购物车页面显示购物车内的图书情况,此时可进行产品删除或修改操作。学学习习任任务务5.1购购物物车业务类设计车业务类设计【任务实施】 设计购物车业务类设计图书信息类,因此要设计图书信息类。购物车能保存图书信息,并且能根据图书id查询图书,选用Hashtable类生成的对象就可以满足购物车的功能需求。 将图书添加到购物车是将图书加入到Hashtable生成的对象中。添加前要判断购物车中是否已经存在该对象了,如果已经存在则修改其数量;否则直接加入到购物车中。
87、 删除购物车中的图书是从Hashtable生成的对象中移除对象。删除图书时先判断购物车中是否存在,如果已存在则移除该对象;否则应提示出错信息。 学学习习任任务务5.1购购物物车业务类设计车业务类设计1图书信息类设计文件Book.java代码如下:public class Book private int id;/图书标识 private String bookId;/图书条码 private String bookName; /图书名 private String writer;/图书作者 private String press;/出版社 private int number;/数量 pri
88、vate double price;/价格 public Book() public int getId() return id; 学学习习任任务务5.1购购物物车业务类设计车业务类设计 public void setId(int id) this.id = id; public String getBookId() return bookId; public void setBookId(String bookId) this.bookId = bookId; public String getBookName() return bookName; public void setBookNa
89、me(String bookName) this.bookName = bookName; public String getWriter() return writer; 学学习习任任务务5.1购购物物车业务类设计车业务类设计 public void setWriter(String writer) this.writer = writer; public String getPress() return press; public void setPress(String press) this.press = press; public int getNumber() return nu
90、mber; public void setNumber(int number) this.number = number; public double getPrice() return price; public void setPrice(double price) this.price = price; 学学习习任任务务5.1购购物物车业务类设计车业务类设计2购物车业务设计文件Cart.java完成购物车业务设计,其代码如下:import java.util.*;public class Cart private Hashtable hash; public Cart() hash =
91、new Hashtable(); /下面方法实现添加图书到购物车中 public void addCart(Book book) boolean result = hash.containsKey(book.getBookId(); if (result) /如果该图书已经在购物车中存在,则只修改其数量即可 int number = book.getNumber(); /根据图书的id取出原来的图书对象 学学习习任任务务5.1购购物物车业务类设计车业务类设计 Book book0 = (Book) hash.get(book.getBookId(); book0.setNumber(book0
92、.getNumber() + number); /跟新hash中的图书信息 hash.put(book.getBookId(), book0); else hash.put(book.getBookId(), book); /下面代码实现从购物车中删除图书 public void removeCart(Book book) boolean result = hash.containsKey(book.getBookId(); if (result) hash.remove(book.getBookId(); else System.out.println(该图书并不存在购物车中,不能删除);
93、学学习习任任务务5.1购购物物车业务类设计车业务类设计 /以下代码实现修改购物车中图书数量 public void updateCart(Book book) boolean result = hash.containsKey(book.getBookId(); if (result) /如果该图书已经在购物车中存在,则只修改其数量即可 int number = book.getNumber(); /根据图书的id取出原来的图书对象 Book book0 = (Book) hash.get(book.getBookId(); book0.setNumber(number); /跟新hash中的
94、图书信息 hash.put(book.getBookId(), book0); else System.out.println(该图书并不存在购物车中,不能删除); 学学习习任任务务5.1购购物物车业务类设计车业务类设计 /以下代码实现返回购物车内容 public Hashtable getCart() return this.hash; /以下方法代码实现显示购物车内容 public String showCart() StringBuffer str = new StringBuffer(); if (hash = null | hash.size() = 0) str.append(购物
95、车为空); else Enumeration e = hash.elements(); while (e.hasMoreElements() Book book = e.nextElement(); str.append(图书ID: + book.getId() + ,图书ISBN: + book.getBookId() + ,); str.append(图书名字: + book.getBookName() + ,图书作者: + book. getWriter() + n); str.append(图书出版社: + book.getPress() + ,图书数量: + book. getNum
96、ber() + ,); str.append(图书价格: + book.getPrice() + n); return str.toString(); 学学习习任任务务5.1购购物物车业务类设计车业务类设计3测试类的设计 文件TestCart.java用于对图书类Book和购物车类Cart的测试,其代码如下:public class TestCart public static void main(String args) Book book0=new Book(); book0.setId(10000); book0.setBookId(0987-7-302-22121-0); book0.
97、setBookName(JSP程序设计); book0.setPress(清华大学出版社); book0.setWriter(张三丰); book0.setNumber(30); book0.setPrice(32.8); Book book1=new Book(); book1.setId(10001); book1.setBookId(0987-7-302-22121-1); 学学习习任任务务5.1购购物物车业务类设计车业务类设计 book1.setBookName(ASP.NET Web开发技术); book1.setPress(机械工业出版社); book1.setWriter(李白)
98、; book1.setNumber(200); book1.setPrice(62.4); Book book2=new Book(); book2.setId(10002); book2.setBookId(0987-7-302-22121-2); book2.setBookName(软件工程和); book2.setPress(北京大学出版社); book2.setWriter(李四); book2.setNumber(12); book2.setPrice(25.8);String str=; Cart cart=new Cart();学学习习任任务务5.1购购物物车业务类设计车业务类设
99、计 /加入商品之前购物车情况 System.out.println(加入图书之前的购物车情况); str=cart.showCart(); System.out.println(str); /加入一本图书之后的购物车 System.out.println(加入一本图书后的购物车情况); cart.addCart(book0); str=cart.showCart(); System.out.println(str); /加入两本图书后的购物车 System.out.println(加入两本图书后的购物车情况); cart.addCart(book1); str=cart.showCart();
100、 System.out.println(str); 学学习习任任务务5.1购购物物车业务类设计车业务类设计 /修改购物车中图书的信息 System.out.println(修改购物车中图书的数量); book0.setNumber(150); cart.updateCart(book0); str=cart.showCart(); System.out.println(str); 测试结果如图5-1所示图5-1 购物车业务类的测试结果学习任务学习任务5.1购物车业务类设计购物车业务类设计【任务评价】 购物车业务类的设计运用了Hashtable类提供的添加、删除、查询等方法。购物车测试类验证了购
101、物车业务类的各项功能的正确性。有了购物车的业务类,购物车的其它任务就有章可循了。本任务主要从购物车的绘制、图书能否正确添加到购物车、能否正确删除购物车中的图书,以及是否能正确修改购物车图书数量来评价学生完成情况。学习任务学习任务5.2添加图书到购物车添加图书到购物车【任务计划】 本任务要完成把图书添加到购物车中的设计。为了将图书添加到购物车中,首先设计图书的显示页面,其次设计购物车控制的Servlet,最后设计购物车内容显示页面。学习任务学习任务5.2添加图书到购物车添加图书到购物车【任务实施】(1)图书信息显示页面设计 文件book.jsp用于显示图书信息,为了简化处理,我们直接放5本书的基
102、本信息,包括书名、作者、价格、购买数量等。在实际的项目开发中,图书信息是从数据库中读取出来的,但对数据的处理是相似的。其代码如下: 图书信息页面 学习任务学习任务5.2添加图书到购物车添加图书到购物车 图书基本信息 序号 图书名 图书作者 图书价格 图书数量 1 Java Web 应用程序设计 耿祥义 36.0 学习任务学习任务5.2添加图书到购物车添加图书到购物车 4 从入门到精通 赵晓东 59.0 5 C#程序开发 张无忌 42.0 学习任务学习任务5.2添加图书到购物车添加图书到购物车 2 JSP实用教程 耿祥义 26.0 3 C语言程序设计 谭浩强 29.0 学习任务学习任务5.2添加
103、图书到购物车添加图书到购物车(2)购物车Servlet设计创建一个Servlet处理添加图书到购物车的操作。文件CartControl.java的代码如下:import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;i
104、mport javax.servlet.RequestDispatcher;import javax.servlet.http.HttpSession;public class CartControl extends HttpServlet protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException doPost(request,response); 学习任务学习任务5.2添加图书到购物车添加图书到购物车protected v
105、oid doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException response.setContentType(text/html;charset=UTF-8); request.setCharacterEncoding( UTF-8 ); PrintWriter pw=response.getWriter(); HttpSession session=request.getSession(); String act=request.getPara
106、meter(act); if(act=null) act=; System.out.println(act=+act); RequestDispatcher rd=request.getRequestDispatcher(/cartMain.jsp); if(act.equals(add) System.out.println(添加图书到购物车); String idStr=request.getParameter(id); String bookName=request.getParameter(bookName); String writer=request.getParameter(wr
107、iter); String priceStr=request.getParameter(price); String numberStr=request.getParameter(number);学习任务学习任务5.2添加图书到购物车添加图书到购物车 int id=Integer.parseInt(idStr); double price=Double.parseDouble(priceStr); int number=Integer.parseInt(numberStr); Book book=new Book(); book.setId(id); book.setBookName(book
108、Name); book.setWriter(writer); book.setPrice(price); book.setNumber(number); Cart cart=(Cart)session.getAttribute(cart); if(cart=null) Cart cart1=new Cart(); cart1.addCart(book); session.setAttribute(cart, cart1); else cart.addCart(book); session.setAttribute(cart, cart); rd.forward(request, respons
109、e); 学习任务学习任务5.2添加图书到购物车添加图书到购物车 (3)购物车页面设计创建一个JSP页面cartMain.jsp来显示购物车中的图书信息。主要是读取保存在session对象中的数据然后按照Book类的方式显示在页面上。文件cartMain.jsp的代码如下: 购物车中的内容 您的购物车中的内容 图书名 图书作者 图书价格 图书数量 学习任务学习任务5.2添加图书到购物车添加图书到购物车 0) Hashtable hash = cart.getCart(); Enumeration e = hash.elements(); while (e.hasMoreElements() Bo
110、ok book = e.nextElement(); % input type=text name=number value= / % else out.println(您还没有购书呢!); % 学习任务学习任务5.2添加图书到购物车添加图书到购物车 继续购物 生成订单 点击图书基本信息页面中的“加入购物车”按钮,会跳转到购物车页面显示购物车中的图书内容。运行结果如图5-2所示。图5-2 购物车内容页面学习任务学习任务5.2添加图书到购物车添加图书到购物车【任务评价】 购物车Servlet的设计对不同的操作采用了一致的入口,及根据提交的动作进行判断执行什么操作,避免了编写多个Servlet的麻
111、烦,简化了编程。 购物车数据的保存利用了会话对象保存数据的原理,用户选择的图书保存到session对象中,然会在购物车页面中进行显示。 本任务从图书显示页面的设计性、功能性;购物车控制的servlet的编写;购物车数据显示效果三个方面进行评价。学习任务5.3修改购物车中图书的数量【任务计划】 完成修改图书数量的设计。用户在查看购物车信息时可以根据需要修改要购买的图书的数量,完成修改后返回购物车页面。 要完成修改购买图书数量,首先应该在购物车页面增加一个修改数量的按钮和表单,在单击按钮后完成修改任务,当然处理过程是放在Servlet中完成的,该Servlet需要增加处理该业务的代码。【任务实施】
112、(1)修改购物车页面 在购物车页面cartMain.jsp中增加一个表单和一个修改购买数量的按钮,还要增加一个删除购物车中某种图书的超级链接。文件cartMain.jsp修改后的关键代码如下:form action=/gouwuche/CartControl?act=update&id= input type=text name=number value= / a href=/gouwuche/CartControl?act=delete&id=删除 学习任务5.3 修改购物车中图书的数量(2)修改购物车Servlet在CartControl.Java中加入处理修改数量的业务功能。文件Cart
113、Control.java增加的代码如下:if(act=update) /获取要修改的图书的ID String idStr=request.getParameter(id); /获取要修改的数量 String numberStr=request.getParameter(number); int id=Integer.parseInt(idStr); int number=Integer.parseInt(numberStr); /创建图书对象 Book book=new Book(); book.setId(id); book.setNumber(number); /创建购物车对象 Cart
114、cart=(Cart)session.getAttribute(cart); /修改购物车对象 cart.updateCart(book);学习任务5.3 修改购物车中图书的数量/将修改后的购物车保存到session中 session.setAttribute(cart, cart); /返回购物车页面 rd.forward(request, response); 程序运行结果如图5-3所示。学习任务5.3 修改购物车中图书的数量图5-3 修改购书数量运行界面学习任务5.3 修改购物车中图书的数量【任务评价】 在修改购买的图书数量时有以下两点需要注意:修改操作针对的是某一本具体的图书,且该图书
115、已经被用户选购在购物车中。用户进行修改时首先从会话对象中获取购物车的信息,修改结束后要将修改结果重新保存到会话对象中。那么本任务从图书数量的修改效果;购物车返回页面效果两方面进行评价。课外拓展练习查询成绩查询成绩【学习目标】通过对本学习情境的学习和实训,使学生掌握JavaBean的编写和使用,以便使业务逻辑独立出来,会使用JSP+JavaBean模式 开发一般程序。【任务计划】1能根据不同的查询条件查询出学生的成绩信息。 2支持班级查询和学生姓名的组合查询。 3支持模糊查询。4设计并实现页面student_core_view.jsp实现学生成绩的查询。 5要求该页面使用两个 HTML 表格,第
116、一个表格用于输入查询条件,可选择所属的班级,并输入要查询的学生姓名,输入后按“提交”按钮,查询的结果会显示在第二个表格中。第一部分第一部分 案例模仿项目案例模仿项目网上书店网上书店学习情境学习情境6 : 顾客留言顾客留言 1 1知识目标知识目标 (1)理解Servlet的基本概念、生命周期 (2)理解Servlet的工作原理 2 2技能目标技能目标 (1)熟练部署Servlet的文件目录结构 (2)熟练使用MVC模式开发Web应用学习目标学习目标情境资讯情境资讯http:/Servlet简介简介1Servlet与与JSP的的关系关系2Servlet生命周期生命周期3创建第一个创建第一个Serv
117、let程序程序4servletapi函函数数5情境资讯情境资讯-Servlet简介简介http:/ Servlet是使用Java Servlet 应用程序设计接口(API)及相关类和方法的 Java 程序。除了 Java Servlet API,Servlet 还可以使用用以扩展和添加到 API 的 Java 类软件包。Servlet 在启用 Java 的 Web 服务器上或应用服务器上运行并扩展了该服务器的能力。Java servlet对于Web服务器就好象Java applet对于Web浏览器。Servlet装入Web服务器并在Web服务器内执行,而applet装入Web浏览器并在Web浏
118、览器内执行。Java Servlet API 定义了一个servlet 和Java使能的服务器之间的一个标准接口,这使得Servlets具有跨服务器平台的特性。(1) 创建并返回一个包含基于客户请求性质的动态内容的完整的 HTML页面。(2) 创建可嵌入到现有 HTML 页面中的一部分 HTML 页面(HTML 片段)。(3) 与其它服务器资源(包括数据库和基于 Java 的应用程序)进行通信。 (4) 用多个客户机处理连接,接收多个客户机的输入,并将结果广播到多个客户机上。例如,Servlet 可以是多参与者的游戏服务器。 (5) 当允许在单连接方式下传送数据的情况下,在浏览器上打开服务器至
119、applet的新连接,并将该连接保持在打开状态。当允许客户机和服务器简单、高效地执行会话的情况下,applet也可以启动客户浏览器和服务器之间的连接。可以通过定制协议或标准进行通信。 (6) 对特殊的处理采用 MIME 类型过滤数据,例如图像转换和服务器端。 (7) 将定制的处理提供给所有服务器的标准例行程序。例如,Servlet 可以修改如何认证用户。情境资讯情境资讯-Servlet简介简介http:/Servlet可完成如下功能:情境资讯情境资讯-Servlet与与JSP的关系的关系http:/ 从表面上看,JSP页面已经不再需要Java类,似乎完全脱离了Java面向对象的特征。事实上,J
120、SP是Servlet的一种特殊形式,每个JSP页面就是一个Servlet实例JSP页面由系统编译成Servlet,Servlet再负责响应用户请求。JSP其实也是Servlet的一种简化,使用JSP时,其实还是使用Servlet,因为Web应用中的每个JSP页面都会由Servlet容器生成对应的Servlet。对于Tomcat而言,JSP页面生成的Servlet放在work路径对应的Web应用下。Servlet与与JSP的关系的关系情境资讯情境资讯-Servlet生命周期生命周期 一个Servlet是javax,servlet包中Httpservlet类的子类。Servlet的生命周期主要有三
121、个过程组成:1 当创建Servlet请求时,Web应用服务器能动态的装载和实现化Servlet。即服务器会创建Servlet的一个实例,并调用Servlet的init方法初始化。2 一旦初始化了Servlet,Servlet就能随时等候处理请求。通常是调用service方法.service方法会根据HTTP请求的类型调用doGet()或doPost()方法。3 当Web服务器卸载Servlet时,调用的destory方法,Servlet会释放它使用的任何资源。Init方法只被调用一次,即在Servlet第一次被请求时加载时调用该方法。当有客户请求同一Servlet时,Web服务器会启动 一个新
122、的线程,在该线程中,Servlet调用service方法响应客户的请求,也就是说,每个客户的每次请求都会调用service方法。1编写Servlet并编译成class文件,编译时,将servlet-api.jar文件加入到classpath中2 将编译好的class文件复制到应用的WEB-INF/CLASSES/下3 在web.xml中进行配置,,具体可参见下面的web.xml.。HelloServlet.javaServlet的开的开发三个步骤发三个步骤http:/import java.io*;import javax.servlet.http.*;public clalss HelloS
123、ervlet extends HttpServlet public void doGet(HttpServletRequest request,HttpSevketResponse respone) throws IOException respone.setContentType(“text/html;charset=gb2312”);PrintWriter out=respone.getWriter();out.println(“”);out.println(“”);out.println(“Hello Servlet”);out.println(“”);out.println(“”);o
124、ut.println(“Hello.World!”);out.println(“”);out.println(“”);out.close(); 情境资讯情境资讯-创建第一个创建第一个servletservlet程序程序 Servlet api Servlet api函数是一组函数是一组javajava类与接口类与接口, ,它定义了在它定义了在webweb客户端和客户端和web servletweb servlet之间的标准接口之间的标准接口. .客户的请求发给客户的请求发给webweb应用服务器应用服务器,web,web应用服务器通过这组应用服务器通过这组apiapi接口调用接口调用servl
125、etservlet为这个请求服务为这个请求服务. .1.servletRequest 1.servletRequest 接口接口2 2、sesrvletResponesesrvletRespone接口接口3.ServletContext3.ServletContext接口接口4.RequestDispatcher4.RequestDispatcher接口接口情境资讯情境资讯-servletapi函数函数http:/1.图书分类管理用例图图书分类管理用例图 根据上面的分析得出图书分类管理的功能包括:添加图书分类和删除图书分类。图书分类管理用例如图所示。http:/情境资讯情境资讯-图书管理模块简
126、介图书管理模块简介 2.图书分类管理顺序图图书分类管理顺序图 管理员在管理图书分类时,可以查管理员在管理图书分类时,可以查询图书分类信息,然后将新图添询图书分类信息,然后将新图添加遭某一分类。还可以修改图书加遭某一分类。还可以修改图书分类信息,或删除图书分类信息。分类信息,或删除图书分类信息。图书类别管理顺序图如图所示。图书类别管理顺序图如图所示。v图书管理用例图v根据图书基本信息管理分析得出图书管理主要包括添加图书、修改图书、删除图书、图书查询功能,图书管理用例图如图所示。情境资讯情境资讯-图书管理模块简介图书管理模块简介v图书管理顺序图v 管理员可以对表中图书进行查询操作,然后可以添加新的
127、图书到数据表,或修改图书的信息及删除图书信息,图书管理顺序如图所示。情境资讯情境资讯-图书管理模块简介图书管理模块简介http:/情境资讯情境资讯-数据表设计数据表设计 图书分类表:Category列名数据类型长度说明IdInt6分类Id,主键CategoryName Varchar20图书分类名称ParenIDInt50父类IDLayerInt6层次BzVarchar200备注图书信息表:Book列名数据类型长度说明IdInt6图书ID,主键IsbnVarchar30图书编号bookNameVarchar50图书名catelogNameVarchar50图书目录 情境资讯情境资讯-MVCMV
128、C模式概述模式概述 MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层模型层、视图层、控制层。 视图视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。 模型模型(Model):就是业务流程/状态的处理以及业务规则的制定。 控制控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。情境资讯情境资讯-MVCMVC模式概述模式概述 1、视图视图是模型的表示,它
129、提供用户交互界面。使用多个包含单显示页面的用户部件,复杂的Web页面可以展示来自多个数据源的内容,并且网页人员,美工能独自参与这些Web页面的开发和维护。 2、控制器为了能够控制和协调每个用户跨越多个请求的处理,控制机制应该以集中的方式进行管理。因此,为了达到集中管理的目的引入了控制器。应用程序的控制器集中从客户端接收请求(典型情况下是一个运行浏览器的用户),决定执行什么商业逻辑功能,然后将产生下一步用户界面的责任委派给一个适当的视图组件。MVC模式的实模式的实现现情境资讯情境资讯-MVCMVC模式概述模式概述 3 、模型MVC系统中的模型从概念上可以分为两类系统的内部状态和改变系统状态的动作
130、。模型是你所有的商业逻辑代码片段所在。本文为模型提供了业务实体对象和业务处理对象:所有的业务处理对象都是从ProcessBase类派生的子类。业务处理对象封装了具体的处理逻辑,调用业务逻辑模型,并且把响应提交到合适的视图组件以产生响应。业务实体对象可以通过定义属性描述客户端表单数据。所有业务实体对象都EntityBase派生子类对象,业务处理对象可以直接对它进行读写,而不再需要和request、response对象进行数据交互。通过业务实体对象实现了对视图和模型之间交互的支持。实现时把做什么(业务处理)和如何做(业务实体)分离。这样可以实现业务逻辑的重用。由于各个应用的具体业务是不同的,这里不
131、再列举其具体代码实例。MVC模式的实模式的实现现第一部分第一部分 案例模仿项目案例模仿项目网上书店网上书店-学习情境学习情境6 6 顾客留言顾客留言 学习任务学习任务1:JSP中使用中使用Servlet 学习任务学习任务6.1 JSP6.1 JSP中使用中使用ServletServlet【任务计划】Servlet是运行在Web服务器或应用服务器上的Java程序,是JavaWeb应用程序的核心组件之一,是JavaEE的重要组成部分,是在Web上创建动态内容的有效而强大的解决方案之一。与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Ser
132、vlet的Java虚拟机。Servlet以线程的方式运行,具有Java语言的特性。本任务主要完成在JSP中如何使用Servlet的简单介绍。学学习习任任务务6.1 JSP6.1 JSP中使用中使用ServletServlet【任务实施】1、Servlet API(应用程序编程接口):Servlet API是原sun公司定义的一套专门用于开发Servlet程序的Java类和接口。Web容器和Servlet程序之间通过ServletAPI进行通信。Servlet API类和接口的框图如下: 任任务实务实施施-Servlet-Servlet的部署的部署(1)、在tomcat安装目录中的webapps
133、目录中新建/hello/WEB-INF/classes路径,在WEB-INF目录中编写web.xml如下:helloHelloServlethello/hello任任务实务实施施-Servlet-Servlet的部署的部署(2)、编写Servlet源程序,保存名为HelloServlet.java:importjava.io.*;importjavax.servlet.*;importjavax.servlet.http.*;publicclassHelloServletextendsHttpServletprotectedvoiddoGet(HttpServletRequestreq,Htt
134、pServletResponseresp)throwsServletException,IOException/doGet方法处理get方式的请求。resp.setContentType(text/html);/设置响应的content类型。PrintWriterout=resp.getWriter();/getWriter()返回一个打印字符输出流,调用此方法需先调用上一句的方法out.println();/换行打印out.println(helloworld);out.println();out.println(helloworld!);out.println(Thisis+this.ge
135、tClass()+,usinggetmethod);/getClass()获取当前对象运行时类out.println();out.println();out.flush();/刷新缓冲区,将缓冲区中数据写入输出流out.close();/关闭输出流任任务实务实施施-Servlet-Servlet的部署的部署(3)在classpath环境变量中添加servlet-api.jar包,该包在Tomcat安装目录中的lib目录中。如:D:apache-tomcat-6.0.32libservlet-api.jar(4)编译以上Servlet源程序,将生成的class文件放在/hello/WEB-INF
136、/classes/目录下,启动Tomcat,在浏览器中输入http:/localhost:8080/hello/hello访问该servlet。任任务实务实施施-Servlet-Servlet的的生命周期生命周期内存中只有一个servlet实例,即:它默认采用的是单实例多线程的方式来处理请求。Servlet遵循的生命周期, Servlet的生命周期包含了下面4个阶段:(1)加载和实例化(2)初始化(3)请求处理(4)服务终止任任务实务实施施-获获取取ServletServlet的初始化参数的初始化参数每个Servlet都有一个与之相关联的由容器创建的ServletConfig对象。Servle
137、tConfig提供了如下方法来获得初始化参数名或值:getInitParameter(String name);/返回由name指定的参数名的参数值。getInitParameterNames();/以枚举(Enumeration)方式返回Servlet初始化参数的名称,若没有参数,则返回一个空枚举。hellohello book think in java则在Servlet源程序中加入ServletConfig sc=this.getServletConfig();String book=sc.getInitParameter(book);获取book的参数的值think in java。任
138、任务实务实施施-ServletContext-ServletContext接口接口 在Servlet编程中,容器创建了应用程序上下文对象(ServletContext),该对象用于描述Servlet运行环境的信息,可以让Servlet访问到web应用程序的本地输入流、将资源的虚拟路径转换成物理路径、记录日志、绑定一个对象在整个web应用程序作用域范围中共享。javax.servlet.ServletContext接口中的方法:方法方法描述描述getMajorVersion()返回容器支持的servlet API的主要版本getResourceAsStream()返回资源对象的输入流getAtt
139、ribute()获得绑定在容器中的对象setAttribute()通过名字把一个对象绑定在容器中getInitParameter()获得容器的初始化参数getRealPath()返回虚拟路径的物理路径Log()把信息写入到servlet日志文件中任任务实务实施施-servlet-servlet设设置置HTTPHTTP响响应应 Servlet设置HTTP响应,通常是使用该servlet的doGet(HttpServletRequest request, HttpServletResponse response)或doPost(HttpServletRequest request, HttpSer
140、vletResponse response)等方法的参数response(类型为HttpServletResponse),HttpServletResponse接口常用的方法如下:(当请求方式是get时,调用的是doGet方法;当请求方式是post时,调用的是doPost方法)(1)、设置响应码:setStatus(int sc);/设置响应码sendError(int sc,String message);/设置响应码以及一个错误信息(2)、设置响应头(响应头由键值对组成):containsHeader(String name);/返回响应头中是否设置了键名为name的键值对。(3)、设置请
141、求重定向:sendRedirect(String url);/ 设置重定向url,该方法将生成一个302响应码,同时在Location头(响应头中的键名为Location的键值对)中指定新文档的URL地址。任任务实务实施施-servlet-servlet设设置置HTTPHTTP请请求求 Servlet设置HTTP请求,通常是使用该servlet的doGet(HttpServletRequest request, HttpServletResponse response)或doPost(HttpServletRequest request, HttpServletResponse respons
142、e)等方法的参数request(类型为HttpServletRequest),HttpServletRequest接口常用的方法如下:(当请求方式是get时,调用的是doGet方法;当请求方式是post时,调用的是doPost方法) (1)、获取HTTP请求行的信息(2)、获取HTTP请求头的信息(3)、获取表单中的数据(4)、请求转发任任务实务实施施-GET-GET和和POSTPOST请请求方式求方式 在地址栏输入超链接、点击超链接和标签中设置method属性值为get,都会以get方式请求,若设method属性值为post,则会以post方式请求,默认为get。两种方式的比较如下:特征特征
143、GETGET方法方法POSTPOST方法方法提交数据类型文本文本、二进制流提交数据长度不超过255字节没有限制提交数据可见性 作为URL地址的一部分显示在浏览器地址栏作为请求的消息体,不可见提交数据缓存缓存在URL历史状态中不会被浏览器缓存学习任务学习任务6.1 JSP6.1 JSP中使用中使用ServletServlet【任务评价】分类管理设计了图书分类的添加、图书分类的修改、图书分类的删除以及图书分类的列表显示。图书分类管理控制层采用了Servlet作为控制,提高了程序的灵活性,增强了程序的可读性。第一部分第一部分 案例模仿项目案例模仿项目网上书店网上书店-学习情境学习情境6 6 顾客留言
144、顾客留言 学习任务学习任务2:应用应用Servlet访问访问数据库数据库学习任务学习任务6.2 6.2 应用应用ServletServlet访问数据库访问数据库【任务计划】 本任务通过Servlet访问数据库,实现留言的功能学学习习任任务务6.2 6.2 应应用用ServletServlet访问访问数据数据库库【任务实施】设 计 一 个 web应 用 , 有 两 个 JSP页 面 choiceDatabase.jsp和showrecord.jsp、 一 个 javabean和 一 个 servlet。 用 户 在 jsp页 面choiceDatabase.jsp选择一个数据库中的表,提交给se
145、rvlet,该servlet负责分页读取表中的记录,并把读取的记录存放到javabean中,然后请求JSP页面showrecord.jsp显示Javabean中的数据。showrecord.jsp页面提供了“上一页”和“下一页”提交按钮,用户在该页面可以继续请求控制器servlet,以便读取上一页或下一页。学学习习任任务务6.2 6.2 应应用用ServletServlet访问访问数据数据库库【任务实施】Web应用使用了CachedRowSetImpl对象,将数据库查询结果保存到CachedRowSetImpl对象中后,就可以关闭和数据库的连接。用户需要为Web.xml文件添加如下子标记:da
146、tabasesun.yourservlet.HandleDatabasedatabase/helpReadRecord学学习习任任务务6.2 6.2 应应用用ServletServlet访问访问数据数据库库【任务评价】 JSP开发离不开JDBC数据库,几乎所有的JSP项目都要使用数据库,所以掌握JDBC数据库编程技术非常重要,本项目的目标是掌握JSP中使用数据库的方法,对于网上书店的图书数据,也需要写入数据库。本项目就将对数据库访问进行说明,并完成网上书店数据管理的相关任务。第一部分第一部分 案例模仿项目案例模仿项目网上书店网上书店-学习情境学习情境6 6 顾客留言顾客留言 学习任务学习任务3
147、:留言板的需求分析留言板的需求分析及系统设计及系统设计学习任务学习任务6.3留言板的需求分析及系统设计留言板的需求分析及系统设计【任务计划】 留言板在网络上的使用率是很高的,论坛、博客等都有留言板。本任务就来介绍使用mvc开发模式实现留言板。在实现留言板的时候也使用到了前面所学习的内容,如用户的注册、登录等。网站的访问者可以通过留言板与管理员进行交流。【任务实施】 一、需求分析留言板用于在Internet/Intranet中,为访问者提供一个信息发布/信息交流的场所,应该具备以下的基本功能:用户注册功能匿名留言功能留言列表功能及搜索功能注册用户留言集留言管理功能系统设置功能学学习习任任务务6.
148、3 6.3 留言板的需求分析及系留言板的需求分析及系统设计统设计【任务实施】 二、系统设计在进行程序开发之前,我们设计的本模块中的主要流程如图所示:留言系统中可以进行用户注册,用户填入姓名、登录名、登录密码、性别、qq号码、E-mail及主页地址等内容后可以进行注册,注册用户登录后,每次留言时只须输入留言内容,其所有发言记录都保留在其留言集中。学学习习任任务务6.3 6.3 留言板的需求分析及系留言板的需求分析及系统设计统设计【任务实施】留言模块中的核心流程图如图所示,用户访问到留言系统以后,首先进入的是浏览留言的界面,在这个界面用户将可以以分页的形式查看所有留言,用户也可以进行搜索,针对性地
149、查看一些留言。学学习习任任务务6.3 6.3 留言板的需求分析及系留言板的需求分析及系统设计统设计【任务实施】三、数据库设计用户注册表和用户登录表在前面已设计,可直接使用主题表需要包含内容:主题的编号,发表主题的用户名,主题标题,主题内容,发表时间回复留言表包含内容:回复留言的编号,回复主题的编号,回复的标题,回复的内容,回复的时间学学习习任任务务6.3 6.3 留言板的需求分析及系留言板的需求分析及系统设计统设计学学习习任任务务6.3 6.3 留言板的需求分析及系留言板的需求分析及系统设计统设计【任务评价】 留言板在网络上的使用率是很高的,论坛、博客等都有留言板。本任务就来介绍使用mvc开发
150、模式实现留言板。在实现留言板的时候也使用到了前面所学习的内容,如用户的注册、登录等。网站的访问者可以通过留言板与管理员进行交流。第一部分第一部分 案例模仿项目案例模仿项目网上书店网上书店-学习情境学习情境6 6 顾客留言顾客留言 学习任务学习任务4:应用应用Servlet实现实现用户留言板的制作用户留言板的制作学习任务学习任务6.46.4应用应用ServletServlet实现用户留言板的制作实现用户留言板的制作【任务计划】 演示网上书店顾客留言功能,同时演示其他电子商务网站的留言功能,通过一个例子的讲解,让学生掌握mvc开发留言板的步骤,使其独立完成网上书店中的留言功能 【任务实施】 1、主
151、页设计 2、留言列表设计 3、浏览、回复以及跟贴页面设计 4、回复留言页面设计 5、添加留言页面设计学学习习任任务务6.46.4应应用用ServletServlet实现实现用用户户留言板的制作留言板的制作【任务评价】 本任务主要完成顾客留言模块,完善顾客留言模块,是为了更好的实现网上书店的售后服务及业务拓展需求。学学习习任任务务6.46.4应应用用ServletServlet实现实现用用户户留言板的制作留言板的制作【学习目标】通过对本学习情境的学习和实训,使学生掌握 Servlet 的编写和设置,以及在 JSP 页面中使用 Servlet 对象,理解并使用 MVC模式开发JSP网站。 培养使用
152、JSP+Javabean+Servlet 开发动态网站的能力。【任务计划】1.要求能对某班级的成绩进行封存和解封操作。 2.能对解封后的成绩进行修改。设计并实现页面 classlession_operation.jsp 完成成绩的封存和 解封功能,此功能只有教务管理人员才能使用。 3.该页面分为三个部分,是三个 HTML 表格,最上面的表格用 于输入查询要作封存操作的班级和课程的查询条件,中间的 表格显示根据上面表格输入的条件查询出的数据,显示输入 时做了分页处理,并在每个记录 后带有两个超链接, “封存” 超链接用于作封存处理, “解封”超链接用于作解封处理。 4. 设计并实现core_cl
153、ose_sava.jsp页面,在“学生成绩封存” 功能界面中单击 “ 封存 ” 超链接 , 将跳转到 core_close_save.jsp页面,以作封存操作。 5.设计并实现core_open_save.jsp页面,在“学生成绩封存” 功能界面中单击 “ 解封 ” 超链接 , 将跳转到 core_open_save.jsp页面,以作解封操作。 6.解封后可以通过录入界面修改学生的成绩信息。同步拓展同步拓展- 成成绩绩修改修改第一部分第一部分 案例模仿项目案例模仿项目网上书店网上书店学习情境学习情境7网上书店测试与发布网上书店测试与发布【学习目标】【学习目标】 为了保证软件产品的质量,在软件开
154、发过程中必须进行必要的测试。一般从需求分析开始就有测试伴随。测试可以分为很多种,根据不同的标准有不同的分类方法,在此以单元测试和系统测试为例,通过设计测试用例,使用测试工具,来掌握软件测试的方法和过程。整个项目开发完成需要进行部署和安装,运用Netbeans开发工具可以很方便地发布部署项目。1知识目标(1)了解软件测试基本概念(2)掌握软件测试基本方法2技能目标(1)熟练使用JUnit工具对“用户管理”模块代码进行单元测试。(2)能以“用户管理”子系统为例,进行系统测试,设计测试用例,编写测试报告。(3)熟练掌握系统部署和发布。【情境资讯情境资讯】一、软件测试概述一、软件测试概述1软件测试的目
155、的软件测试就是为了发现程序中的错误而分析或执行程序的过程,根据软件开发各阶段的文档说明和程序代码而精心设计出一些测试用例,并利用测试用例来运行程序,找出其中的错误。2软件测试的定义1983年,IEEE(国际电子电气工程师协会)提出的软件工程标准术语中给软件测试下的定义是:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。【情境资讯情境资讯】3软件测试的常用术语 (1)测试 测试是一种活动,在该活动中一个系统或组成部分在特定条件下被运行,结果被观察或记录,并对该系统或组成部分的某些方面进行评估。虽然测试有两个显著的目标,找出故障
156、或演示软件执行正确。 (2)测试用例 测试用例是为特定的目的而开发的一组测试输入、执行条和预期结果。 (3)测试步骤 测试步骤详细说明了如何设置、执行和评估特定的测试用例。【情境资讯情境资讯】4软件测试涉及的关键问题 (1)谁来执行测试 一个软件产品的开发通常涉及开发者和测试者两种角色。开发者通过开发而形成产品,例如分析、设计、编码、调试或者文档编制等。测试者则通过测试来检测产品中是否存在缺陷,包括根据特定的目的设计测试用例、构造测试、执行测试以及评估测试结果等。一般的做法是:开发机构负责他们自己代码的单元测试,而系统测试则由一些独立的测试人员或专门的测试机构进行。 (2)测试什么 在程序中的
157、故障,并不一定是编码所引起的。很可能是详细设计、概要设计阶段,甚至是需求分析阶段的问题引起的。即使针对源程序进行测试,所发现故障的根源也可能在开发前期的各个阶段。解决问题、排除故障也必须追溯到前期的工作。【情境资讯情境资讯】(3)什么时候测试测试开始得时间越早,测试执行得越频繁,所带来的整个软件开发成本的下降就会越多。(4)怎样进行测试软件“规范”说明了软件本身应该达到的目标,程序“实现”则是一种对应各种输入如何产生输出结果的算法。简言之,规范说明一个软件要做什么,而程序实现则规定了软件应该怎样做。对软件进行测试就是根据软件的功能规范说明和程序实现,利用后续各章介绍的各种测试方法,生成有效的测
158、试用例,对软件进行测试。【情境资讯情境资讯】(5)测试停止的标准是什么实用的停止测试标准应该基于以下几个因素:成功地采用了具体的测试用例设计方法。每一类覆盖的覆盖率。故障检测率(即每一单元测试时间内检测出的故障数)低于指定的限度。基于故障检测数量的标准必须注明故障的严重性程度。检测出故障的具体数量(估计存在故障总量的比率)或消耗的具体时间等。【情境资讯情境资讯】二、软件测试的分类二、软件测试的分类对于软测试,可以从以下几种不同角度来进行分类。从测试的过程和层次来说,分为单元测试、集成测试、系统测试和验收测试。从测试的特性来说,分为功能测试、性能测试、适用性测试、兼容性测试、可靠性测试、安全性测
159、试等。从测试方法来说,可以分为白盒测试、黑盒测试、灰盒测试等。【情境资讯情境资讯】三、测试方法三、测试方法1按测试方式分类1)黑盒测试黑盒测试又称功能测试或基于规格说明的测试。黑盒测试的基本观点是:任何程序都可以看做是从输入定义域映射到输出值域的函数,这种观点将被测程序看做一个打不开的黑盒,黑盒的内容(实现)是完全不知道的,只知道软件要做什么。因无法看到盒子中的内容,所以不知道软件是如何运作的,为什么会这样。【情境资讯情境资讯】2)白盒测试白盒测试(结构测试)是根据被测程序的内部结构设计测试用例的一类测试,具有很强的理论基础。结构测试要求对被测程序的结构特性做到一定程度的覆盖,或说是“ 基于覆
160、盖的测试”。测试人员可以严格定义要测试的确切内容,明确提出要达到的测试覆盖率,以减少测试的盲目性,引导测试人员朝着提高测试覆盖率的方向努力,从而找出那些被忽视的程序故障。【情境资讯情境资讯】3)黑盒测试和白盒测试的比较黑盒测试和白盒测试是两种完全不同的测试方法,可以说,它们的出发点不同,并且是两个完全对立的出发点,反映了事物的两个极端。事实上,黑盒测试和白盒测试在测试实践中都非常有效而且都很实用,不能指望其中的一个能够完全代替另一个。一般而言,在单元测试时大都采用白盒测试,而在确认测试或系统测试中大都采用黑盒测试。2按测试功能分1)单元测试单元测试的目的是要检测程序模块中有无故障存在,也就是说
161、,一开始并不是把程序作为一个整体来测试,而是首先集中注意力来测试程序中较小的结构块,以便发现并纠正模块内部的故障。【情境资讯情境资讯】2)集成测试集成测试是按设计要求把通过单元测试的各个模块组装在一起,检测与接口有关的各种故障。3)系统测试系统测试最好由独立的测试机构完成。4)验收测试制定验收测试计划是做好验收测试的关键一步。验收测试计划应为验收测试的设计、执行、监督、检查和分析提供全面而充分的说明,规定验收测试的责任者、管理方式、评审机构以及所用资源、进度安排、对测试数据的要求、所需的软件工具、人员培训以及其他的特殊要求等。总之,在进行验收测试时,应尽可能去掉一些人为的模拟条件,去掉一些开发
162、者的主观因素,使得验收测试能够得出真实、客观的结论。【情境资讯情境资讯】四、测试步骤四、测试步骤软件测试工作是项目开发过程中一个重要的组成部分。同其他工程活动一样,也需要一个清晰地流程,一般测试工作要经过三个基本步骤:测试计划、测试设计与开发、测试执行。 测试计划。项目经理会在项目计划时就安排好测试人员及总体的测试计划,测试人员根据需求分析规格说明书进行分析,定义一个测试方案,提出一个“测试计划”。 测试设计与开发。测试人员根据需求分析、软件设计文档,完成测试用例设计并编写必要的测试驱动程序。 测试执行。在执行过程中,测试人员需要建立测试环境,根据测试计划和测试用例进行测试,记录测试结果,编写
163、测试报告,跟踪软件缺陷,直到被处理为止。由开发人员解决后还需重新测试。本情境主要任务学习任务1:单元测试1学习任务2:系统测试系统测试2学习任务1:系统部署发布3学习任务学习任务7.1 7.1 单元测试单元测试【任务计划】 本任务主要完成单元测试工作,在进行单元测试前,先介绍一下JUnit的使用方法,然后选取一个模块进行测试。学习任务学习任务7.1 7.1 单元测试单元测试【任务实施】第一步:在NetBeans中建立一个Java项目,名称为“HelloWorld”,然后在其中加入一个类,包名为“my.book”,类名为“HelloWorld” ,如图 7-1所示。图7-1 建立测试项目图学习任
164、务学习任务7.1 7.1 单元测试单元测试【任务实施】 完成后加入自定义方法showHello和isSubString,代码如下: package my.book; public class HelloWorld public String showHello(String words) return Hello + words; public boolean isSubString(String allstr,String substr) return allstr.indexOf(substr)=0?true:false; 学习任务学习任务7.1 7.1 单元测试单元测试【任务实施】第二步
165、,我们来测试HelloWorld类的两个方法,在项目HelloWorld中右击Helloworld.java,选择“工具”-“创建JUnit测试”命令,弹出创建测试窗体,单击确定按钮 ,如图7-2和图7-3所示。 图7-3 创建测试项目(2)图7-2 创建测试项目(1)学习任务学习任务7.1 7.1 单元测试单元测试【任务实施】第三步,得到的测试类名为HelloworldTest,在测试包中产生文件 “HelloworlTest.java” 。在其中输入测试相关代码如下:package my.book;import org.junit.After;import org.junit.AfterC
166、lass;import org.junit.Before;import org.junit.BeforeClass;import org.junit.Test;import static org.junit.Assert.*;public class HelloWorldTest public HelloWorldTest() 学习任务学习任务7.1 7.1 单元测试单元测试【任务实施】public void setUp() public void tearDown() public void testShowHello() System.out.println(showHello); Str
167、ing words = world; HelloWorld instance = new HelloWorld(); String result = instance.showHello(words); assertEquals(result, Hello world); assertEquals(result, Helloworld);/故意输入错的结果 / TODO review the generated test code and remove the default call to fail. /fail(The test case is a prototype.);学习任务学习任务
168、7.1 7.1 单元测试单元测试【任务实施】public void testIsSubString() System.out.println(isSubString); String allstr = world; String substr = or; HelloWorld instance = new HelloWorld(); boolean result = instance.isSubString(allstr, substr); assertEquals(result, true); assertEquals(result, false);/故意输入错的结果 / TODO revi
169、ew the generated test code and remove the default call to fail. /fail(The test case is a prototype.);第四步,运行测试代码,点击“运行”菜单下的“测试项目”命令,得到的测试结果 。学习任务学习任务7.1 7.1 单元测试单元测试【任务评价】 本任务主要从JUnit工具的使用掌握程度以及单元测试结果进行评价。学习任务7.2 系统测试【任务计划】 对应系统测试来说,本项目主要是实现功能测试,即根据需求规格说明书的要求,测试系统各个功能是否能正确实现,测试计划见表7-1.这里选取用例“用户管理”的子用
170、例“用户登录”为例,设计登录测试用例,测试其功能是否达到要求。学习任务学习任务7.2 7.2 系统测试系统测试【任务实施】 表7-1 测试计划测试用例名测试程序名文件路径或包名预订工作期/日说明A)用户登录userLogin.jsp,userLoginControl.jspWebroot/user1/4参见表9-2B)用户注册userRegister.html,userRegisterControl.jspWebroot/user1/4略C)管理员查询用户Admin.html,displayAllUser.jspWebroot/admin1/4略D)管理员删除用户displayAllUser.
171、jsp,userControl.jspWebroot/admin1/4略学习任务学习任务7.2 7.2 系统测试系统测试【任务实施】 在需求文档中,要求用户在登录页面中输入正确的用户名和密码,显示登录成功,否则提示出错信息,测试用例见表7-2表7-3 测试用例用例名用户管理程序版本V1.0编制人*功能模块名用户登录编制时间2011.6.28配置条件无功能特性用户身份验证测试数据根据用户名和密码,数据库表userinfo中的一条记录用户名为zhangsan,密码为123456测试目的验证合法用户和密码,允许登录,否则提示出错信息备注测试日期2011.6.28测试人员*操作步骤操作描述数据期望结果
172、实际结果测试结论1什么都不输入,直接单击“登录”按钮用户名和密码都为空提示必须输入用户名和密码弹出警告“你还没有输入用户名呢”达到期望结果,测试正确2仅输入用户名,不输入密码,单击“登录”按钮用户名=zhangsan,密码为空提示必须输入密码弹出警告“你还没有输入密码呢”达到期望结果,测试正确3仅输入密码,不输入用户名,单击“登录”按钮用户名为空,密码为123456提示必须输入用户名弹出警告“你还没有输入用户名呢”达到期望结果,测试正确4输入数据表中对应的用户名和密码,单击“登录”按钮用户名=zhangsan,密码=123456登录成功,进入管理页面显示“欢迎进入用户管理主页面”达到期望结果,
173、测试正确5输入数据表中对应的用户名,不匹配的密码,单击“登录”按钮用户名=zhangsan,密码=654321登录失败,显示相关信息,返回登录页面显示“用户不存在”,返回达到期望结果,测试正确学习任务学习任务7.2 7.2 系统测试系统测试【任务评价】 本任务主要从学生对系统功能测试结果进行评价。学习任务7.3 系统部署发布【任务计划】 本任务利用NetBeans开发工具,直接进行Web应用系统的发布。【任务实施】 在项目打开的情况下,单击“运行”菜单下的“清理并生成主项目”命令,则项目所有文件会打包成一个.war文件,放置在以项目名为目录名的目录下,以后要发布到其他Web Server,则只需要复制一个.war文件即可。学习任务7.3 系统部署发布学习任务7.3 系统部署发布【任务评价】 本任务主要从系统部署及系统发布情况进行评价。课外拓展练习项目整合项目整合【学习目标】通过对本学习情境的学习和实训,使学生掌握Web目录的设计能力和测试能力,以及网站发布的方法和网站的维护。【任务计划】1能对学生成绩管理系统所有文件进行整合,分别放置在相应 的文件夹中,完成学生成绩管理系统的文件目录结构。 2能完成学生成绩管理系统的网站测试。 3能独立完成学生成绩管理系统的网站发布。 4能独立完成网站内容的更新及维护。