1. JSP页面元素组成
JSP的静态元素
JSP注释元素
JSP指令元素
JSP脚本元素:小脚本元素、表达式元素、声明元素
JSP动作元素
2. 静态元素-html元素
html不是程序设计语言,而是一组标记,便于网页设计人员把文本、图像、动画等制作成有一定效果的网页,由浏览器解释并还原出页面效果。
在这里就不提详细的标记了,注意一点是表单的两种提交方式。
2.1 Get方式提交表单
相应的Url类似于:
http://127.0.0.1:8080/Project/Success.jsp?name=name&password=password
用Get方式提交表单数据的优点是速度快,缺点是变量值会在浏览器的地址栏中显示,并且Url的长度有限制,一次所能提交的数据量有限。
2.2 Post方式提交表单
表单数据按“变量名=变量值”的形式存放在Http请求报头尾部的数据体中,表单数据不会显示在Url中。即http://127.0.0.1:8080/Project/Success.jsp
3. 指令元素
1)Jsp指令元素为Jsp容器提供相关的页面属性信息,用于指示Jsp容器如何正确地翻译代码,或者执行特定的操作。
2)JSP指令元素的作用是通过设置指令中的属性在JSP运行时,控制JSP页面的某些特性。
3)Jsp指令元素主要包括三个:page、include和taglib,它们的基本语法格式形如:
<%@ 指令元素 属性="值" %>
<%@ page
language="java"
import=" ……. "
info="…….."
isErrorPage="true|false"
errorPage="…….."
contentType="……."
pageEncoding="default"
%>
3.1 page指令
page(页面)指令是JSP页面中使用频率最高的指令,主要用来设置整个JSP页面的相关属性,如网页内容的类型、网页的编码方式、网页需导入的包、发生异常时的处理方式等信息。该指令无论写在什么位置,都对整个页面有效。但是一般情况下写在JSP页面的第一行。
1)language属性定义JSP页面脚本代码所采用的编程语言,默认值为java,即采用java脚本语言。
2)import属性用于导入当前JSP页面中要用到的其它Java类。如果要导入多个Java类,用逗号来分隔它们,例如要导入java.util.*和java.io.*,可写为:
<%@page import="java.util.*,java.io.*"%>
或分为两行来写,例如:
<%@page import="java.util.*"%>
<%@page import="java.io.*"%>
3)pageEncoding属性定义当前Jsp页面的字符编码标准,默认的字符集为ISO-8859-1,如果页面中有简体中文,则字符集应该定义为GB2312,UTF-8或GBK。
4)contentType属性定义MIME类型和字符集。MIME (Multipurpose Internet Mail Extensions,多功能Internet邮件扩充服务)使用简单的ASCII文本来传递E-mail信息,E-mail中允许包含有任意类型的附件文件
<%@page contentType = “text/html; charset=GB2312” %>
5)session属性决定此页面是否使用session对象,默认为true。
6)info属性定义JSP页面的信息,如版权、开发日期等,可以在Java脚本中用getServletInfo()获取info属性的信息:
<body>
<%@page info="xxx公司信息部研发, 2007-1-9"%>
<%=getServletInfo() %>
</body>
7)errorPage属性用于指定当JSP页面发生运行时异常时,需要跳转到的错误处理页面,errorPage的值为错误处理页面的URL。如果此项默认值为空,则运行时异常信息直接显示在浏览器上。应用示例如下所示:
<%@ page errorPage="nullString.jsp" %>
或:
<%@ page errorPage="/error/nullString.jsp" %>
当前JSP页面出现运行时异常,服务器会把抛出的异常对象传递给nullString.jsp页面处理。
8)isErrorPage属性为“true”时,定义本JSP页面为错误处理页,接收异常页面传递过来的异常对象exception。exception对象是Throwable类型的。isErrorPage属性为"false"时,Servlet程序中不定义exception隐含对象。
3.2 include指令
include(包含)指令元素:又称为文件包含或静态包含,是在JSP容器把JSP网页翻译成Servlet程序时,将指定文本文件的内容嵌入Servlet程序中,替换include指令。其基本语法为 :
<%@ include file="relativeURLspec" %>
file属性指出被包含资源的URL,可使用相对路径或绝对路径。绝对路径以Web应用的上下文路径名“/xxxx”开头,如:
<%@ include file="/relativeURLspec" %>
注意:
1)include指令是代码静态绑定,被include指令包含的内容在编译时会被静态地嵌入Servlet程序中。
2)可以包含jsp和html文件。
3)过多使用include指令影响Jsp页面的可读性。
4)被包含的页面若有page指令,则主页面中所出现的编码设置必须完全一致,否则会引起翻译时的错误。
5)include指令的file属性不可以是变量,也不可以以“head.jsp?aa=1”这种形式向被包含页面传递参数。
3.3 taglib指令
taglib(标签库)指令告诉JSP容器怎样找到标签描述的文件和标签库,以及再JSP页面引用这个标签时的前缀。
在JSP中,标记库主要包括标准标记库和扩展标记库。标准标记库就是常用的JSP动作,例如:<jsp:useBean>、<jsp:include>等。扩展标记库包括JSTL和用户自定义的标记等。
taglib指令的语法格式为:
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
其中uri属性值是待用标记库的URI,每个标记库都有一个唯一的URI,这个URI在标记库的配置文件中已作定义,此处直接引用。prefix属性值是待用标记的前缀,在标记库的配置文件中也已经作定义,此处也是直接引用。
4. 表达式元素
表达式元素的基本功能是运行一条Java表达式,如果表达式有计算结果,则把结果显示在表达式位置上。表达式元素的基本语法格式如下:
<%= expression %>
注意:表达式不能带Java语句结束符“;”。
5. Java小脚本元素
脚本小程序就是一段Java代码。在JSP页面中声明脚本小程序的基本语法格式为:
<%
Java代码
%>
6. 声明元素
声明元素<%! %>用于声明类成员变量、成员方法或内部类,基本语法格式:
声明属性:
<%!
int x1=100, a[ ]=new int[6];
static double x2;
String str=null;
%>
声明成员方法
<%!
//定义adder()方法计算1+2+...+n
int adder(int n)
{
int sum=0;
for(int i=1;i<=n;i++)
sum=sum+i;
return sum;
}
%>
7. 注释元素
7.1 HTML注释方法
Html注释也叫输出注释,属于Html标记范畴,也是标记级的注释,被JSP编译器视为Html标记,直接用out.write()方法输出。标记中的注释内容会返回到客户端浏览器,可以通过查看网页源代码看到。其基本语法为:
<!-- 注释内容 -->
7.2 JSP注释方法
Jsp注释也叫隐藏注释或服务器端注释,只有打开Jsp页面后才能看到它。该注释被编译器忽略,不会出现在Servlet程序中,也不会返回给客户端浏览器。其基本语法为:
<%-- 注释的内容 --%>
<%@page language="java" import="java.util.*,java.text.*" contentType="text/html; charset=UTF-8"%>
<html>
<head>
<title>输出当前日期</title>
<!-- 这是HTML注释(客户端可以看到源代码) -->
<%-- 这是JSP的注释(客户端不可以看到源代码)--%>
</head>
<body>
你好,今天是
<%
//使用预定格式将日期转换为字符串
SimpleDateFormat formater= new SimpleDateFormat("yyyy年MM月dd日");
String strCurrentTime = formater.format(new Date());
%>
<%= strCurrentTime %>
<%!String str = "this is JSPPage"; %>
<%= str %>
</body>
</html>
浏览器显示
浏览器显示源代码
8. 动作元素
在JSP中,将类似于<xxx:yyy>的JSP标记也称为JSP动作。JSP动作分为标准动作和扩展动作。
JSP标准动作是一组形如“<jsp:xxx>”的标记,标记的前缀均为“jsp”。JSP标准动作的标记名是由JSP规范定义,用户不能随意更改。利用JSP动作可以动态地插入文件、将用户重定向到另一个页面、动态生成XML元素等。
8.1 <jsp:include>动作
<jsp:include>动作也叫动态包含,它将被包含的文件视为一个独立的文件,在程序运行时包含目标资源的返回信息。动态包含一个文件相当于在运行时动态调用这个文件。被包含的资源可以是动态的,也可以是静态的。
动态包含的基本语法格式如下:
<jsp:include page="urlSpec" flush="true|false"/>
或:
<jsp:include page="urlSpec" flush="true|false">
{ <jsp:param .... /> }*
</jsp:include>
其中,page=“urlSpec”属性定义了被包含资源的URL,可用相对路径或绝对路径表达。属性flush=“true”时,表示在包含目标资源前,先刷新当前页面输出缓冲区中的内容。flush=“false”时,包含文件前,不刷新当前页面的输出缓冲区。默认值为false。如果要给被包含的页面传递参数,可以使用<jsp:param>动作。
8.2 <jsp:param>动作
<jsp:param>主要是为<jsp:include>、<jsp:forward>和<jsp:params>等动作元素传递参数,如果在其它场合中使用它,JSP容器会报告翻译错误。
<jsp:param>的基本语法为:
<jsp:param name="name" value="value" />
8.3 <jsp:forward>动作
<jsp:forward>动作使程序从当前页面跳转到另一个目标页面运行(<jsp:forward>为转发而不是重定向),目标页面可以是静态资源(如*.htm),也可以是一个JSP页面(*.jsp),还可以是一个Servlet、CGI程序等。
<jsp:forward>的基本语法格式为:
<jsp:forward page= "relativeURLspec "/>
或
<jsp:forward page= "urlSpec ">
{ <jsp:param .... /> }*
</jsp:forward>
8.4 <jsp:plugin>动作
<jsp:plugin>主要用来在客户端浏览器中加载运行一个Applet或JavaBean,被加载的Applet或JavaBean可以是单个类文件*.class,也可以是一个*.jar包。
在JSP页面中使用<jsp:plugin>动作,服务器将把被加载的文件传送到客户端,由客户端的JVM运行Applet或JavaBean。
<jsp:plugin>的基本语法格式如下:
<jsp:plugin type="bean|applet"
code="objectCode"
codebase="objectCodebase"
{ height="height" }
{ hspace="hspace" }
{ width="width" }
{ <jsp:params>
{ <jsp:param name="paramName" value=”paramValue" >
</jsp:params> }
{ <jsp:fallback> arbitrary_text </jsp:fallback> }
</jsp:plugin>