jsp基础知识

JSP技术类似于ASP和PHP技术,其实就是在HTML文档中嵌入脚本小程序和JSP标记等元素,从而形成JSP文档。JSP本质上就是Servlet,当JSP第一次被请求的时候,Web服务器上的JSP容器会将其转化为相应的Servlet文件,然后再编译成为Servlet类文件,并且被装载和实例化。此后,每次对jsp的请求都将通过调用已实例化的Servlet对象中的方法来产生相应,所以第一次访问JSP页面会非常慢,而以后就很快。

JSP基本语法

  1. 声明

    JSP声明用于定义JSP程序所要用到的变量、方法、和类,声明方式与java相同,格式为:

    <%! 变量,方法或类的声明 %>

    在JSP声明中声明的变量、方法、类在整个JSP页面中都有效。

  2. 表达式

    JSP表达式的值由服务器负责计算,并将计算结果自动转换为字符串并发送到客户端显示

    语法格式为:

    <%= 表达式 %>

    表达式必须有返回值,且末尾不能加分号。

  3. 程序块(脚本小程序)

    脚本小程序是在 “<%” 和 “%>” 之间插入的 java 程序段,语法格式为:

    <% java代码块 %>

  4. 指令标记

    JSP指令标记是专门为JSP引擎设计的,仅用于告知JSP引擎如何处理JSP页面,而不会产生任何可见的输出,其语法格式如下:

    <%@ 指令名 属性=“值” 属性=“值” ... %>

    JSP指令有三种,即为page指令、include指令、taglib指令。

    1. page指令

      page指令用于设置整个页面的相关属性和功能,其语法格式如下:

      <%@ page 属性=“值” 属性=“值” ...>


      属性说明
      language声明脚本语言的种类,目前只能用“java”
      import指明需要导入的java包,格式为import=”{package.class|package.*},……”
      contentType设置MIME类型和字符编码方式,格式为contentType=”text/html;charset=UTF-8”
      pageEncoding设置字符集
      extends指明JSP编译时需要加入的java class的全名
      session设定客户是否需要HTTP Session,若为false,则不能使用定义了scope=session的jsp:usebean标签
      buffer指定buffer的大小
      autoFlush指定buffer溢出时是否需要强制输出
      isTreadSafe设置JSP页面是否能够多线程使用
      info指定执行JSP时会加入其中的文本
      errorPage设置用于处理异常事件的JSP文件
      isErrorPage设置当前页面是否为出错页面
    2. include指令

      用于设置JSP页面中静态包含一个文件,语法格式为:

      <%@ include file="被包含文件的路径" %>

      静态包含:指JSP页面和被包含的文件先合并成为一个新的JSP页面,然后JSP引擎将这个新的JSP页面转译成为Java类文件,但必须保证合并而成的页面要符合JSP的语法规范。

    3. taglib指令

      用于引用标签库并指定相应的标记前缀,其语法格式为:

      <@ taglib uri="标记库的路径" prefix="相应的标记前缀">

      该taglib指令用于引用Struts2的标记库。

  5. 动作标记

    ​ 共有7个动作标记。

    1. param动作

      param动作标签用于标记用于以键值对的形式为其他标记提供附加信息,必须与include、forward或plugin等动作标记一起使用,其语法格式如下:

      < jsp:param name="parameterName" value="{ parameterValue | <%= 表达式 %>} " />

    2. includ动作

      includ动作标签用于告知JSP页面动态加载一个文件,即在运行JSP页面时才将文件引入,具体语法如下:

      1
      2
      3
      4
      5
      6
      7
      <!-- 不带param子标记: -->
      < jsp:include page="指定动态加载的文件" flush="true" />

      <!-- 带param子标记 -->
      < jsp:include page="指定动态加载的文件" flush="true" >
      < jsp:param name="parameterName" value="parameterValue" />
      </jsp:include>

      include动作与include指令

      includ动作是在JSP页面运行时动态地生成总页面,而includ指令则是先将JSP页面与它所包含的页面编译成一个静态总页面

    3. forward动作

      forward动作标签用于跳转至指定界面


      <!-- 不带param子标签 -->
      < jsp:forward page=" 指定页面路径 | <% 表达式 %> " />

      <!-- 不带param子标签 -->
      < jsp:forward page="指定页面路径 | <% 表达式 %>" >
      < jsp:param name="parameterName" value="parameterValue" />
      </jsp:forward>
    4. plugin动作

      jsp:plugin动作元素用来在JSP中嵌入Java插件,比如Applet。jsp:plugin将会根据浏览器的版本替换成标签或者标签。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      <jsp:plugin
      type="bean | applet"
      name="Applet名称"
      code="java类名"
      codebase="Java类所在目录"
      align="对齐方式"
      height="高度"
      width="宽度"
      hspace="水平间距"
      vspace="垂直间距"
      archive="预先加载的类列表"
      jreversion="JRE版本"
      iepluginurl="URL"
      nspluginurl="URL">
      </jsp:plugin>
    5. useBean、getProperty与setProperty动作
  6. 注释

    1. html注释(客户端注释)

      <!-- 注释内容-->

      JSP引擎会将这个注释发送到客户端

    2. JSP注释

      <%--注释内容--%>

      此注释只可在服务器端见,客户端不可见,故也叫隐藏注释。

    3. java注释

      注释JSP页面中的相关java代码。

  7. JSP对象

    ​ JSP内置对象是在JSP运行环境中已预定义好的对象,可在JSP脚本部分直接使用。内置对象共有9个。

    1. out对象

      out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流

      对输出缓存区和输出流进行操做。

    2. request对象

      request对象封装了客户端请求的所有信息,主要用于接受通过HTTP协议传送到服务器的数据。request对象的作用域为一次请求。

      request对象是javax.servlet.http.HttpServletRequest的实例 ,具有request作用域。

    3. response对象

      response对象 是javax.servlet.http.HttpServletResponse类的实例具有page作用域。response对象为响应对象,用于对客户端请求进行动态响应,可向客户端发送数据,在实际应用中,response对象主要用于将JSP数据处理后的结果返回到客户端。

    4. session对象

      session对象为会话对象,该对象封装了当前用户会话的有关信息。借助于session对象,可对各个客户端请求期间的会话进行跟踪。

      session从客户端打开第一个JSP页面时就被创建,直至客户端关闭浏览器,session才会被摧毁。而从客户端打开第一个JSP页面到客户端关闭浏览器这个过程称为一次会话。

    5. application对象

      application对象为应用对象,负责提供Web应用程序在服务器运行期间的某些全局性信息,与session不同的是,application对象针对Web应用程序的所有用户,并由所有用户共享。

      该对象代表web应用本身,整个web应用共享一个application对象,该对象主要用于在多个JSP页面或者Servlet之间共享变量。application通过setAttribute()方法将一个值放入某个属性,该属性的值对整个Web 应用有效,因此Web 应用的每个JSP 页面或Servlet都可以访问该属性,访问属性的方法为getAttribute 。

    6. exception对象

      exception对象为异常对象,其中封装了从某个JSP页面中所抛出的异常信息,常用于处理JSP页面在执行时所发生的错误和异常。exception对象是javax.lang.Throwable类的实例,具有page作用域。如果一个页面要使用exception对象,就必须将该页面page指令的isErrorPage属性值设置为true。

    7. page对象

      page对象为页面对象,是页面实例的引用,代表JSP页面本身,即JSP页面被转译后的Servlet。

      page对象是java.lang.Object类的实例,具有page作用域.

    8. config对象

      config对象是配置对象,主要用于获取Servlet或者JSP引擎的初始化参数。config对象是javax.servlet.ServletConfig类的实例,具有page作用域,config对象包含了初始化参数以及一些实用方法,可为使用web.xml文件的服务器程序与JSP页面在其环境中设置初始化参数。

    9. pageContext对象

      pageContext对象是JSP中很重要的一个内置对象,不过在一般的JSP程序中,很少用到它。它是javax.servlet.jsp.PageContext类的实例对象,可以使用PageContext类的方法。实际上,pageContext对象提供了对JSP页面所有的对象及命名空间的访问。可实现对页面内所有对象的访问。

原文地址:https://www.cnblogs.com/xm99/p/10741907.html