JX-Web应用开发[九]JSP技术模型-8.pptVIP

  • 3
  • 0
  • 约4.69千字
  • 约 87页
  • 2017-05-04 发布于四川
  • 举报
JX-Web应用开发[九]JSP技术模型-8

Web应用开发 -JSP技术模型;主要内容;JSP语法概述(1);JSP语法概述(2); JSP页面的三种脚本元素 声明 小脚本 表达式; JSP声明: 声明用来在JSP页面中声明变量和定义方法。 声明是以%! 开头,以%结束的标签,其中可以包含任意数量的合法的Java声明语句。 JSP声明示例:; 声明一个变量和一个方法:; JSP声明的注意事项: 1)在JSP页面中声明的变量会被转换成Servlet的类变量。 2)使用%! %声明的变量会被多个线程共享。 ; JSP小脚本(Scriptlets): 小脚本(scriptlets)是嵌入在JSP页面中的Java代码段。小脚本是以%开头,以%结束的标签。示例如下: 注意:JSP声明的变量是成员变量,为多个页面所共享; 脚本小程序中声明的变量是局部变量,只能为本页面或本程序段所用。; JSP小脚本(Scriptlets): 可使用小脚本打印HTML模板文本 。 ; JSP小脚本(Scriptlets) 小脚本中的条件语句:小脚本程序中可以使用if … else…和switch…case条件语句,但是条件语句中的大括号必须加上。 ; JSP表达式: 表达式以%=开头,以%结束的标签,用于直接输出Java表达式的值并发送给客户端显示。; JSP表达式示例:; 指令(Directive): 指令向容器提供的关于JSP页面的总体信息。 指令是以%@开头,以%结束的标签。 指令有三种类型:page指令、include指令和taglib指令。三种指令的语法格式如下:; page指令: page指令通知容器关于JSP页面的总体特性。 page指令通知容器页面输出的内容类型和使用的字符集。; taglib指令: taglib指令用来指定在JSP页面中使用标准标签或自定义标签的前缀与标签库的URI,示例如下:; JSP动作: 动作(actions)是页面发给容器的命令,它指示容器在页面执行期间完成某种任务。一般语法如下: 在JSP页面中可以使用3种动作:JSP标准动作、标准标签库(JSTL)中的动作和用户自定义动作。 示例如下:; JSP注释:; JSP注释示例:;主要内容; JSP页面尽管从结构上看起来类似于HTML页面,但它实际上是作为Servlet运行的,具体步骤如下: 1) 容器解析JSP文件并产生相应的Java文件,该文件声明了一个Servlet类,其成员直接映射到JSP文件的元素上。 2)容器编译该类并将其装入内存,然后与其他Servlet一样执行并将其输出结果发送到客户端。; 被转换成单个Servlet类的页面集合称为转换单元。 部分JSP标签会影响整个转换单元而不只是它们所声明的页面,具体如下: page指令影响整个转换单元; 在一个转换单元中一个变量不能多次声明。 在一个转换单元中不能使用jsp:useBean动作对一个bean声明两次。;JSP页面生命周期(3) -JSP生命周期阶段(1); JSP页面生命周期阶段: 1. 页面转换 2. 页面编译 3. 加载类 4. 创建实例 5. 调用jspInit()方法 6. 调用_jspService()方法 7. 调用jspDestroy()方法; JSP页面生命周期阶段-页面转换: 在这个阶段,容器检验JSP页面所使用标签的语法,如果发现错误将不能转换。例如,下面的指令就是非法的,因为在Page中使用了大写字母P,这将在转换阶段被捕获。 除了检查语法外,容器还将执行其他有效性检查,其中一些涉及到验证:1) 指令中属性/值对与标准动作的合法性;2) 同一个JavaBean名称在一个转换单元中没有被多次使用;3) 如果使用了自定义标签库,标签库是否合法、标签的用法是合法; 一旦验证完成,容器将创建一个public的包含Servlet类的Java源文件。该文件位于CATALINA_HOME\work\Catalina\localhost\helloapp\org\apache\jsp目录中,它包含对应于JSP文件的Servlet。 ; JSP页面生命周期阶段-页面编译: 容器将调用Java编译器javac编译该文件; 编译器将检验在声明、小脚本和表达式中所写的全部Java代码。 示例:下面的声明标签尽管能够通过转换阶段,但由于声明语句没以分号结束,所以不是合法的Java声明语句,因此在编译阶段会被查出。; JSP页面生命周期阶段-加载类及创建实例: 1)编译成功后,容器将Servlet类装入内存并创建实例。 2)当JSP页面被首次访问时,服务器响应要比以后的访问慢一些。 这是因为在JSP页面向客户提供服务之前必须要转换成Servlet类的实例。

文档评论(0)

1亿VIP精品文档

相关文档