JSP基本语法小结

一、JSP运行原理:

当浏览器向Web应用服务器请求一个JSP页面时,Web应用服务器将其转换为一个Servlet文件(即一个.Java文件),然后将这个Java文件编译成一个字节码文件(.class文件),最后Web应用服务器加载转换后的Servlet实例,处理客户端的请求,并返回HTML格式的响应回应给客户端浏览器。

二、JSP页面的组成:

JSP页面由指令标识、HTML代码、嵌入的Java脚本程序以及注释组成;其中JAVA脚本程序是通过<%%>来嵌入到HTML页面中的。

三、JSP页面的3种脚本元素类型:表达式格式、小脚本格式和声明格式

    • 表达式格式:用于页面中直接调用Java表达式,从而都得到返回值,其基本语法如:<%=Java表达式/变量%>

    • 小脚本格式:HTML中使用<%%>来嵌入Java脚本程序,从而进行相应的逻辑处理,基本语法下:<%任意的Java代码%>
    • JSP声明格式:用来定义Java脚本语言中使用到的变量或者方法,其基本语法如下:<%!…Java声明%>



四、JSP的3个指令元素:

包含了pageincludetaglib3个指令元素,其定义方法为:<%指令名[一个或者多个指令属性] %>

    • 页面指令page它用于对JSP文件中的全局属性进行设置,如JSP页面的编码、内容类型、引用的类库等。举例如下:

注意pageEncoding属性和contentType属性的区别


通常两者同时存在,pageEncoding属性的作用是指定JSP页面的编码格式,若其值非UTF-8,则页面上的中文将会是乱码;而contentType属性的作用是指定服务器出请求完成后回应给浏览器的内容类型,若其值设为text/html;charset=utf-8”,说明服务器回应的页面是HTML文档或文本内容,其字符集为支持中文的UTF-8

    • 文件包含指令includeinclude指令用于引用页面外部的文件,可以将一个JSP页面包含到另一个JSP页面中,从而实现JSP页面重用。其指令的语法格式为:<%@include file="path"%> ;其中path为引用文件的路径

注意使用include指令最终将生成一个文件,所以在被包含和包含的文件中,不能有相同名称的变量,否则会发生编译错误。

技巧通常情况下,一个网站页面头部(banner)与页面底部都是相同的,可以分别创建这两个页面,在通过include指令将其包含在其他页面中,从而减少代码冗余。


    • 引用标签库指令taglib:用来引用一个标签库或者自定义标签。通过taglib指令可以告诉容器此JSP页面将使用哪些标签库,并可以给引用的标签库指定一个前缀。在JSP页面中使用标签库可以简化JSP页面并减少使用Java代码。常用的标签库有JSTLSturs标签、Spring标签等。taglib指令的语法格式为:<%@taglib prefix="tagPrefix"uri=”tagURL”%> ;其中Prefix:指定标签库的前缀;uri=指定标签库文件的位置;

例子:使用taglib指令引用标准标签库(JSTL)

五、JSP标准动作元素:

JSP标准动作元素的使用格式为:<jsp:标记名>,它采用严格的XML标签语法来表示。这些JSP标签动作元素是在用户请求阶段执行的(JSP执行的3个阶段之一)。这些标准动作元素是内置在JSP文件中的,可不需要引用,直接使用。

根据各个标准动作的功能,可将它们分成6组:

  1. JSP中使用到JavaBean的标准动作:<jsp:useBean>定义JSP页面使用一个JavaBean实例,ID属性定义了一个实例名称;<jsp:getProperty>从一个JavaBean中获取一个属性值,并将其添加到响应中;<jsp:setProperty>设置一个JavaBean中的属性值;
  2. JSP中包含其他JSP文件或者Web资源的标准动作:<jsp:include>在请求处理阶段包含来自一个Servlet或者JSP文件的响应,注意与include指令的不同;
  3. 将到达的请求转发给另外一个JSP页面或者Web资源以便进一步操作的标准动作:<jsp:forward>将某个请求的处理转发到另一个Servlet或者JSP页面;
  4. 在其他标准动作的中间指定参数的标准动作:<jsp:param>对使用<jsp:include>或者<jsp:forward>传递到另外一个Servlet或者JSP页面的请求添加一个传递参数值;
  5. 在客户端的页面中嵌入Java对象(例如applet,是运行在客户端的小Java程序)的标准动作:<jsp:plugin>根据浏览器类型为Java插件生成Object或者Embed标记;<jsp:params><jsp:fallback>
  6. 仅仅英语标记文件的标准动作:<jsp:attribute><jsp:body><jsp:invoke><jsp:dobody><jsp:element><jsp:text><jsp:output>

常用的标准动作的功能简述:

  1. <jsp:useBean>:定义JSP页面使用一个JavaBean实例;
  2. <jsp:setProperty>:设置一个JavaBean中的属性值;
  3. <jsp:getProperty>:获取一个JavaBean中的属性值;
  4. <jsp:include>:在JSP页面包含一个外在文件;
  5. <jsp:forward>:把到达的请求转交另一个页面进行处理;
  6. <jsp:param>:用于传递参数值;
  7. <jsp:plugin>:用于指定在客户端浏览器中插入插件的属性;
  8. <jsp:params>:用于向HTML页面上的插件插件传递参数值;
  9. <jsp:fallback>:指定如何处理客户不支持插件运行的情况;

补充:JSP执行的3个阶段

  1. 被翻译阶段:编写好的JSP文件首先会被Web容器(在服务器端)中的JSP引擎转换成Java源代码;
  2. 被编译阶段:Java源代码会被编译成二进制格式的可执行的字节码;
  3. 请求阶段:当容易接受了客户端的请求后,就执行前面已经编译策划那个二进制字节码的JSP文件。处理完请求后,容器再把生成的页面反馈给客户端进行显示。

区别:认识include指令与<jsp:include>动作表示的本质区别

  1. include指令通过file属性指定被包含的文件,且file属性不支持表达式;而<jsp:include>动作标识通过page属性指定被包含的文件,而且page属性支持JSP表达式;
  2. 使用include指令时,被包含的文件内容会原封不动的被插入到包含页面中,然后JSP编译器在将合成后的文件最终编译成一个Java文件;而使用<jsp:include>动作标识执行时,程序会将请求转发到被包含页面,并将执行结果输出到浏览器中,然后返回包含页继续执行后面的代码。
  3. 在应用include指令包含文件时,由于被包含的文件最终会生成一个文件,所以在被包含文件、包含文件中不能有重名变量或方法;而在使用<jsp:include>动作标识包含文件时,由于每个文件是单独编译的,所以被包含文件和包含文件中重名的变量和方法是不冲突的。

你可能感兴趣的:(jsp)