WEB程序设计之JSP概要.docx
《WEB程序设计之JSP概要.docx》由会员分享,可在线阅读,更多相关《WEB程序设计之JSP概要.docx(46页珍藏版)》请在冰豆网上搜索。
WEB程序设计之JSP概要
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/S
C/S
服务器负荷量
大
小
维护费用
小
大
升级方便性
容易
困难
选择性
多
少
安全性
高
低
JSP、ASP、PHP等语言都是基于B/S结构开发系统软件的技术。
B/S为主流
Ø网站的构成
网站结构一般分为3层:
用户界面交互层、应用程序层、数据库层
用户界面交互层通常采用JSP或者HTML来创建界面,利用JavaScript和CSS来丰富界面效果。
应用程序层主要使用Java语言来处理各种不同的业务需求,在数据库层可以通过一些存储过程来处理数据的存储和检索。
ØServlet和JSP技术
Servlet和JSP技术都是属于Web层的技术。
这两项技术都可以解决动态网页的生成问题,但最好的方式是取两项技术各自的长处:
JSP负责网页表现设计,Servlet负责跳转控制。
每一个JSP文件在执行之前都会被转化成Servlet文件。
ØServlet简介
Servlet是用Java编写的服务端程序,它与协议和平台无关。
Servlet运行在JavaWebServer上,并采用了请求-响应的模式提供服务。
ØServlet的生命周期:
Servlet的生命周期可以分为4个阶段:
载入、初始化init()、执行service()--doGet()或doPost()、删除destory();
ØJSP简介
在传统的网页文件HTML中加入Java程序片段和JSP标记,就构成了JSP网页。
Ø第一个Servlet
super.init()//初始化方法;super.destory()//销毁时调用的方法;
doGet和doPost是常用的处理请求方式:
比较如下:
doGet
doPost
请求提交方式
通过URL地址提交
通过表单提交
提交长度
受限制
不受
安全性
低
相对doGet安全性稍好些
Ø第一个JSP程序
JSP页面主要由HTML和Java代码构成。
Java代码是通过<%和%>符号加入到HTML代码中间的。
<%@pagelangauge="java"contentType="text/html;charset=gb2312"pageEncoding="gb2312"%>
<%@pageimport="java.util.*“%>
...
其他HTML语言
<%
符合JAVA语法的JAVA语句
%>
其他HTML语言
●JSP指令,描述页面基本信息。
由“<%@”开始,“%>”结束。
●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="java"contentType="text/html;charset=gb2312"import="java.lang.*,java.io.*"pageEncoding="gb2312"%>
DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:
//www.w3.org/TR/html4/loose.dtd">
网站计数器<%--网站计数器--%>
<%
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对象
%>
本章习题
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();
2、读取文本文件中的内容并在页面中显示
Stringrecord=null;
StringFilePath=“c:
\\count.txt;
BufferedReaderbr=null;
br=newBufferedReader(newFileReader(FilePath));
record=br.readLine();
out.println(record);
pw.close();
3、向已有数据的文本中追加数据
(1)从文本文件中读取已存在内容
(2)record+=“不错的技术”;//追加方法
(3)处理后保存到文本文件
参考代码如下:
<%@pagelanguage="java"contentType="text/html;charset=GB2312"import="java.lang.*,java.io.*"pageEncoding="GB2312"%>
DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:
//www.w3.org/TR/html4/loose.dtd">