《讲JSP语法》PPT课件.ppt_第1页
《讲JSP语法》PPT课件.ppt_第2页
《讲JSP语法》PPT课件.ppt_第3页
《讲JSP语法》PPT课件.ppt_第4页
《讲JSP语法》PPT课件.ppt_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JSP基础,网站综合开发,主讲 李民,2011.9, 姓名 口令 CGI (Common Gateway Interface)即公共网关接口 ,运行在服务器上,提供同客户端html页面的接口。 CGI程序解释、处理来自表单的输入信息,在服务器上产生相应的处理,将处理结果反馈给浏览器。使网页具有交互功能。 CGI程序可以使用任何一种语言编写,常见的CGI有C、PHP、ASP(.net)和Java。 Java的web应用程序有Applet和 servlet。,知识回顾,本讲内容 servlet与JSP 1、servlet概述 2、JSP基础 JSP标记 变量、方法的声明 JAVA程序片 表达式 注释, 姓名 口令 ,Tijiao.html,package lm; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class accept extends HttpServlet public void init(ServletConfig config) throws ServletException super.init(config); public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException PrintWriter out=response.getWriter(); response.setContentType(“text/html;charset=GB2312“); out.println(“); String username=request.getParameter(“na“); String password=request.getParameter(“pa“); out.print(“name:“+username+“pass:“+password+“); public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException doPost(request,response); ,accept.java, accept lm.accept accept /accept ,web.xml, 姓名是: 密码是: , 姓名: 口令: ,Tijiao.html,accept.asp,JSP是Java Server Pages的缩写,是一种在HTML页面中加入Java语言而生成动态页面的技术。由 Sun公司倡导、许多公司参与,于1999年推出的一种动态网页技术标准。JSP是基于Java Servlet以及整个Java体系的Web开发技术,利用该技术可以建立安全、跨平台的先进动态网站。, 姓名是: 密码是: , 姓名: 口令: ,Tijiao.html,accept.jsp,JSP特点: JSP文件构建在Servlet基础上,文件扩展名是.jsp,文件名字必须符合标识符规定,文件名字区分大小写。页面的大部分使用常规HTML,使用特殊的标签标记()动态内容。 当服务器上的一个JSP页面被第一次请求执行时,服务器上的JSP引擎先将JSP页面文件转译成Java文件,再将该Java文件编译生成字节码文件,然后通过执行字节码文件响应客户的请求,而当这个JSP页面再次被请求执行时,JSP引擎将直接执行这个字节码文件来响应客户。 字节码文件的主要工作: (1)把JSP页面中普通的HTML标记符号(页面的静态部分)交给客户的浏览器负责显示。 (2)执行“”之间的java程序片(JSP页面中的动态部分),并把执行结果交给客户的浏览器显示。,当多个客户请求一个JSP页面时,JSP引擎为每个客户启动一个线程而不是启动一个进程,这些线程由JSP引擎服务器来管理,与传统的CGI为每个客户启动一个进程相比较,效率要高的多。 JSP和Servlet相比 JSP没有增加Servlet的功能。但在JSP中编写静态HTML方便,不必用println语句来输出每一行HTML代码。同时,借助内容和外观的分离,页面制作中不同性质的任务可以方便地分开:比如,由页面设计专家进行HTML设计,同时留出供Servlet程序员插入动态内容的空间。 JSP和JavaScript相比 JavaScript只能处理以客户端环境为基础的动态信息。HTTP状态和表单提交数据对JavaScript来说都是不可用的。另外,由于是在客户端运行,JavaScript不能访问服务器端资源,比如数据库、目录信息等。, 您是第 个访问本站的客户。 ,JSP标记 HTML标记符 变量和方法声明 Java程序片 Java表达式,JSP脚本,JSP脚本是在html页面中嵌入的一段Java代码,语法:,JSP的语法结构 JSP文件包括HTML标记符、 JSP标记、Java程序片()和JSP标签。,1、JSP指令标记。包括page指令标记、include指令标记和Taglib指令标记。,page 指令标记 page 指令用来定义整个JSP页面的一些属性和这些属性的值。为根据该JSP页面生成的servlet能够控制: 导入哪些类(import) 产生哪种MIME类型(contentType) 如何处理多线程(isThreadSafe) 输出缓冲区大小的行为(buffer auotflush) page 指令的格式: ,一、JSP标记。包括指令标记和动作标记。,属性值用单引号或双引号括起来,例如: 一个JSP页面可以使用多个page指令来指定属性及属性值。如: 可以为一个属性指定几个值,值之间用逗号分割。如: 可以写为: page指令的作用对整个页面有效,与其书写的位置无关,但习惯把page指令写在JSP页面的最前面。,language属性 定义JSP页面使用的脚本语言,该属性的值目前只能取“java“。 格式: language属性的默认值是“java”,即如果你在JSP页面中没有使用page指令指定该属性的值的话,那么,JSP页面默认有如下page指令: ,import 属性: 该属性的作用是为JSP页面引入Java核心包中的类,这样就可以在JSP页面的程序片部分、变量及函数声明部分、表达式部分使用包中的类。可以为该属性指定多个值,该属性的值可以是Java某包中的所有类或一个具体的类,例如: JSP页面默认import属性已经有如下的值: “ java.lang.*“、 “javax.servlet.*“、“javax.servlet.jsp.*“、“javax.servlet.http.*“。,contentType 属性: 定义JSP页面响应的MIME类型和JSP页面字符的编码。属性值为“MIME类型”或 “MIME类型;charset=编码”。 格式: contentType 属性的默认值是“text/html ; charset=iso-8859-1”。 MIME(Multipurpose Internet Mail Extentions),多功能Internet邮件扩充服务,用于设定特定扩展名的文件用哪种类型的应用程序打开。 浏览器接收到文件后,进入插件系统进行查找,找出哪种插件可以识别读取接收到的文件。如果浏览器不清楚调用哪种插件系统,可能会告诉用户缺少某插件,,或者直接选择某现有插件来试图读取接收到的文件,后者可能会导致系统的崩溃。传输的信息中缺少MIME标识可能导致的情况很难估计,因为某些计算机系统可能不会出现什么故障,但某些计算机可能就会因此而崩溃。 要想知道浏览器支持哪些MIME类型,点击资源管理器工具文件夹选项文件类型。常见MIME类型:,iso-8859-1是Java网络传输使用的标准字符集,而gb2312是简体中文字符集的中国国家标准(GBK在gb2312基础上增加了繁体字库等)。当用户提交表单信息等需要网络传输的操作时,需要进行iso-8859-1与gb2312字符集之间的转换,否则会出现乱码。,session属性: 用于设置是否需要使用内置的session对象。 session的属性值可以是true或false。 格式 注意 默认为true。 如果网站的流量较大,可以节省服务器端的内存。 要想真正起到作用,所有的相关网页都必须这样做。,buffer属性: 内置输出流对象out负责将服务器的某些信息或运行结果发送到客户端显示,buffer属性用来指定out设置的缓冲区的大小或不使用缓冲区。 格式 目的 指定out变量所使用的缓冲区的大小。 注意 服务器可以使用比请求的大小更大的缓冲区,但不会小于所请求的大小。默认值和系统相关,但至少8kb。例如: ,autoFlush属性: 指定out的缓冲区被填满时,缓冲区是否自动刷新。 格式 目的 设置如果buffer溢出,是否需要强制输出,如果其值被定义为true(缺省值),输出正常,如果它被设置为false,如果这个buffer溢出,就会导致一个意外错误的发生.如果你把buffer设置为none,那么你就不能把autoFlush设置为false.,isThreadSafe属性: 用来设置JSP页面是否可多线程访问。 格式 值为“true”(缺省)表示:将进行普通的servlet处理,多个请求将被一个servlet实例并行处理,在这种情况下,编程人员同步访问多个实例变量。 值为“false”时表示:servlet将实现单线程模式(SingleThreadModel),编程人员需排队访问。 不管请求是顺序提交还是并发出现,都将提供不同的分离的servlet实例。,info 属性: 该属性为JSP页面准备一个字符串,属性值是某个字符串。 格式 目的 在JSP页面中存储信息, 使用getServletInfo()方法获取info属性的属性值。 注: 编译时,转译的类是servlet的一个子类,故在JSP页面中可以使用servlet类的getServletInfo方法。, 谁呀? “+s); % ,下面的例子使用getServletInfo()方法获取info的属性值。,include 指令标记 如果需要在JSP页面内某处整体嵌入一个文件,就可以考虑使用这个指令标记。该指令标记语法格式如下: 该指令标记的作用是在JSP页面出现该指令的位置处,静态插入一个文件。被插入的文件必须是可访问和可使用的,即该文件必须和当前JSP页面在同一Web服务目录中。所谓静态插入,就是当前JSP页面和插入的部分合并成一个新的JSP页面,然后JSP引擎再将这个新的JSP页面转译成Java类文件。,Hello.txt: 你们好,很高兴认识你们呀! E1.jsp: ,下例在JSP页面静态插入一个文本文件,该文本文件必须和当前JSP页面在同一Web服务目录中。, 你们好,很高兴认识你们呀! ,上例等同于下面的JSP文件:,head.jsp: 浏览商品 查询商品 去购物车 公共留言 私人留言 联系我们 用户注册 用户登录 修改信息 回到首页 ,2、JSP 动作标记 动作标记是一种特殊的标记,它影响JSP运行时的功能。 JSP动作标记可以将代码处理程序与特殊的JSP标记关联在一起。JSP动作利用XML语法格式的标记来控制 。 语法格式: 或 指令标记: ,jsp:include:在页面被请求的时候引入一个文件。 jsp:forward:把请求转到一个新的页面。 jsp:param :在include和forward中设置属性。 jsp:useBean:寻找或者实例化一个JavaBean。 jsp:setProperty:设置JavaBean的属性。 jsp:getProperty:输出某个JavaBean的属性。 jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记。,include 动作标记 动作标记是一种特殊的标记,它影响JSP运行时的功能。 格式: 或 目的: 为了重用JSP,HTML,或纯文本的内容 为了能够更新被包含的内容,但不改变包含该内容的那些主JSP页面 注意:JSP内容不能影响主页面:只有使用被包含JSP页面的输出;不要忘记结尾的斜杠;可以包含WEB-INF目录中的文件。,该动作标记告诉JSP页面动态包含一个文件,即JSP页面运行时才将文件加入。与静态插入文件的include指令标记不同,当JSP引擎把JSP页面转译成Java文件时,不把JSP页面中动作指令include所包含的文件与原JSP页面合并一个新的JSP页面,而是告诉Java解释器,这个文件在JSP运行时(Java文件的字节码文件被加载执行)才包含进来。如果包含的文件是普通的文本文件,就将文件的内容发送到客户端,由客户端负责显示;如果包含的文件是jsp文件,JSP引擎就执行这个文件,然后将执行的结果发送到客户端,并由客户端负责显示这些结果。 对比include指令标记,include动作标记可以使用param标记灵活地处理所需要的文件,但执行速度慢。,hello.txt: 你好,祝学习进步! 学习JSP要有Java语言的基础。 要认真学习JSP的基本语法。 image.html: ,下面的例子动态包含两个文件:image.html和hello.txt。hello.txt存放在Myfile文件夹中,image.html存放在当前文件夹下。,例子E2.jsp 加载的文件: 加载的图象: ,param动作标记 param标记以“名字值”对的形式为其它标记提供附加信息,这个标记与jsp:include、jsp:forward、jsp:plugin标记一起使用。 param动作标记: 当该标记与jsp:include标记一起使用时,可以将param标记中的值传递到include指令要加载的文件中去,因此include动作标记如果结合param标记,可以在加载文件的过程中向该文件提供信息。,E3.jsp中动态包含文件:tom.jsp,当该文件被加载时获取param标记中computer的值(获取computer的值由JSP的内置对象request调用getParameter方法完成)。 加载文件效果: , 从1到的连续和是: ,tom.jsp:,forward 动作标记 forward指令: 或 该指令的作用是:从该指令处停止当前页面的继续执行,而转向其它的一个JSP页面。,例子E4.jsp 0.5) % ,plugin 动作标记 在页面中使用普通的HTML标记 可以让客户下载运行一个java applet小应用程序,但并不是所有的客户浏览器都支持java applet小程序,如果该应用程序使用了JDK1.2以后的类,IE可能不支持。使用plugin动作标记可以保证客户能执行你的小应用程序。 该动作标记指示JSP页面加载java plugin,该插件由客户负责下载,并使用该插件来运行Java applet。,plugin 动作标记格式: 提示信息:用来提示用户的浏览器是否支持插件下载 假设有一个java applet小程序,主类字节码文件是:B.class,该文件存放在Root下。含有plugin标记的JSP文件也存放在Root下。, Plugin tag OBJECT or EMBED not supported by browser. ,当客户访问E5.jsp页面时,将导致登录sun公司的网站下载Java plugin,出现客户选择是否下载插件的界面.,useBean动作标记、setProperty动作标记和getProperty动作标记 useBean动作标记用来创建并使用JavaBean;setProperty动作标记用来设置JavaBean的属性;getProperty动作标记用来输出JavaBean的属性。 Sun公司的倡导是:用HTML完成JSP页面的静态部分,用JavaBean完成动态部分,实现真正意义上的静态和动态分割。因此,上述三个动作标记都是非常重要的动作标记,我们在第13讲详细讨论。,二、变量和方法的声明,在“”标记符号之间声明变量和方法。 一、声明变量 变量的类型可以是Java语言允许的任何数据类型。这些变量称JSP页面的成员变量。 在“”之间声明的变量在整个JSP页面内都有效,JSP引擎将JSP页面转译成Java文件时,将这些变量作为类的成员变量。其内存空间直到服务器关闭才释放。 当多个客户请求一个JSP页面时,JSP引擎为每个客户启动一个线程,这些线程共享页面的成员变量,任何一个用户对成员变量操作的结果,都会影响到其他用户。下例利用成员变量被用户共享性质,实现一个简单的计数器。,jsq.jsp:, 您是第 个访问本站的客户。 ,在处理多线程问题时,当两个或多个线程同时访问同一个共享的变量,并且一个线程需要修改这个变量时,我们应对这样的问题作出处理,否则可能发生混乱。 在例中,可能发生两个客户同时请求jsq.jsp页面。在Java语言中我们已经知道,在处理线程同步时,可以将线程共享的变量放入一个synchronized块,或将修改该变量的方法用synchronized来修饰。这样,当一个客户用synchronized块或synchronized方法操作一个共享变量时,其它线程就必须等待,直到该线程执行完该方法或同步块。例子jsq_synchronized.jsp对上例的改进。, 您是第 个访问本站的客户。 , 您是第 个访问本站的客户。 ,声明方法 在“”之间声明方法,该方法在整个JSP页面有效,但是该方法内定义的变量只在该方法内有效。这些方法将在Java程序片中被调用,当方法被调用时,方法内定义的变量被分配内存,调用完毕即可释放所占的内存。当多个客户同时请求一个JSP页面时,他们可能使用方法操作成员变量,对这种情况应给予注意。在例子E5.jsp中,通过synchronized方法操作一个成员变量来实现一个计数器。,E6.jsp:, 您是第 个访问本站的客户。 , 您是第个访问者 目前PI的计算结果是: ,数学上有一个计算 的公式: /4=1-1/3+1/5-1/7+1/9-1/11 。下例中利用成员变量被所有客户共享这一特性实现客户帮助计算 的值,即每当客户访问都参与了一次 的计算。E7.jsp:,三、Java 程序片,可以在“”之间插入Java程序片。一个JSP页面可以有许多程序片,这些程序片将被JSP引擎按顺序执行。 在一个程序片中声明的变量称做JSP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论