版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章JSP语法主要内容JSP页面的基本结构声明变量和定义方法Java程序片Java表达式JSP指令标记JSP动作标记难点Java程序片JSP动作标记关键实践消费总和听英语2.1JSP页面的基本结构●一个JSP页面可由5种元素组合而成(1)普通的HTML标记和JavaScript标记。(2)JSP标记,如指令标记、动作标记。(3)变量和方法的声明。(4)Java程序片。(5)Java表达式。●原理★一个JSP页面被第一次请求执行时,Tomcat服务器首先将JSP页面文件转译成一个Java文件,再将这个Java文件编译生成字节码文件,然后通过执行字节码文件响应用户的请求。★当多个用户请求一个JSP页面时,Tomcat服务器为每个用户启动一个线程,该线程负责执行常驻内存的字节码文件来响应相应用户的请求。这些线程由Tomcat服务器来管理,将CPU的使用权在各个线程之间快速切换,以保证每个线程都有机会执行字节码文件。2.1JSP页面的基本结构●字节码的任务★把JSP页面中普通的HTML标记和JavaScript标记,交给用户端浏览器执行显示。★JSP标记、方法的定义、Java程序片由服务器负责处理和执行,将需要显示的结果发送给用户端浏览器。★Java表达式由服务器负责计算,并将结果转化为字符串,然后交给用户端浏览器负责显示。example2_1.jsp页面包含了5种元素。例子2_1example2_1.jsp2.2声明变量和定义方法●<%!….%>在<%!和%>标记符号之间声明变量,定义方法以及定义类。
<%!和%>标记符号的内容习惯上放在JSP页面指令之后,<HTML>之前,也可以写在<HTML>与</HTML>之间。■<%!和%>之间声明的变量在整个JSP页面内都有效,与标记符在JSP页面中所在的书写位置无关,但习惯上把<%!、%>标记符写在JSP页面的前面。■对于在“<%!”和“%>”标记符号之间定义方法,可以在Java程序片中调用该方法。方法内声明的变量只在该方法内有效,当方法被调用时,方法内声明的变量被分配内存,方法被调用完毕即可释放这些变量所占的内存。■对于在“<%!”和“%>”标记符号之间定义类,可以在Java程序片中使用该类创建对象。★Tomcat服务器将JSP页面转译成Java文件时,将“<%!”、“%>”标记符之间声明的变量作为类的成员变量,这些变量占有的内存空间直到Tomcat服务器关闭才释放。★当多个用户请求一个JSP页面时,Tomcat服务器为每个用户启动一个线程,这些线程由Tomcat服务器来管理,这些线程共享JSP页面的成员变量,因此任何一个用户对JSP页面成员变量操作的结果,都会影响到其他用户。2.2声明变量和定义方法●<%!….%>例子2_2利用成员变量被所有用户共享这一性质,实现了一个简单的计数器。例子2_2example2_2.jsp例子2_3在“<%!”和“%>”之间定义了两个方法multi(intx,inty)和div(intx,inty),然后在程序片中调用这两个方法。在“<%!”和“%>”之间定义了一个Circle类,然后在程序片中使用该类创建对象,计算了圆的面积。例子2_3example2_3.jsp2.3 Java程序片<%……%>●可以在<%和%>之间插入Java程序片。●一个JSP页面可以有许多程序片,这些程序片将被Tomcat服务器按顺序执行。●在程序片中声明的变量称作JSP页面的局部变量。局部变量的有效范围与其声明的位置有关,即局部变量在JSP页面后继的所有程序片以及表达式部分内都有效。■当多个用户请求一个JSP页面时,Tomcat服务器为每个用户启动一个线程,该线程负责执行字节码文件响应用户的请求。Tomcat服务器使用多线程来处理程序片.2.3 Java程序片<%……%>★操作JSP页面的成员变量。Java程序片中操作的成员变量是各个线程(用户)共享的变量,任何一个线程对JSP页面成员变量操作的结果,都会影响到其他线程。★调用JSP页面的方法。
Java程序片中可以出现方法调用语句,所调用的方法必须是JSP页面曾定义的方法。★操作局部变量。当一个线程享用CPU资源时,Tomcat服务器让该线程执行Java程序片,这时,Java程序片中的局部变量被分配内存空间,当轮到另一个线程享用CPU资源时,Tomcat服务器让该线程再次执行Java程序片,那么,Java程序片中的局部变量会再次分配内存空间。也就是说Java程序片已经被执行了两次,分别运行在不同的线程中,即运行在不同的时间片内。运行在不同线程中的Java程序片的局部变量互不干扰,即一个用户改变Java程序片中的局部变量的值不会影响其他用户的Java程序片中的局部变量。当一个线程将Java程序片执行完毕,运行在该线程中的Java程序片的局部变量释放所占的内存。2.3 Java程序片<%……%>例子2_4中,通过synchronized方法操作一个成员变量来实现一个简单的计数器。例子2_4example2_4.jsp2.3 Java程序片<%……%>■可以将一个Java程序片分割成几个Java程序片,然后在这些Java程序片之间再插入其他标记元素。在程序片中插入HTML中的标记的技巧对于灵活显示数据是非常重要的。例子2_5获得一个7至19之间的随机数,如果获得的数小于或等于13就显示一幅小学生的图像,否则显示一幅中学生的图像。显示图像需要在程序片之间插入用于显示图像的<imagesrc=图像的URL>文字说明</image>的HTML标记例子2_5example2_5.jsp2.4 Java表达式<=%……%>可以在<%=和%>之间插入一个可求值的表达式(注意:不可插入语句,<%=是一个完整的符号,“<%”和“=”之间不要有空格)。★表达式的值由服务器负责计算,并将计算结果用字符串形式发送到用户端显示。★Java表达式可以写在<HTML>之前,也可以写在<HTML>和</HTML>之间或</HTML>之后。●在JSP页面中,表达式的值被表示成一个字符串的形式,即Tomcat服务器将表达式的结果转换成字符串,然后发送给用户的浏览器。因此,在编写JSP页面时,要把Java表达式按普通的文本来使用。例子2_6计算几个表达式的值例子2_6example2_6.jsp2.5 JSP中的注释<!--……-->HTML注释:在标记符号“<!--”和“-->”之间加入注释内容:<!--注释内容-->JSP引擎把HTML注释交给用户,因此用户通过浏览器查看JSP页面的源文件时,能够看到HTML注释。注释可以增强JSP页面的可读性,使JSP页面易于维护。JSP页面中的注释可分为两种。<%--……--%>
JSP注释:在标记符号“<%--”和“--%>”之间加入注释内容:<%--注释内容--%>Tomcat服务器忽略JSP注释,即在编译JSP页面时忽略JSP注释。例子2_7使用了HTML和JSP注释例子2_7example2_7.jsp2.6 JSP指令标记2.6.1page指令标记page指令用来定义整个JSP页面的一些属性和这些属性的值。<%@page属性1="属性1的值"%><%@page属性2="属性2的值"%>……<%@page属性n="属性n的值"%>也可以用一个page指令指定多个属性的值,如:<%@page属性1="属性1的值"属性2="属性2的值"……%>page指令的作用对整个JSP页面有效,与其书写的位置无关。习惯上把page指令写在JSP页面的最前面。page指令标记可以指定属性:contentType、import、language、session、buffer、auotFlush、isThreadSafe、pageEncoding、inform的值。2.6 JSP指令标记2.6.1page指令标记(1)contentType属性例如
<%@pagecontentType="text/html"%>JSP页面设置响应的MIME(MultipurposeInternetMailExtention)类型,即设置contentType属性的值。contentType属性值确定JSP页面响应的MIME类型。属性值的一般形式是:"MIME类型"浏览器启用HTML解析器来解析执行所接收到的信息。如果希望用户的浏览器启用本地的MS-Word应用程序来解析执行收到的信息,就可以如下设置contentType属性的值:<%@pagecontentType="application/msword"%>2.6 JSP指令标记2.6.1page指令标记(1)contentType属性■可以使用page指令为contentType属性指定的值有:text/html、text/plain、image/gif、image/x-xbitmap、image/jpeg、image/pjpeg、application/x-shockwave-flash、application/vnd.ms-powerpoint、application/vnd.ms-excel、application/msword等■page指令只能为contentType指定一个值,不允许两次使用page指令给contentType属性指定不同的属性值。■用page指令为contentType指定一个值的同时,也可以为contentType的附加属性charset指定一个值(默认值是iso-8859-1),例如:<%@pagecontentType="text/html;charset=gb2312"%>contentType的附加属性charset的值是通知用户浏览器用怎样的编码解析收到的字符,当JSP页面用page指令指定设置charset的值是gb2312时,浏览器会将编码切换成gb2312。但是,如果JSP页面用page指定了JSP的页面本身的编码,例如:<%@pagepageEncoding="utf-8"%>,那么charset的值和JSP的页面编码保持一致,即也是utf-8(目前的浏览器都支持utf-8编码,所以一般不需要再指定charset的值,使其和JSP的页面编码保持一致即可)。2.6 JSP指令标记2.6.1page指令标记(1)contentType属性例子2_8中example2_8.jsp页面使用page指令设置contentType属性的值是"image/jpeg",当用户请求example2_8.jsp页面时,用户的浏览器将启用图形解码器来解析执行收到的信息。例子2_8example2_8.jsp2.6 JSP指令标记2.6.1page指令标记(2)pageEncoding属性只能为pageEncoding指定一个值,不允许两次使用page指令给pageEncoding属性指定不同的或相同的属性值。例如:<%@pagepageEncoding="utf-8"%>那么保存JSP页面应当将“编码”选择为“utf-8”(3)
language属性language属性定义JSP页面使用的脚本语言,该属性的值目前只能取"java"。为language属性指定值的格式是:<%@pagelanguage="java"%>language属性的默认值是"java",即如果在JSP页面中没有使用page指令指定该属性的值的,那么,JSP页面默认有如下的page指令:<%@pagelanguage="java"%>2.6 JSP指令标记2.6.1page指令标记(4)import属性(5)
session属性该属性的作用是为JSP页面引入Java运行环境提供的包中的类。例如:<%@pageimport="java.io.*","java.time.LocalDate"%>JSP页面默认import属性已经有如下的值:"java.lang.*"、"javax.servlet.*"、"javax.servlet.jsp.*"、"javax.servlet.http.*"。<%@pageimport="java.util.*"%><%@pageimport="java.io.*"%>session属性用于设置是否需要使用内置的session对象。session的属性值可以是true或false。session属性默认的属性值是true。2.6 JSP指令标记2.6.1page指令标记(6)buffer属性(7)
autoFlush属性内置输出流对象out负责将服务器的某些信息或运行结果发送到用户端显示。buffer属性用来指定out设置的缓冲区的大小或不使用缓冲区。例如:<%@pagebuffer="24kb"%>buffer属性的默认值是8kb。autoFlush可以取值true或false。autoFlush属性的默认值是true。(8)isThreadSafe属性isThreadSafe的属性值可取true或false。isThreadSafe属性值为true时,CPU的使用权在各个线程间快速切换.isThreadSafe属性值设置成false时,该JSP页面同一时刻只能响应一个用户的请求,其他用户须排队等待。也就是说,CUP要保证一个线程将JSP页面执行完毕才会把CPU使用权切换给其他线程。2.6 JSP指令标记2.6.1page指令标记(9)info属性info属性的属性值是一个字符串,其目的是为JSP页面准备一个常用但可能要经常修改的字符串。例如,<%@pageinfo="wearestudents"%>可以在JSP页面中使用方法:getServletInfo();获取info属性的属性值。例子2_9使用getServletInfo()方法获取info的属性值例子2_9example2_9.jsp2.6 JSP指令标记2.6.2include指令标记如果需要在JSP页面内某处整体嵌入一个文件,就可以考虑使用include指令标记,其语法格式如下:<%@includefile="文件的URL"%>■嵌入的文件的编码必须和当前JSP页面一致,比如二者都是utf-8编码。■所谓静态嵌入,就是当前JSP页面和嵌入的文件合并成一个新的JSP页面,然后Tomcat服务器再将这个新的JSP页面转译成Java文件。因此,嵌入文件后,必须保证新合并成的JSP页面符合JSP语法规则,即能够成为一个JSP页面文件。■include指令可以实现代码的复用。比如,每个JSP页面上都可能都需要一个导航条,以便用户在各个JSP页面之间方便地切换,那么每个JSP页面都可以使用include指令在页面的适当位置整体嵌入一个相同的文件。■允许被嵌入的文件使用page指令指定contentType属性的值,但指定的值要与嵌入该文件的JSP页面中的page指令指定的contentType属性的值相同。2.6 JSP指令标记2.6.2include指令标记例子2_10中两个JSP页面使用include指令标记嵌入同一个文本文件:ok.txt,该文本文件的内容是关于这两个JSP页面之间(北京大学与清华大学之间)的超链接。例子2_10中的ok.txt文件用utf-8编码保存。例子2_10ok.txtexample2_10_a.jspexample2_10_b.jsp2.7 JSP动作标记动作标记是一种特殊的标记,它影响JSP运行时的功能。2.7.1include动作标记include动作标记语法格式为:<jsp:includepage="文件的URL"/>或<jsp:includepage="文件的URL">param子标记</jsp:include>include动作标记告诉JSP页面动态包含一个文件,即JSP页面运行时才将文件加入。与静态嵌入文件的include指令标记不同,当Tomcat服务器根据JSP页面产生成Java文件时,不把JSP页面中动作指令include所包含的文件与原JSP页面合并为一个新的JSP页面,而是告诉Java解释器,这个文件在JSP运行(Java文件的字节码文件被加载执行)时才包含进来。如果包含的文件是普通的文本文件,就将文件的内容发送到用户端,由用户端的浏览器负责显示;如果包含的文件是JSP文件,Tomcat服务器就执行这个文件,然后将执行的结果发送到用户端,并由用户端的浏览器负责显示这些结果。2.7 JSP动作标记动作标记是一种特殊的标记,它影响JSP运行时的功能。2.7.2param动作标记例子2_11中,example2_11.jsp使用include动作标记加载JSP文件triangle.jsp,triangle.jsp页面保存
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 施工方案专家由谁组织(3篇)
- 景观藕田施工方案(3篇)
- 桥架防火施工方案(3篇)
- 水族店会员营销方案(3篇)
- 油罐清罐施工方案(3篇)
- 清仓首饰活动策划方案(3篇)
- 物业应急预案演习报告(3篇)
- 电气试验安全施工方案(3篇)
- 硬化路肩开工施工方案(3篇)
- 管道保温的应急预案(3篇)
- 阿拉善阿拉善盟2025年“智汇驼乡鸿雁归巢”引进124名高学历人才笔试历年参考题库附带答案详解(5卷)
- 2025四川党政领导干部政治理论考试(理论测试)强化练习题及答案
- 2026秋招:米哈游面试题及答案
- 2026年中考语文常考考点专题之文言文阅读
- 检验科隐私保护培训课件
- 2025放射医学与技术(师)全真模拟试题(含答案)
- 科研项目劳务合同范本
- 环境隐患记录报告制度
- 2025年国企内部竞聘考试试题库及解析答案
- 苏州安全生产六化培训
- 银行双控账户合同范本
评论
0/150
提交评论