Web程序设计复习资料第1章JSP概述JSP(JavaServerPage)由SunMicrosystems公司倡导、许多公司参与建立的一种动态网络技术标准。由Java语言作为脚本语言。为整个服务器端Java单元提供了一个接口服务于HTTP应用程序。Java语言最大的特点是与运行平台无关;面向对象、高安全性和健壮性、分布式、多线程Web简介:Web定义了Web客户端和Web服务端如何通信HTTP简介:HyperTextTransferProtocol,超文本传输协议。用于传输超文本标记语言(HyperTextMarkupLanguageHTML)编写的网页文件。具有支持B/S结构,简单快速,灵活,无连接,无状态的特点。B/S结构:(Browser/Server)B/S结构是三层体系结构,B/S结构要求客户端只需要安装一个浏览器(Browser),客户端通过浏览器将请求发送给Web服务器,Web服务器负责与后端数据库服务器进行数据通信。C/S结构:C/S是Client/Server的缩写,C/S结构是二层结构平台模式。C/S结构要求客户端要安装指定的软件,客户端负责执行前端的数据处理,服务端进行后端的服务处理。目前大多数的网络游戏都是采用C/S结构。C/S结构如图所示。B/S结构与C/S结构比较比较项B/SC/S服务器负荷量大小维护费用小大升级方便性容易困难选择性多少安全性高低JSP、ASP、PHP等语言都是基于B/S结构开发系统软件的技术。B/S为主流网站的构成网站结构一般分为3层:用户界面交互层、应用程序层、数据库层用户界面交互层通常采用JSP或者HTML来创建界面,利用JavaScript和CSS来丰富界面效果。应用程序层主要使用Java语言来处理各种不同的业务需求,在数据库层可以通过一些存储过程来处理数据的存储和检索。Servlet和JSP技术Servlet和JSP技术都是属于Web层的技术。这两项技术都可以解决动态网页的生成问题,但最好的方式是取两项技术各自的长处:JSP负责网页表现设计,Servlet负责跳转控制。HTMLHTTP浏览器Web服务器数据库每一个JSP文件在执行之前都会被转化成Servlet文件。Servlet简介Servlet是用Java编写的服务端程序,它与协议和平台无关。Servlet运行在JavaWebServer上,并采用了请求-响应的模式提供服务。Servlet的生命周期:Servlet的生命周期可以分为4个阶段:载入、初始化init()、执行service()--doGet()或doPost()、删除destory();JSP简介在传统的网页文件HTML中加入Java程序片段和JSP标记,就构成了JSP网页。第一个Servletsuper.init()//初始化方法;super.destory()//销毁时调用的方法;doGet和doPost是常用的处理请求方式:比较如下:doGetdoPost请求提交方式通过URL地址提交通过表单提交提交长度受限制不受安全性低相对doGet安全性稍好些第一个JSP程序JSP页面主要由HTML和Java代码构成。Java代码是通过%和%符号加入到HTML代码中间的。%@pagelangauge=javacontentType=text/html;charset=gb2312pageEncoding=gb2312%%@pageimport=java.util.*“%...HTMLBODY其他HTML语言%符合JAVA语法的JAVA语句%其他HTML语言/BODY/HTMLJSP指令,描述页面基本信息。由“%@”开始,“%”结束。JSP声明,相当于Java类中的变量声明。由“%!”开始,“%”结束。JSP表达式,用于将jsp生成的数值嵌入HTML中。“%=%”。位于“%”和“%”之间的代码块是描述JSP页面逻辑处理的Java代码。习题1-8:简述JSP技术和Servlet技术的区别和联系JSP第一次运行的时候会编译成servlet。jsp是web开发技术,servelt是服务器端运用的小程序,我们访问一个jsp页面时,服务器会将这个jsp页面转变成servelt小程序运行得到结果后,反馈给用户端的浏览器。servlet相当于一个控制层再去调用相应的javabean处理数据,最后把结果返回给jsp。servlet主要用于转向,将请求转向到相应的jsp页面。Jsp更多的是进行页面显示,Servlet更多的是处理业务,即jsp是页面,servlet是实现jsp的方法。实验三、1+1=%=1+1%第2章JSP实现网站计数器JSP中读取文本文件内容JSP中读取文本文件内容主要是通过Java的读取文件类,由JSP通过浏览器显示结果。这样的文本读取需要使用JDK中的BufferedReader类和FileReader类。BufferedReader类用来从字符输入流中读取文本并将字符存入缓冲区以便能提供字符、数组的高效读取。常用方法如下:方法名说明Intread(charcbuf[])读字符放入数组中,返回所读的字符Intread(charcbuf[],intoffset,intlegnth)读字符放入数组中的指定位置,返回所读的字符数StringreadLine()读取一文本行Voidclose()关闭流FileReader类用来读取字符文件,常用方法如下:方法名说明Intread()读一个字符作为方法的返回值。如果返回值-1,表示文件结束Intread(charcbuf[],intoffset,intlength)读字符放入数组中的指定位置,返回所读的字符数Voidclose()关闭流JSP向文本文件中写入内容JSP向文本文件中写入内容主要是通过Java写入文件类。这样的文本写入需要使用JDK中的FileOutputStream类和PrintWriter类。FileOutputStream类是用来向File或FileDescriptor输出数据的一个输出流。完整网站计数器的实现%@pagelanguage=javacontentType=text/html;charset=gb2312import=java.lang.*,java.io.*pageEncoding=gb2312%!DOCTYPEhtmlPUBLIC-//W3C//DTDHTML4.01Transitional//EN=Content-Typecontent=text/html;charset=UTF-8title网站计数器/title/headbody%--网站计数器--%%Stringrecord=null;//从文本中读取出来的内容信息BufferedReaderbr=null;//用于读取文本文件中的数据StringFilePath=c:\\count.txt;//文本文件的位置路径。PrintWriterpw=null;//用于将数据写入到文本文件中br=newBufferedReader(newFileReader(FilePath));//利用BufferedReader读取文本文件中的内容record=br.readLine();//读取文本文件中的第一行内容//对读取到的结果进行判断,如果为空则此访问者为第一个访问者if(record==null){record=1;}else{record=(Integer.parseInt(record)+1)+;//如果此访问者不是第一个访问者,则累加计数}%您是第%=record%位访问者。//也可以写成%out.println(record)%%//利用PrintWriter将数据写到文本文件中pw=newPrintWriter(newFileOutputStream(FilePath));//将内容打印到文本上pw.write(record);pw.close();//清除PrintWriter对象%/body/html本章习题2-5:在动态Web项目中创建名为test的jsp文件,在test.jsp中声明变量Stringcontent=你好,小明!,然后在test.jsp中输出content的内容。关键代码:%!Stringcontent=“你好,小明!”%%=content%2-6:利用JSP技术实现在网页中显示当前系统时间。关键代码:%out.println(newjava.util.Date())%或:%Datedate=newDate();Out.println(DateFormat.gettimeInstance().format(date));%本章实验:一、向文本文件中写入“Java你好”Stringrecord=“Java你好”;StringFilePath=“c:\\count.txt”;PrintWriterpw=null;pw=newPrintWriter(newFileOutputStream(FilePath));pw.write(record);pw.close();二、读取文本文件中的内容并在页面中显示Stringrecord=null;StringFilePath=“c:\\count.txt;BufferedReaderbr=null;br=newBufferedReader(newFileReader(FilePath));record=br.readLine();out.println(record);pw.close();三、向已有数据的文本中追加数据(1)从文本文件中读取已存在内容(2)record+=“不错的技术”;//追加方法(3)处理后保存到文本文件参考代码如下:%@pagelanguage=javacontentType=text/html;charset=GB2312import=java.lang.*,java.io.*pageEncoding=GB2312%!DOCTYPEhtmlPUBLIC-//W3C//DTDHTML4.01Transitional//EN=Content-Typecontent=text/html;charset=GB2312title向已有数据的文本追加数据/title/headbody%Stringrecord=null;BufferedReaderbr=null;StringFilePath=D:\\count.txt;PrintWriterpw=null;br=newBufferedReaer(newFileReader(FilePath));record=br.readLine();if(record==null){record=JSP;pw=newPrintWriter(newFileOutputStream(FilePath));pw.write(record);}else{record=record+不错的技术;pw=newPrintWriter(newFileOutputStream(FilePath));pw.write(record);}%显示内容为:%=record%.%pw=newPrintWriter(newFileOutputStream(FilePath));pw.write(record);pw.close();%/body/html第3章JSP实现用户注册HTML表单元素回顾Form表单formaction=数据传送的地方urlmethod=