《网络编程服务器端包含.ppt》由会员分享,可在线阅读,更多相关《网络编程服务器端包含.ppt(18页珍藏版)》请在金锄头文库上搜索。
1、第 9 章服务器端包含服务器端包含本章要点本章要点 服务器端包含的适用范围服务器端包含的适用范围服务器端包含的编写方法服务器端包含的编写方法服务器端包含的参数传递服务器端包含的参数传递服务器端包含的编程实例服务器端包含的编程实例服务器端包含概述服务器端包含概述 服务器端包含服务器端包含(Server-Side Includes,SSI)是)是Web设计中的一种设计中的一种常用技术常用技术。它的它的适用范围适用范围:在一个输出多网页的系统中,经:在一个输出多网页的系统中,经常有一些网页的组成部分会在多个网页中出现,常有一些网页的组成部分会在多个网页中出现,如菜单、页头、页脚等如菜单、页头、页脚等
2、。可重用,易修改。可重用,易修改。SSI体现了软件设计中,体现了软件设计中,“相同代码只出现一次相同代码只出现一次”的的设计思想设计思想。SSI是在是在HTML中中引用引用Servlet标记符标记符,将,将Servlet的输出和的输出和HTML组合,在浏览器中显示。组合,在浏览器中显示。服务器端包含概述服务器端包含概述 对什么时候用对什么时候用SSI,什么时候用某些程序生,什么时候用某些程序生成整个页面的成整个页面的权衡权衡,取决于页面中有多少,取决于页面中有多少内容是内容是静态静态的,有多少内容需要在每次页的,有多少内容需要在每次页面被提供时面被提供时重新计算重新计算。SSI是一种是一种增加
3、小段信息的好方法增加小段信息的好方法,诸如当,诸如当前时间。前时间。 服务器端包含的编写方法服务器端包含的编写方法包含有特殊的包含有特殊的servlet输出和输出和HTML标记的文件标记的文件用扩展名用扩展名.shtml表示。表示。服务器端包含的服务器端包含的语法语法如下:如下:服务器端包含的语法(续)服务器端包含的语法(续)Servlet标记中的各标记中的各属性的意义属性的意义和在和在HTML中中嵌入一个嵌入一个Applet标记中的属性基本相同标记中的属性基本相同。服务器端包含的参数传递服务器端包含的参数传递v Servlet标记的参数标记的参数是通过是通过Servlet标记下的标记下的pa
4、ram标标记传入的,记传入的,Param的属性的属性name是参数名称,是参数名称,value是是参数值,参数值,参数名称可以重名参数名称可以重名。v 在在Java Servlet中中取参数取参数,使用响应对象,使用响应对象HttpServletRequest中的方法:中的方法:getParameterNames( ) -取出参数名称的一个列表;取出参数名称的一个列表;getParameterValue( ) -取出参数名称所对应的所有参数值;取出参数名称所对应的所有参数值;参数传递实例参数传递实例实例由一个实例由一个Servlet和一个以和一个以 .shtml为扩展名的为扩展名的文件组成文件
5、组成。Servlet中中语句如下语句如下: (: (自编自编SSIParamServletSSIParamServlet类类) )Public class SSIParamServlet extends HttpServlet public void service (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException / /指定内容类型,并可显示中文指定内容类型,并可显示中文 res.setContentType(“text/html; charset=gb2312”);
6、/取得要在响应中输出的文本流,即标准的取得要在响应中输出的文本流,即标准的HTML PrintWriter out=res.getWrite();int i; out.println(“参数列表参数列表”);/利用枚举取得参数名称列表利用枚举取得参数名称列表Enumeration params=req.getParameterName();i=0;while(params.hasMoreElements() String paName=(String)params.nextElement();/同一个参数名可能对应多个参数值同一个参数名可能对应多个参数值 String paValues =re
7、q.getParameterValue(paName); i+; /将对应的参数值组合成一个字符串显示将对应的参数值组合成一个字符串显示 String s=“”; for(int j=0; jpaValues.length;j+) s+=paValuesj + “ ”; out.println(“参数参数”+i+”:”+”名称名称-”+paName+” 值值-”+s+”); out.println(“”); out.flush(); out.close(); SSIParam.shtml的源文件如下:注意:注意:.shtml的输出已经是标准的的输出已经是标准的HTML,浏
8、览器中看不到浏览器中看不到标记及其内容。标记及其内容。服务器端包含的实例服务器端包含的实例shtml页面由页面由3个个Servlet标记符组成。标记符组成。执行执行3个个 .java程序,即程序,即PageHerder(页头):显示标题信息;页头):显示标题信息;PageBody:显示数据库中的产品列表;显示数据库中的产品列表;PageFooter(页脚):显示页脚的版权信息。页脚):显示页脚的版权信息。源程序见后:源程序见后:SSIProductPage.shtml的源文件如下:PageHeader.java的源文件如下:的源文件如下:import javax.servlet.*;impor
9、t javax.servlet.http.*;import java.io.*; /输入输入包,定义了输入输入包,定义了printwriter和和IOExceptionimport java.util.*; /工具包,定义了工具包,定义了Vectorpublic class PageHeader extends HttpServlet public void service(HttpServletRequest req,HttpSErvletResponse res)throws ServletException,IOException /指定内容类型,并且可显示中文指定内容类型,并且可显示中
10、文 res.setContentType(text/html;charset=gb2312); PrintWriter out=res.getWriter(); /输出的文本流输出的文本流 /输出页面头部内容输出页面头部内容 out.println(产品信息产品信息); out.println(产品信息产品信息);PageBody.java的源文件如下:的源文件如下:见数据库访问程序:见数据库访问程序: PageBody.javaPageFooter.java的源文件如下:的源文件如下:import javax.servlet.*;import javax.servlet.http.*;imp
11、ort java.io.*; /输入输入包,定义了输入输入包,定义了printwriter和和IOExceptionimport java.util.*; /工具包,定义了工具包,定义了Vectorpublic class PageFooter extends HttpServlet public void service(HttpServletRequest req,HttpSErvletResponse res)throws ServletException,IOException Vector rows;String requestdata=; /此类容纳请求消息中提交的数据此类容纳请求
12、消息中提交的数据/指定内容类型,并且可显示中文指定内容类型,并且可显示中文res.setContentType(text/html;charset=gb2312);/取得要在响应中输出的文本流,即标准的取得要在响应中输出的文本流,即标准的HTMLPrintWriter out = res.getWriter();out.println();out.println(版权所有,东方网讯信息有限公司版权所有,东方网讯信息有限公司);JavaServerPage(JSP) -对Servlet功能的扩充 思想:思想:页面的大部分使用常规页面的大部分使用常规HTML使用特殊的标签标记动态内容使用特殊的标签标记动态内容 本质上是一类技术,都是动态产生网页,只本质上是一类技术,都是动态产生网页,只不过形式上不一样。不过形式上不一样。 在在HTML代码中加入了一些服务器端的代码。代码中加入了一些服务器端的代码。 JSP的代码: Welcome to Our Store Welcom to Our Store Welcome, / 服务器端代码服务器端代码To access your account settings,clickhere. Regular HTML for rest of on-line stores Web page