jsp_03_jsp语法

JSP语法

首先看一个由Dreamweaver8创建的默认JSP文档的代码。

 1 <%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 3 <html xmlns="http://www.w3.org/1999/xhtml">
 4 <head>
 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 6 <title>无标题文档</title>
 7 </head>
 8
 9 <body>
10 </body>
11 </html>

代码说明:第一行是一个page指令,指定了页面的内容类型、编码方式、导入的java包等。

余下的代码看起来和普通的HTML文档一样,在其中可以嵌入jsp代码片段、注释、XML等,就构成了一个jsp页面。

接下来我们看一个典型的JSP文档代码。

 1 <%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 3
 4 <%!
 5 //声明一个方法和一个变量
 6     String getDate()
 7     {
 8         return new java.util.Date().toLocaleString();
 9     }
10     int count=10;
11 %>
12 <html xmlns="http://www.w3.org/1999/xhtml">
13 <head>
14 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
15 <title>一个典型的JSP页面</title>
16 </head>
17
18 <body>
19 <!--这是html注释,使用include指令包含一个jsp文件。-->
20 <%@ include file="header.jsp" %>
21 <%
22     //一段jsp代码,输出一行文字,这是jsp注释
23     out.println("输出一行文字。");
24 }
25 %>
26 <hr>
27 当前的时间是:
28 <%-- 这是jsp注释,使用表达式调用方法--%>
29 <%=getDate()%>
30 <jsp:include page="footer.html"/>
31
32 </body>
33 </html>

下面进入JSP语法介绍。

JSP页面中的元素主要包含以下类别:

模板元素:就是指静态的html、CSS、xml等内容,主要是用于页面的排版。

注释:分为jsp注释和html/xml注释。

脚本元素:包括方法和变量的声明,jsp表达式,和jsp片段(Scriptlets)。

指令元素:包括page指令(定义页面的全局属性)、include指令(静态包含一个文本文件)和taglib指令(使用标签库)。

动作元素:频繁的动作主要包括<jsp:forward> <jsp:include> <jsp:param> <jsp:params> <jsp:useBean> <jsp:setProperty> <jsp:getProperty>等。

1、注释

1.1

<!--HTML注释,客户端可见-->

1.2

<%

/*这是放在星号之间的jsp注释*/

//这也是jsp注释

%>

1.3

<%--还是jsp注释--%>

1.4

<!-- jsp注释和html注释的混合,此页面加载时间是<%= (new java.util.Date()).toLocaleString() %> -->

2、脚本元素

2.1 声明

在JSP程序中声明合法的变量和方法。

语法:<%! declaration; [ declaration; ]+ ... %>

<%!

//声明一个方法和一个变量

String getDate()

{

return new java.util.Date().toLocaleString();

}

int count=10;

%>

2.2 表达式

JSP 语法

<%= expression %>

<div><%= map.size() %></div>

注意:没有分号。

2.3 Scriptlets代码片段

语法

<% jsp代码 %>

3 指令元素

3.1 Page 指令

定义JSP文件中的全局属性.

语法

<%@ page

[ language="java" ]

[ extends="package.class" ]

[ import="{package.class | package.*}, ..." ]

[ session="true | false" ]

[ buffer="none | 8kb | sizekb" ]

[ autoFlush="true | false" ]

[ isThreadSafe="true | false" ]

[ info="text" ]

[ errorPage="relativeURL" ]

[ contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=ISO-8859-1" ]

[ isErrorPage="true | false" ]

%>

<%@ page import="java.util.*, java.lang.*" %>

<%@ page buffer="5kb" autoFlush="false" %>

<%@ page errorPage="error.jsp" %>

描述

<%@ page %>指令作用于整个JSP页面,同样包括静态的包含文件。

下面的包在JSP编译时已经导入了,所以你就不需要再指明了:

java.lang.*

javax.servlet.*

javax.servlet.jsp.*

javax.servlet.http.*

属性

language="java"

声明脚本语言的种类,暂时只能用"java"

extends="package.class"

标明JSP编译时需要加入的Java Class的全名,但是得慎重的使用它,它会限制JSP的编译能力.

import="{package.class | package.* }, ..."

需要导入的Java包的列表,这些包就作用于程序段,表达式,以及声明。

session="true | false"

设定客户是否需要HTTP Session.缺省值是true.

buffer="none | 8kb | sizekb"

buffer的大小被out对象用于处理执行后的JSP对客户浏览器的输出。缺省值是8kb

autoFlush="true | false"

设置如果buffer溢出,是否需要强制输出,如果其值被定义为true(缺省值),输出正常,如果它被设置为false,如果这个buffer溢出,就会导致一个意外错误的发生.如果你把buffer设置为none,那么你就不能把autoFlush设置为false.

isThreadSafe="true | false"

设置Jsp文件是否能多线程使用。缺省值是true,也就是说,JSP能够同时处理多个用户的请求,如果设置为false,一个jsp只能一次处理一个请求

info="text"

一个文本在执行JSP将会被逐字加入JSP中,你能够使用Servlet.getServletInfo方法取回。

errorPage="relativeURL"

设置处理异常事件的JSP文件。

isErrorPage="true | false"

设置此页是否为出错页,如果被设置为true,可以使用exception对象.

contentType="mimeType [ ;charset=characterSet ]" | "text/html;charset=ISO-8859-1"

设置MIME类型 。缺省MIME 类型是: text/html, 缺省字符集为 ISO-8859-1.

3.2 Include 指令

在JSP中包含一个静态的文件,同时解析这个文件中的JSP语句。属于静态包含(原样重现,相当于复制粘贴)

语法

<%@ include file="relativeURL" %>

3.3 taglib

taglib指令允许页面使用标记扩展(自定义标签)。

语法:

<%@ taglib  uri="tagLibraryURI"  prefix="tagPrefix" %>

其中:

uri:一个URI标识标记库描述器。一个标记库描述器用来唯一的命名一组定制的标记,并且告诉包容器如何处理特殊的标记.

tagPrefix:定义一个prefix:tagname形式的字符串前缀,用于定义定制的标记。所保留的前缀为jsp、jspx、java、servlet、sun、sunw。

4 动作元素

4.1 <jsp:forward>

重定向一个HTML文件,JSP文件,或者是一个程序段.

语法

<jsp:forward page={"relativeURL" | "<%= expression %>"} />

or

<jsp:forward page={"relativeURL" | "<%= expression %>"} >

<jsp:param name="parameterName"

value="{parameterValue | <%= expression %>}" />+

</jsp:forward>

例1

<jsp:forward page="/servlet/login" />

例2

<jsp:forward page="/servlet/login">

<jsp:param name="username" value="jsmith" />

</jsp:forward>

4.2 <jsp:include>

包含一个文本文件,动态包含(被包含文件编译后的结果被包含入当前位置)。

语法

<jsp:include page="{relativeURL | <%= expression%>}" flush="true" />

<jsp:include page="{relativeURL | <%= expression %>}" flush="true" >

<jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" />+

</jsp:include>

这里flush="true",不能使用false值。缺省为false

4.3 <jsp:useBean>

创建一个Bean实例并指定它的名字和作用范围.

JSP 语法

<jsp:useBean id="beanInstanceName" scope="page | request | session | application" class="package.classname"/>

或者

<jsp:useBean id="beanInstanceName" scope="page | request | session | application" class="package.classname">

其他代码

</jsp:useBean>

例1

<jsp:useBean id="cart" scope="session" class="session.Carts" />

<jsp:setProperty name="cart" property="*" />

例2

<jsp:useBean id="checking" scope="session" class="bank.Checking" >

<jsp:setProperty name="checking" property="balance" value="0.0" />

</jsp:useBean>

JavaBean组件是JSP强有力的一个方面。 JavaBean封装了程序的逻辑页面,它是一个可以重用的组件。属性以及用法

id="beanInstanceName"

引用的javabean实例的名字,用于区分不同的javabean。

scope="page | request | session | application"

Bean存在的范围以及id变量名的有效范围。缺省值是page。

page - 该javabean在当前页面有效,页面中包含的文件也可以使用该javabean。

request - 你在任何执行相同请求的Jsp文件中使用Bean,直到页面执行完毕向客户端发回响应或转到另一个文件为止。你能够使用Request对象访问Bean,比如request.getAttribute(beanInstanceName)

session - 从创建Bean开始,你就能在任何使用相同session的Jsp文件中使用Bean.这个Bean存在于整个Session生存周期内,任何在分享此Session的Jsp文件都能使用同一Bean。注意在你创建Bean的Jsp文件中<% @ page %>指令中必须指定session=true。

application - 从创建Bean开始,你就能在任何使用相同application的Jsp文件中使用Bean.这个Bean存在于整个application生存周期内,任何在分享此application的Jsp文件都能使用同一Bean.

class="package.class"

bean的包package路径

<jsp:setProperty>

设置Bean中的属性值.

JSP语法

<jsp:setProperty

name="beanInstanceName"

{

property= "*" |

property="propertyName" [ param="parameterName" ] |

property="propertyName" value="{string | <%= expression %>}"

}

/>

例1

<jsp:setProperty name="mybean" property="*" />

例2

<jsp:setProperty name="mybean" property="username" />

例3

<jsp:setProperty name="mybean" property="username" value="Steve" />

描述

<jsp:setProperty>元素使用Bean给定的setter方法,在Bean中设置一个或多个属性值。你在使用这个元素之前必须得使用<jsp:useBean>声明此Bean.因为,<jsp:useBean>和<jsp:setProperty>是联系在一起的,同时这他们使用的Bean实例的名字也应当相匹配(就是说,在<jsp:setProperty>中的name的值应当和<jsp:useBean>中id的值相同)

你能使用多种方法利用<jsp:setProperty>来设定属性值 :

通过用户输入的所有值(被做为参数储存中request对象中)来匹配Bean中的属性

通过用户输入的指定的值来匹配Bean中指定的属性

在运行时使用一个表达式来匹配Bean的属性

每一种设定属性值的方法都有其特定的语法,下面我们会来讲解

属性及其用法

name="beanInstanceName"

表示已经在<jsp:useBean>中创建的Bean实例的名字.

property="*"

储存用户在Jsp输入的所有值,用于匹配Bean中的属性。在Bean中的属性的名字必须和request对象中的参数名一致.

从客户传到服器上的参数值一般都是字符类型 ,这些字符串为了能够在Bean中匹配就必须转换成其它的类型,下面的表中列出了Bean属性的类型以及他们的转换方法.

把字符串转化为其它类型的方法. Property 类型

方法

boolean or Boolean

java.lang.Boolean.valueOf(String)

byte or Byte

java.lang.Byte.valueOf(String)

char or Character

java.lang.Character.valueOf(String)

double or Double

java.lang.Double.valueOf(String)

integer or Integer

java.lang.Integer.valueOf(String)

float or Float

java.lang.Float.valueOf(String)

long or Long

java.lang.Long.valueOf(String)

如果request对象的参数值中有空值,那么对应的Bean属性将不会设定任何值。同样的,如果Bean中有一个属性没有与之对应的Request参数值,那么这个属性同样也不会设定.

property="propertyName" [ param="parameterName" ]

使用request中的一个参数值来指定Bean中的一个属性值。在这个语法中,property指定Bean的属性名,param指定request中的参数名.

如果bean属性和request参数的名字不同,那么你就必须得指定property和param ,如果他们同名,那么你就只需要指明property就行了.

如查参数值为空(或未初始化),对应的Bean属性不被设定.

property="propertyName" value="{string | <%= expression %>}"

使用指定的值来设定Bean属性。这个值可以是字符串,也可以是表达式。如果这个字符串,那么它就会被转换成Bean属性的类型(查看上面的表).如果它是一个表达式,那么它类型就必须和它将要设定的属性值的类型一致。

如果参数值为空,那么对应的属性值也不会被设定。另外,你不能在一个<jsp:setProperty>中同时使用param和value

技巧

如果你使用了property="*",那么Bean的属性没有必要按Html表单中的顺序排序

<jsp:getProperty>

获取Bean的属性值,用于显示在页面中

语法

<jsp:getProperty name="beanInstanceName" property="propertyName" />

<jsp:useBean id="calendar" scope="page" class="employee.Calendar" />

<h2>

Calendar of <jsp:getProperty name="calendar" property="username" />

</h2>

描述

这个<jsp:getProperty>元素将获得Bean的属性值,并可以将其使用或显示在JSP页面中.在你使用<jsp:getProperty>之前,你必须用<jsp:useBean>创建它.

<jsp:getProperty>元素有一些限制:

你不能使用<jsp:getProperty>来检索一个已经被索引了的属性

你能够和JavaBeans组件一起使用<jsp:getProperty>,但是不能与Enterprise Bean一起使用。

属性

name="beanInstanceName"

bean的名字,由<jsp:useBean>指定

property="propertyName"

所指定的Bean的属性名。

时间: 2024-10-01 07:44:16

jsp_03_jsp语法的相关文章

SqlServer给一个表增加多个字段语法

添加字段语法 alter table table_name add column_name +字段类型+ 约束条件 给一个表增加多个字段: use NatureData go alter table XunHu add MaleCount varchar(50) null, FemaleCount varchar(50) null, SubadultCount varchar(50) null, LarvaeCount varchar(50) null, TraceType varchar(50

MySQL(九)之数据表的查询详解(SELECT语法)二

上一篇讲了比较简单的单表查询以及MySQL的组函数,这一篇给大家分享一点比较难得知识了,关于多表查询,子查询,左连接,外连接等等.希望大家能都得到帮助! 在开始之前因为要多表查询,所以搭建好环境: 1)创建数据表suppliers 前面已经有一张表是book表,我们在建立一张suppliers(供应商)表和前面的book表对应. 也就是说 让book中s_id字段值指向suppliers的主键值,创建一个外键约束关系. 其实这里并没有达到真正的外键约束关系,只是模拟,让fruits中的s_id中

linux shell基础语法

1.第一个Shell脚本 打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了. 输入一些代码: #!/bin/bash echo "Hello World !" "#!" 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell.echo命令用于向窗口输出文本. 运行Shell脚本有两种方法. 1.1作为可执行程序 将上面的代码保存为t

Linux C中内联汇编的语法格式及使用方法(Inline Assembly in Linux C)

在阅读Linux内核源码或对代码做性能优化时,经常会有在C语言中嵌入一段汇编代码的需求,这种嵌入汇编在CS术语上叫做inline assembly.本文的笔记试图说明Inline Assembly的基本语法规则和用法(建议英文阅读能力较强的同学直接阅读本文参考资料中推荐的技术文章 ^_^). 注意:由于gcc采用AT&T风格的汇编语法(与Intel Syntax相对应,二者的区别参见这里),因此,本文涉及到的汇编代码均以AT&T Syntax为准. 1. 基本语法规则 内联汇编(或称嵌入汇

Python基本语法

Python基本语法 1.第一个Python代码 print('Hello Word!') 2.注释 1.定义:注释即解释,主要用于提示相关代码的信息. 2.注释分类:单行注释和多行注释 单行注释:# 注释内容 多行注释:''' 注释内容 ''' 或 """ 注释内容 """ 3.变量 1.定义:变量就是可以改变的量 2.命名规则: 1.汉字变量名能用,不推荐使用 2.数字不能开头 3.不可以使用特殊字符,除_ 4.变量区分大小写 5.可以使用关

Java基础语法(1)

一.Java概述 1.1Java语言平台 图1-1  java语言平台 注:开发者都是安装javaSE平台的软件. 1.2.跨平台性 平台:指的是操作系统(Windows,Linux,Mac) 跨平台:Java程序可以在任意操作系统上运行,一次编写到处运行 原理:实现跨平台需要依赖Java的虚拟机 JVM (Java Virtual Machine) 图1-2 跨平台版本 1.3      JVM   JRE   JDK说明   -A:什么是JVM JVM是java虚拟机(JVM Java Vi

eclipse使用与java语法规则

eclipse的使用 1.运行点击"三角图标"或右键Run As运行2.3. java语法规范 1.括号要成对出现2.每句代码应该有分号结束3.java语法区分大小写4.一个文件只能写一个带有public的class声明,还必须和文件名一致.一个文件中不可以有多个带有public的修饰符号5.名称写的时候不要包含关键字和非法字符(字母和下划线开头可以,也可以用数字结尾)6.java代码的语法全部都是半角符号7.学会规范的写代码. 写代码的好习惯: 1.常按保存,写完一句或几句就按一次C

js基本语法总结(一)

1.js简介 a)js是一种网页脚本语言,使得浏览器可以与网页互动. js的一种基于对象和事件驱动,具有安全性能的脚本语言,脚本语言就是在客户端的浏览器就可以互动响应处理程序的语言,而不需要服务器的处理和响应. js也可以与服务器交互响应,而服务器语言(asp.php.jsp)需要将命令上传服务器,经服务器处理后回传处理结果. js可以嵌入到html文件,不需要经过web服务器就可以对用户操作作出响应,使得网页与用户很好的交互,利用客户端电脑的资源适当减少服务器端的压力,并减少用户的等待时间.

sass语法基础知识

文件后缀名 sass有两种后缀名文件:一种后缀名为sass,不使用大括号和分号:另一种就是我们这里使用的scss文件,这种和我们平时写的css文件格式差不多,使用大括号和分号.而本教程中所说的所有sass文件都指后缀名为scss的文件.在此也建议使用后缀名为scss的文件,以避免sass后缀名的严格格式要求报错. //文件后缀名为sass的语法 body background: #eee font-size:12px p background: #0982c1 //文件后缀名为scss的语法 b