> 文档中心 > 【JSP】JSP的基础语法

【JSP】JSP的基础语法

文章目录

  • JSP语法
    • 脚本程序语法
      • 示例
    • 声明语法
      • 示例
    • 表达式语法
      • 示例
    • 注释语法
    • JSP指令
      • page指令
      • include指令
      • taglib指令
    • 动作标签
      • 动作标签
        • 实例
      • 动作标签
      • 动作标签
      • 动作标签
        • 示例
      • 动作标签
        • 示例
      • 动作标签
      • 、 、 动作标签
        • 示例
      • 动作标签

JSP语法

脚本程序语法

  脚本程序(scriptlet)可以包含任意量的Java语句、变量、方法或表达式

  语法如下:

<% Java Code %>

  也可以改写成下面的XML语法:

<jsp:scriptlet>   Java Code</jsp:scriptlet>

示例

  示例代码:

<html><head>    <title>Title</title></head><body>    </body></html>

  运行结果:

【JSP】JSP的基础语法

声明语法

  一个声明语句可以声明一个或多个变量、方法,供后面的Java代码使用。在JSP文件中,您必须先声明这些变量和方法然后才能使用它们。

  声明语法如下:

<%! 声明代码 %>

  也可以改写成下面的XML语法:

<jsp:declaration>   声明代码</jsp:declaration>

示例

  示例代码:

<html><head>    <title>Title</title></head><body>        <% c = a * b; out.println("这是'声明语法'示例代码片段"); out.println("<br/>"); out.println(c);    %></body></html>

  运行结果:
【JSP】JSP的基础语法

表达式语法

  一个JSP表达式中包含的脚本语言表达式,先被转化成String,然后插入到表达式出现的地方。

  由于表达式的值会被转化成String,所以您可以在一个文本行中使用表达式而不用去管它是否是HTML标签。

  表达式元素中可以包含任何符合Java语言规范的表达式,但是不能使用分号来结束表达式

  JSP表达式的语法格式:

<%= 表达式 %>

  也可以改写成下面的XML语法:

<jsp:expression>   表达式</jsp:expression>

示例

  示例代码:

<html><head>    <title>Title</title></head><body>    1+1=    <br>    <h1> 当前时间戳  </h1></body></html>

  运行结果:
【JSP】JSP的基础语法

注释语法

  JSP注释主要有两个作用:为代码作注释以及将某段代码注释掉

  以下是JSP注释的语法:

<%-- 这是注释 --%>

JSP指令

  JSP指令用来设置整个JSP页面相关的属性,如网页的编码方式和脚本语言。

  语法格式如下:

<%@ 指令 属性="属性值" %>

  有以下三种JSP指令

指令 描述
定义页面相关属性,如脚本语言,错误页面和缓冲要求等
包含其他文件
引入标签库的定义

page指令

  page指令的语法格式:

<%@ page attribute="value" %>

  等价的XML格式:

<jsp:directive.page attribute="value" />

  page指令相关属性:

属性 说明
buffer 指定out对象使用缓冲区的大小
(设置为none则立即输出)
autoFlush 控制out对象缓冲区满时是否自动刷新。
设置为true(默认),当缓冲区满时会自动刷新,将其中的内容输出到客户端;设置为false,当缓冲区满时会抛出异常
contentType 指定当前JSP页面的MIME类型和字符编码
errorPage 指定当JSP页面发生异常时需要转向的错误处理页面
isErrorPage 指定当前页面是否可以作为另一个JSP页面的错误处理页面
extends 指定servlet从哪一个类继承
import 导入要使用的Java类
(导入多个包 逗号 隔开)
info 定义JSP页面的描述信息
isThreadSafe 指定对JSP页面的访问是否为线程安全
(默认为true)
language 定义JSP页面所用的脚本语言,默认是Java
session 指定JSP页面是否使用session,默认为true
isELIgnored 指定是否执行EL表达式,默认为true
isScriptingEnabled 确定脚本元素能否被使用,默认为true

include指令

  include指令用于在编译阶段包括一个文件。被包含的文件可以是JSP文件、HTML文件或文本文件。这个指令告诉容器在编译阶段将其他外部文件的内容合并到当前JSP文件中。可在JSP页面的任何位置使用include指令进行编码。

  include指令的语法格式:

<%@ include file = "relative url" >

  等价的XML格式:

<jsp:directive.include file = "relative url" />

