Jsp 基础语法

JSP 中的指令

  1. JSP中的三种指令标签:

    指令 描述
    <%@ page ... %> 定义网页依赖属性,比如脚本语言、error页面、缓存需求等等(配置JSP页面)
    <%@ include ... %> 包含其他文件(导入页面资源文件)
    <%@ taglib ... %> 引入标签库的定义
  2. 指令的使用格式:

    <%@ 指令名称 属性名1=属性值1 属性名2=属性值2 ... %>
    

page 指令

属性 描述
buffer 指定out对象使用缓冲区的大小
autoFlush 控制out对象的 缓存区
contentType 指定当前JSP页面的MIME类型和字符编码
errorPage 指定当JSP页面发生异常时需要转向的错误处理页面
isErrorPage 指定当前页面是否可以作为另一个JSP页面的错误处理页面
extends 指定servlet从哪一个类继承
import 导入要使用的Java类
info 定义JSP页面的描述信息
isThreadSafe 指定对JSP页面的访问是否为线程安全
language 定义JSP页面所用的脚本语言,默认是Java
session 指定JSP页面是否使用session
isELIgnored 指定是否执行EL表达式
isScriptingEnabled 确定脚本元素能否被使用
  • isErrorPage:标识当前也是是否是错误页面。
    • isErrorPage=true,可以使用内置对象exception
    • isErrorPage=false,不可以使用内置对象exception
  • errorPage:当前页面发生异常后,会自动跳转到指定的错误页面

Include指令

  1. JSP可以通过include指令来包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是该JSP文件的一部分,会被同时编译执行。

  2. Include指令的语法格式如下:

    <%@ include file="文件相对 url 地址" %>
    
  3. include 指令中的文件名实际上是一个相对的 URL 地址。如果您没有给文件关联一个路径,JSP编译器默认在当前路径下寻找。

Taglib指令

  1. JSP API允许用户自定义标签,一个自定义标签库就是自定义标签的集合。

  2. Taglib指令引入一个自定义标签集合的定义,包括库路径、自定义标签。

  3. Taglib指令的语法:

    <%@ taglib uri="uri" prefix="prefixOfTag" %>
    
  4. uri属性确定标签库的位置,prefix属性指定标签库的前缀。


JSP 中的注释

语法 描述
<%-- 注释 --%> JSP注释,注释内容不会被发送至浏览器甚至不会被编译
<!-- 注释 --> HTML注释,通过浏览器查看网页源代码时可以看见注释内容

JSP 隐式(内置)对象

JSP隐式对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明。JSP隐式对象也被称为预定义变量。

JSP所支持的九大隐式对象:

对象 描述
request HttpServletRequest 接口的实例
response HttpServletResponse 接口的实例
out JspWriter类的实例,用于把结果输出至网页上
session HttpSession类的实例
application ServletContext类的实例,与应用上下文有关
config ServletConfig类的实例
pageContext PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
page 类似于Java类中的this关键字
Exception Exception类的对象,代表发生错误的JSP页面中对应的异常对象

request对象

  1. request对象是javax.servlet.http.HttpServletRequest 类的实例。每当客户端请求一个JSP页面时,JSP引擎就会制造一个新的request对象来代表这个请求。
  2. request对象提供了一系列方法来获取HTTP头信息,cookies,HTTP方法等等。

response对象

  1. response对象是javax.servlet.http.HttpServletResponse类的实例。当服务器创建request对象时会同时创建用于响应这个客户端的response对象。
  2. response对象也定义了处理HTTP头模块的接口。通过这个对象,开发者们可以添加新的cookies,时间戳,HTTP状态码等等。

out对象

  1. out对象是 javax.servlet.jsp.JspWriter 类的实例,用来在response对象中写入内容。

  2. 最初的JspWriter类对象根据页面是否有缓存来进行不同的实例化操作。可以在page指令中使用buffered='false'属性来轻松关闭缓存。

  3. JspWriter类包含了大部分java.io.PrintWriter类中的方法。不过,JspWriter新增了一些专为处理缓存而设计的方法。还有就是,JspWriter类会抛出IOExceptions异常,而PrintWriter不会。

  4. 下表列出了我们将会用来输出boolean,char,int,double,String,object等类型数据的重要方法:

    方法 描述
    out.print(dataType dt) 输出Type类型的值
    out.println(dataType dt) 输出Type类型的值然后换行
    out.flush() 刷新输出流

session对象

  1. session对象是 javax.servlet.http.HttpSession 类的实例。和Java Servlets中的session对象有一样的行为。
  2. session对象用来跟踪在各个客户端请求间的会话。

application对象

  1. application对象直接包装了servlet的ServletContext类的对象,是javax.servlet.ServletContext 类的实例。
  2. 这个对象在JSP页面的整个生命周期中都代表着这个JSP页面。这个对象在JSP页面初始化时被创建,随着jspDestroy()方法的调用而被移除。
  3. 通过向application中添加属性,则所有组成您web应用的JSP文件都能访问到这些属性。

config对象

  1. config对象是 javax.servlet.ServletConfig 类的实例,直接包装了servlet的ServletConfig类的对象。

  2. 这个对象允许开发者访问Servlet或者JSP引擎的初始化参数,比如文件路径等。

  3. 以下是config对象的使用方法,不是很重要,所以不常用:

    config.getServletName();
    

    它返回包含在元素中的servlet名字,注意,元素在 WEB-INFweb.xml 文件中定义。


pageContext 对象

  1. pageContext对象是javax.servlet.jsp.PageContext 类的实例,用来代表整个JSP页面。

  2. 这个对象主要用来访问页面信息,同时过滤掉大部分实现细节。

  3. 这个对象存储了request对象和response对象的引用。application对象,config对象,session对象,out对象可以通过访问这个对象的属性来导出。

  4. pageContext对象也包含了传给JSP页面的指令信息,包括缓存信息,ErrorPage URL,页面scope等。

  5. PageContext类定义了一些字段,包括PAGE_SCOPE,REQUEST_SCOPE,SESSION_SCOPE, APPLICATION_SCOPE。它也提供了40余种方法,有一半继承自javax.servlet.jsp.JspContext 类。

  6. 其中一个重要的方法就是 removeAttribute(),它可接受一个或两个参数。比如,pageContext.removeAttribute("attrName") 移除四个scope中相关属性,但是下面这种方法只移除特定 scope 中的相关属性:

    pageContext.removeAttribute("attrName", PAGE_SCOPE);
    

page 对象

  1. 这个对象就是页面实例的引用。它可以被看做是整个JSP页面的代表。
  2. page 对象就是this对象的同义词。

exception 对象

exception 对象包装了从先前页面中抛出的异常信息。它通常被用来产生对出错条件的适当响应。


参考文献

  1. JSP 指令|菜鸟教程
Good Good Write Bug, Day Day Up
原文地址:https://www.cnblogs.com/liyihua/p/14477405.html