zoukankan      html  css  js  c++  java
  • 深入理解JSP

      JSP(Java server page)是Java EE规范最基本成员,他是Java Web开发的重点知识,尽管我们一直在用。但其原理知之甚少。今天重点研究一些JSP核心内容以及其工作原理。

      JSP和Servlet的本质是一样的,由于JSP终于须要编译成Servlet才干运行,换句话说JSP是生成Servler的草稿文件。

      JSP比較简单。就是在HTML中嵌入Java代码,或者使用JSP标签。包括使用用户自己定义标签,从而能够动态的提供内容。早起JSP应用比較广泛,一个web应用能够所有由JSP页面组成,仅仅须要少量的JavaBean就可以,可是这样导致了JSP职责过于复杂,这是Java EE标准的出现无疑是雪中送炭,因此JSP慢慢发展成单一的表现技术,不再承担业务逻辑组件以及持久层组件的责任。

    JSP基本原理

      JSP的本质是servlet,当用户指定servlet发送请求时,servlet利用输出流动态生成HTML页面。由于包括大量的HTML标签。

    静态文本等格式导致servlet的开发效率极低,所有的表现逻辑,包括布局、色彩及图像等,都必须耦合在Java代码中。起静态的部分无需Java程序控制,仅仅有那些须要从数据库读取或者须要动态生成的页面内容才使用Java脚本控制。

    因此JSP页面内容有下面两部分组成

      静态部分:HTML标签

      动态部分:Java脚本

    JSP的4种基本的语法

    JSP凝视

      JSP凝视用于标注程序开发过程中的开发提示,不会输出到client。<%-- 凝视内容 --%>

    JSP声明

      JSP声明用于声明变量和方法。在JSP中声明方法看起来非常特别。似乎不须要定义类就能够直接定义方法,方法似乎能够脱离类独立存在。实际上JSP声明会转换成servlet的成员变量或成员方法,因此JSP声明仍然符合Java语法。<%! 声明部分 %>

    输出JSP表达式

      <%=表达式 %>

    JSP脚本

      曾经JSP应用非常广泛。通俗点讲不论什么能够运行的Java代码都能够通过JSP脚本嵌入到HTML页面中。

    <% Java脚本 %>

    JSP的3个预编译指令

    page指令

      该指令是针对当前页面的指令。通常位于JSP页面的顶端,一个JSP页面能够使用多条page指令。

    include指令

      用于指定包括还有一个页面的指令。使用include指令能够将一个外部文件嵌入到当前JSP文件里,同一时候解析这个页面中的JSP。include即能够包括静态文本,又能够包括动态JSP页面。

    taglib指令

      用于定义和訪问自己定义标签。

    JSP的7个动作指令

    forword指令

      用于将页面响应转发到还有一个页面,既能够转发到静态的HTML,也能够转发到动态的JSP页面,或者转发到容器中的servlet。

    param指令

      用于运行參数,必须与其支持參数的标签一起使用。本身不能单独使用。由于单独的param指令没有实际意义。

    include指令

      用于动态引入一个JSP页面,它是一个动态include指令,也用于包括某个页面,不会导入被include页面的编译指令,仅仅将被导入页面的body内容插入本页面。

    plugin指令

      用于下载JavaBean或applet到client运行。

    useBean指令

      创建一个JavaBean的实例

    setProperty指令

      设置JavaBean实例的属性值

    getProperty指令

      输出JavaBean实例的属性值

    JSP脚本中的9个内置对象

    application对象

      javax.servlet.ServletContext的实例,该实例代表JSP所属的web应用本身。能够用于JSP页面,或者servlet之间交换信息。

    config对象

      javax.servlet.ServletConfig的实例,该实例代表JSP的配置信息

    exception对象

      java.lang.Throwable的实例,该实例代表其它页面中的异常和错误。

    out对象

      javax.servlet.jsp.JspWriter的实例,该实例代表JSP的输出流。用于输出内容,形成HTML页面。

    page对象

      代表页面本身,通常没有太大用处。

    pageContext对象

      javax.servlet.jsp.PageContext的实例。该对象代表JSP页面的上下文,使用该对象能够訪问页面中的共享数据。

    request对象

      javax.servlet.http.HttpServletRequest的实例。该对象封装了一次请求。client请求的參数都被封装在这个对象里。

    response对象

      javax.servlet.http.HttpServletResponse的实例,代表服务器对client的响应,通常非常少使用该对象直接响应,而是使用out对象,除非须要生成非字符响应。

    session对象

      javax.servlet.http.HttpSession的实例。该对象代表一次会话,当client浏览器与网站连接时,会话開始,当client关闭浏览器是会话结束。


  • 相关阅读:
    docker-排除故障
    python的标识符
    python的数据类型
    python的数与字符串
    场景法
    正交试验法
    错误推测法
    决策表法
    因果图法
    python基础--用python执行系统命令
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/6979513.html
Copyright © 2011-2022 走看看