taglib指令

  JSP API允许自定义的JSP标签,如:HTML或XML标签,标签库是一组实现自定义行为的用户定义标签。

  taglib指令声明JSP页面使用一组自定义标签,标识库的位置,并提供了在JSP页面中标识自定义标签的方法。

  include指令的语法格式:

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

  等价的XML格式:

<jsp:directive.taglib uri="uri" prefix="prefixOfTag" />

动作标签

  JSP动作标签(或称为行为标签)使用XML语法中的结构来控制servlet引擎的行为。可以动态插入文件,重新使用JavaBeans组件,将用户转发到另一个页面,或为Java插件生成HTML。

  动作标签只有一种语法格式,它严格遵守XML标准:

<jsp:action_name attribute="value" />
动作 说明
jsp:include 在页面被请求的时候引入一个文件。
jsp:useBean 寻找或者实例化一个JavaBean。
jsp:setProperty 设置JavaBean的属性。
jsp:getProperty 输出某个JavaBean的属性。
jsp:forward 把请求转到一个新的页面。
jsp:plugin 根据浏览器类型为Java插件生成OBJECT或EMBED标记。
jsp:element 定义动态XML元素
jsp:attribute 设置动态定义的XML元素属性。
jsp:body 设置动态定义的XML元素内容。
jsp:text 在JSP页面和文档中使用写入文本的模板

所有动作标签都含有两个共同属性:

  • id属性
     id属性是动作元素的唯一标识,可以在JSP页面中引用。动作元素创建的id值可以通过PageContext来调用。

  • scope属性
     scope属性标识动作元素的生命周期。id属性和scope属性是直接相关的,因为scope属性决定了与id关联的对象的使用寿命。scope属性有四个可能的值:

    • page
    • request
    • session
    • application

动作标签

  jsp:include动作元素用来包含静态和动态的文件。该动作把指定文件插入正在生成的页面。

语法格式如下:

<jsp:include page="相对 URL 地址" flush="true" />

  前文的include指令是在编译阶段引入文件,一但引入的文件发生改变,所有引入该文件的jsp页面都要改变;而include动作是请求页面时插入该文件,引入的文件可以动态改变。

以下是include动作相关的属性列表。

属性 说明
page 要包括的页面的相对URL
flush 布尔属性,定义在包含资源前是否刷新缓存区

实例

  定义两个文件date.jspmain.jsp如下:

  date.jsp文件代码:

<%@ page import="java.util.Date" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><p>    今天的日期是:<%= new Date().toLocaleString() %></p>

  main.jsp文件代码:

<html><head>    <title>$Title$</title></head><body><p> include动作标签 </p><jsp:include page="date.jsp" flush="true"></jsp:include></body></html>

  运行结果:
【JSP】JSP的基础语法

动作标签

  jsp:useBean动作用来加载一个将在JSP页面中使用的JavaBean。它首先使用idscope变量搜索现有对象。如果未找到对象,则会尝试创建指定的对象。

语法格式如下:

<jsp:useBean id="name" class="package.class" />

  当加载了一个bean类,可以使用jsp:setPropertyjsp:getProperty操作来修改和检索bean属性。

  以下是useBean动作相关的属性列表:

属性 描述
class 指定Bean的完整包名。
type 指定将引用该对象变量的类型。
beanName 通过 java.beans.Beans 的 instantiate() 方法指定Bean的名字。

动作标签

  jsp:setProperty用来设置已经实例化的Bean对象的属性,有两种用法。首先,你可以在jsp:useBean标签的后面使用jsp:setProperty,如下所示:

<jsp:useBean id="myName" ... />...<jsp:setProperty name="myName" property="someProperty" .../>

  此时,不管jsp:useBean是找到了一个现有的Bean,还是新创建了一个Bean实例,jsp:setProperty都会执行。

  第二种用法是把jsp:setProperty放入jsp:useBean元素的内部,如下所示:

<jsp:useBean id="myName" ... >...   <jsp:setProperty name="myName" property="someProperty" .../></jsp:useBean>

  此时,jsp:setProperty只有在新建Bean实例时才会执行,如果是使用现有实例则不执行jsp:setProperty。

  jsp:setProperty动作有下面四个属性,如下表:

