• JSP小述


    一、JSP概述

    1、JSP结构

    网络服务器需要一个jsp引擎,也就是一个容器来处理jsp页面,容器用来截获对jsp页面的请求,jsp容器和服务器共同合作,为jsp的正常运行提供必要的运行环境和其他服务,并且能识别出专属于jsp网页的特殊元素。

    2、JSP运行流程
    1. 对jsp的请求就像其他普通网页的请求一样,浏览器会发送一个HTTP请求给服务器,web服务器识别出这是一个对jsp页面的请求,将该请求传递给jsp引擎(通过使用url或者.jsp来完成)
    2. jsp引擎从磁盘中载入jsp页面,然后将他们转化成servlet(这种转化只是简单的将所有模板文本改用成println()语句),并且将所有的jsp元素转化成java代码
    3. jsp引擎将servlet编译成可执行类,并且将原始请求传递给servlet引擎
    4. web服务器的某组件将会调用servlet引擎,然后载入并执行servle类,在执行过程中,servlet类会产生HTML格式的输出并将其内嵌于HTTP response中上交给服务器,web服务器以静态HTML网页的形式将HTTP response返回到浏览器中。最终,浏览器处理HTTP response中动态产生的HTML网页,就像在处理静态网页一样
    3、JSP生命周期
    阶段 说明
    编译阶段 jsp容器编译jsp引擎转化成的servlet源文件,生成servlet类
    初始化阶段 加载与JSP对应的servlet类,创建其实例,并调用它的初始化方法
    执行阶段 调用与JSP对应的servlet实例的服务方法
    销毁阶段 调用与JSP对应的servlet实例的销毁方法,然后销毁servlet实例

    二、JSP语法

    1、JSP脚本

    jsp脚本就是java代码片段,分为以下三种

    <%...%>:Java语句

    <%=...%>:Java表达式

    <%!...%>:Java定义类成员,在类中添加方法或成员

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <%--java语句--%>
        <%
            String sout = "Hello,java语句";
        	//不会输出到客户端,而是再控制台打印
            System.out.println(sout);
        %>
    
        <%--java表达式--%>
        //在客户端浏览器输出展示
        <%=sout%><br>
        <%="我是中国人,我爱中国!!!"%>
    </body>
    </html>
    
    

    输出

    2、JSP指令
    指令 说明
    page 用于定义 JSP 页面的各种属性
    include 静态包含指令,用于引入其它 JSP 文件。使用 include 指令引入的其它 JSP 文件,JSP 引擎将把这两个 JSP 文件翻译成一个 servlet,所以将 include 称为静态包含
    taglib 用于在 JSP 页面中导入标签库(JSP 标准标签库、第三方标签库、自定义标签库)

    注:page 是最复杂的一个指令,它的属性很多,常用的属性有 import、language、pageEncoding 等,下面列出常见属性

    属性名 取值范围 说明
    import 任何包名,类名 引入该JSP中用到的类、包等
    language java 解释该JSP文件时采用的语言,一般为java语言,默认为java
    pageEncoding utf-8 指定一张码表来对该JSP页面进行编码
    contentType 有效的文档类型 客户端浏览器根据该属性判断文档类型,例如 HTML格式为text/html
    errorPage 某个jsp的相对路径 指明一个错误页面,如果该JSP程序抛出一个未捕捉的异常,则转到errorPage指定的页面
    isErrorPage true||false 指定该页面是否为错误显示页面

    注:

    • import是唯一可以声明多次的page指令属性,一个import可以引用多个类,中间用英文逗号隔开,如<%@ page import="java.util.List,java.lang.String"%>
    • errorPage指定的页面通常isErrorPage属性为true,且内置的exception对象为未捕捉的异常
    3、JSP内置对象

    JSP提供了由容器实现和管理的内置对象,也可以称之为隐含对象,由于JSP使用Java作为脚本语言,所以JSP将具有强大的对象处理能力,并且可以动态创建Web页面内容。但Java语法在使用一个对象前,需要先实例化这个对象,这其实是一件比较烦琐的事情。JSP为了简化开发,提供了一些内置对象,用来实现很多JSP应用。在使用JSP内置对象时,不需要先定义这些对象,直接使用即可

    内置对象 说明
    request 请求对象
    response 响应对象
    session 一次会话,在服务器端记录用户状态信息
    application 标识web应用上下文
    exception 表示发生异常对象
    page 代表当前JSP页面,是当前JSP编译后的Servlet类的对象,相当于this
    config 标识Servlet配置
    out 输出响应体
    pagecontext 表示jsp页面上下文
    • request对象

    • session对象

    • application对象
    方法 说明
    String getInitParameter(String name) 获取已命名的应用程序初始化参数值。
    Enumeration getInitParameterNames() 获取所有已定义的应用程序初始化参数名的枚举。
    Enumeration getAttributeNames() 获取所有application对象使用的属性名。
    Object getAttribute(String name) 从application对象中获取指定对象名。
    void setAttribute(String key,Object obj) 使用指定名称和指定对象在application对象中进行关联。
    void removeAttribute(String name) 从application对象中去掉指定名称的属性。

    具体了解其用法参见参考资料

    4、四大作用域

    jsp九个内置对象中能存储数据的四个被称为jsp四大作用域

    作用域 说明
    page 变量在当前页面有效
    request 变量在当前请求中有效
    session 变量在当前会话中有效
    application 变量在一个应用下都有效

    详细说明:

    1)page作用域 代表变量只能在当前页面上生效

    2)request作用域 代表变量能在一次请求中生效,一次请求可能包含一个页面,也可能包含多个页面,比如页面A请求转发到页面B。

    3)session作用域 代表变量能在一次会话中生效,基本上就是能在web项目下都有效,session的使用也跟cookie有很大的关系。一般来说,只要浏览器不关闭,cookie就会一直生效,cookie生效,session的使用就不会受到影响。

    4)application作用域 代表变量能一个应用下(多个会话),在服务器下的多个项目之间都能够使用。比如baidu、wenku等共享帐号。

    参考资料

    [java基础学习:JavaWeb之JSP]: https://juejin.cn/post/6844903741003415565#heading-15
    [JSP九大内置对象]: https://blog.csdn.net/pan_junbiao/article/details/87916435
  • 相关阅读:
    第01组 每周小结(2/3)(组长)
    第01组 每周小结 (1/3)(组长)
    第01组 Beta冲刺 总结(组长)
    第01组Beta冲刺(5/5)(组长)
    第01组Beta冲刺(4/5)(组长)
    第01组Beta冲刺(3/5)(组长)
    第01组Beta冲刺(2/5)(组长)
    第01组Beta冲刺(1/5)(组长)
    软工实践个人总结
    每周小结(3/3)
  • 原文地址:https://www.cnblogs.com/stublog/p/14124978.html
Copyright © 2020-2023  润新知