属性 说明
name name属性是必需的。它表示要设置属性的是哪个Bean。
property property属性是必需的。它表示要设置哪个属性。有一个特殊用法:如果property的值是"*",表示所有名字和Bean属性名字匹配的请求参数都将被传递给相应的属性set方法。
value value 属性是可选的。该属性用来指定Bean属性的值。字符串数据会在目标类中通过标准的valueOf方法自动转换成数字、boolean、Boolean、 byte、Byte、char、Character。例如,boolean和Boolean类型的属性值(比如"true")通过 Boolean.valueOf转换,int和Integer类型的属性值(比如"42")通过Integer.valueOf转换。   value和param不能同时使用,但可以使用其中任意一个。
param param 是可选的。它指定用哪个请求参数作为Bean属性的值。如果当前请求没有参数,则什么事情也不做,系统不会把null传递给Bean属性的set方法。因此,你可以让Bean自己提供默认属性值,只有当请求参数明确指定了新值时才修改默认属性值。

动作标签

  jsp:getProperty动作提取指定Bean属性的值,转换成字符串,然后输出。语法格式如下:

<jsp:useBean id="myName" ... />...<jsp:getProperty name="myName" property="someProperty" .../>

  下表是与getProperty相关联的属性:

属性 描述
name 要检索的Bean属性名称。Bean必须已定义。
property 表示要提取Bean属性的值

示例

定义一个Bean类:Message

public class Message {    private String message = "No message";    public String getMessage() { return message;    }    public void setMessage(String message) { this.message = message;    }}

在main.jsp文件中编写以下代码。这将加载bean并设置/获取一个简单的String参数 -

<html><head>    <title>$Title$</title></head><body><h2>在JSP中使用JavaBean示例</h2><hr/><jsp:useBean id="msg" class="com.test.Message" ></jsp:useBean><p>默认信息:<jsp:getProperty name="msg" property="message"/> </p><jsp:setProperty name="msg" property="message" value="Hello World" /><p>修改后的信息:<jsp:getProperty name="msg" property="message"/> </p></body></html>

运行结果:
【JSP】JSP的基础语法

动作标签

  jsp:forward动作终止当前页面的操作,并将请求转发到另一个资源,例如静态页面,另一个JSP页面或Java Servlet。

  如法格式如下:

<jsp:forward page="相对 URL 地址" />

  相应属性:

属性 说明
page page属性包含的是一个相对URL。page的值既可以直接给出,也可以在请求的时候动态计算,可以是一个JSP页面或者一个 Java Servlet.

示例

  定义两个JSP文件 date.jspmain.jsp如下:

  date.jsp代码如下:

<%@ page import="java.util.Date" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><p>    今天的日期是:<%= new Date().toLocaleString() %></p>

  main.jsp代码如下:

<html><head>    <title>$Title$</title></head><body><h2>forward动作实例</h2><jsp:forward page="date.jsp"></jsp:forward></body></html>

运行结果:
【JSP】JSP的基础语法

在这里,它从丢弃了main.jsp内容,并显示了来自转发目标页面的内容。

动作标签

  jsp:plugin动作用于将Java组件插入到JSP页面中。它确定浏览器的类型,并根据需要插入objecembed标签。

  如果所需的插件不存在,它会下载插件,然后执行Java组件。Java组件可以是Applet或JavaBean。
jsp:plugin动作有几个属性对应于用于格式化Java组件的常用HTML标记。 param元素也可用于向AppletBean发送参数。

  以下是使用jsp:plugin动作的典型语法 :

<jsp:plugin type="applet" codebase="dirname" code="MyApplet.class"      width="60" height="80">   <jsp:param name="fontcolor" value="red" />   <jsp:param name="background" value="black" />    <jsp:fallback>      Unable to initialize Java Plugin   </jsp:fallback> </jsp:plugin>

如果你有兴趣可以尝试使用applet来测试jsp:plugin动作元素,元素是一个新元素,在组件出现故障的错误时发送给用户错误信息。

、 、 动作标签

  动作元素动态定义XML元素。动态是非常重要的,这就意味着XML元素在编译时是动态生成的而非静态。

示例

代码:

<html><head>    <title>$Title$</title></head><body><jsp:element name="xmlElement"><jsp:attribute name="xmlElementAttr">   属性值</jsp:attribute>    <jsp:body> XML 元素的主体    </jsp:body></jsp:element></body></html>

运行后会生成如下的代码:
【JSP】JSP的基础语法

动作标签

  可以使用操作将模板文本写入JSP页面和文档。以下是此操作的简单语法 :

<jsp:text>模板数据</jsp:text>

  模板的主体不能包含其他元素; 它只能包含文本和EL表达式。 请注意,在XML文件中不能使用诸如${whatever> 0}的表达式,因为大于符号是非法的。它是使用gt形式来代替,例如${whatever gt 0}或替代方法是将值嵌入到CDATA中。

<jsp:text><![CDATA[
]]>
</jsp:text>