JSP--JSP语法

来源:互联网 发布:pos机软件 编辑:程序博客网 时间:2024/05/16 06:16

JSP语法

2.1了解JSP的基本构成

2.2指令标签

     2.2.1page指令

     2.2.2include指令

     2.2.3taglib指令

2.3嵌入Java代码

     2.3.1代码片段

     2.3.2声明

     2.3.3JSP表达式

2.4注释

     2.4.1HTML注释

     2.4.2JSP注释

     2.4.3动态注释

     2.4.4代码注释

2.5JSP动作标签

     2.5.1<jsp:include>

     2.5.2<jsp:forward>

     2.5.3<jsp:param>

     2.5.4操作JavaBean的动作标签

2.1了解JSP的基本构成

JSP页面主要是由指令标签,HTML标记语言,注释,嵌入Java代码,JSP动作标签5个元素组成

2.2指令标签

指令标签不会产生任何内容输出到网页中,主要用于定义整个JSP页面的相关信息,如使用的语言,导入的类包,指定错误处理页面等。

语法格式如下:

<%@ directive attribute = "value" attributeN ="valueN".....%>

directive:指令名称

attribute:属性名称,不同的指令包含不同的属性

value:属性值,为指定属性赋值的内容

注意:标签中的<%和%>是完整的标记,不能再添加空格,但是标签中定义的各种属性之间以及指令名之间可以有空格

JSP指令有3种:page,include,taglib

2.2.1page指令

page指令是JSP最常用的指令,用于定义整个JSP页面的属性,这些属性在JSP被服务器解析成Servlet时会转换成相应的Java代码。

page指令的语法格式如下:

<%@ page attr1="value1" attr2="value2"....%>

page指令包含的属性有15个,下面介绍一些常用的

  • language属性:用于设置JSP页面使用的语言,目前只支持Java。<%@ page language="java"%>
  • extends属性:用于设置JSP页面继承的Java类,所有JSP页面在执行之前都会被服务器解析成Servlet,而Servlet是由Java类定义的,所以JSP和Servlet都可以继承指定的父类。该属性并不常用,而且有可能影响服务器的性能优化。
  • import属性:用于设置JSP导入的类包。JSP页面可以嵌入Java代码片段,这些代码在调用API时需要导入相应的类包。eg:<%@ page import ="java.util.*"%>
  • pageEncoding属性:用于定义JSP页面的编码格式,也就是指定文件编码。JSP页面中的所有代码都使用该属性指定的字符集,如果将属性值设置为iso-8859-1,那么这个JSP页面就不支持中文。通常设置为GBK,因为它可以显示简体和繁体中文。<%@ page pageEncoding="GB18030"%>
  • contentType属性:用于设置JSP页面的MIME类型和字符编码,浏览器会据此显示网页内容。<%@ page contentType ="text/html; charset=UTF-8"%>如果将这个设置应用,那么浏览器在显示网页时将显示UTF-8编码格式,如果当前浏览的编码格式为GBK,将产生乱码,需用户手动更改浏览器的显示编码才能看到正确的中文。
  • session属性:指定JSP页面是否使用HTTP的session会话对象。其属性值为boolean类型,可选值为true和false,默认值是true(可以使用session对象)。如果是false,则不能使用。<%@ page session="false"%>。session是JSP的内置对象之一。
  • buffer属性:用于设置JSP的out输出对象使用的缓冲区大小,默认大小为8KB,且单位只能是KB。建议使用8的倍数作为该属性的属性值。out是JSP的内置对象之一。
  • autoFlush属性:用于设置JSP页面缓存满时,是否自动刷新缓存。默认值时true;如果是false,则缓存被填满时将抛出异常。
  • info属性:用于设置JSP页面的相关信息,该信息可以在Servlet接口的getServletInfo()方法中获取<%@ page info="这是一个登陆页面,是系统的入口"%>
  • isErrorPage属性:通过该属性可以将当前的JSP页面设置成错误处理页面来处理另一个JSP页面的错误,也就是异常处理,这意味着当前JSP页面业务的改变。<%@ page isErrorPage="true"%>
  • errorPage属性:用于指定处理当前JSP页面异常错误的另一个JSP页面,指定的JSP错误处理页面必须设置isErrorPage属性为true,errorPage属性的属性值是一个url字符串。<%@ page errorPage ="error/loginErrorPage.jsp"%>如果设置改属性,那么在web.xml文件中定义的任何错误页面都将被忽略,而优先使用该属性定义的错误处理页面。
  • isELlgnored属性:用于定义JSP页面是否忽略EL表达式的使用。默认值为false。即使用EL表达式。<%@ page isELlgnored ="false"%>

2.2.2include指令  

include 指令用于文件包含。该指令可以在JSP页面中包含另一个文件的内容,但它仅支持静态包含,即被包含文件中的所有内容都被原样包含到该JSP页面中;如果被包含文件中有代码,将不被执行。被包含文件可以是一段Java代码,HTML代码或者是另一个JSP页面。

<%@ include file="validate.jsp"%>

file属性用于指定被包含的文件,其值是当前JSP页面文件的相对URL路径。

例:在当前页面中包含另一个JSP文件类显示当前日期。

(1)编辑date.jsp文件<%@ page pageEncoding="GB18030"%><%@ page import="java.util.Date"%><%     Date now = new Date();      String dateStr;     dateStr = String.format("%tY 年%tm 月%td 日",now,now,now);%><%=dateStr%>(2)编辑index.jsp文件<pre name="code" class="java"><%@ page language="java" import="java.util.*"          contentType ="text/html;charset=GB18030" pageEncoding="GB18030"%>
<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>include</title>
</head>
<body>
<!--HTML注释--!>
当前日期是:
<%@ include file ="data.jsp"%>
<br>
</body>
</html>

注意:被include指令包含的JSP页面中不要使用<html>和<body>标签,它们是HTML语言的结构标签,被包含进其他的JSP页面会被破坏页面格式。同时要注意,源文件和被包含的文件中的变量和方法名称不要冲突,因为它们最终会生成一个文件,重名将导致错误发生。2.2.3taglib指令

该指令用于加载用户自定义标签。使用该指令加载后的标签可以直接在JSP页面中使用。语法格式如下:

<%@ taglib prefix ="fix" uri="tagUriorDir"%>

prefix:该属性用于加载自定义标签的前缀。

uri:该属性用于指定自定义标签的描述符的文件位置。eg:<%@ taglib prefix ="view" uri="/WEB-INF/tags/view.tld"%%>

2.3嵌入Java代码

JSP嵌入Java代码的几种格式和用法

2.3.1代码片段

代码片段就是在JSP页面中嵌入的Java代码,也有称为脚本段或者脚本代码的。代码片段将在页面请求的处理期间被执行,可以通过JSP内置对象在页面输出内容,访问session会话,编写流程控制语句等。语法格式如下:

<% 编写java代码%>

<%     Date now = new Date();      String dateStr;     dateStr = String.format("%tY 年%tm 月%td 日",now,now,now);%>
2.3.2声明

声明脚本用在JSP页面中定义全局的(即整个JSP页面都需要引用的)成员变量或方法,它们可以被整个JSP页面访问,服务器执行时会将JSP页面转换为Servlet类,在该类中会使用JSP声明脚本定义的变量和方法定义为类的成员。

  • 定义全局变量:<%!long startTime =System.nanoTime();%>
  • 定义全局方法:<%! intgetMax(int a,int b){int Max =a>b?a:b; return max;}%>

2.3.3JSP表达式

JSP表达式可以直接把Java表达式结果输出到JSP页面中。表达式的最终运算结果将转换为字符串类型,因为在网页中显示的文字都是字符串。

JSP表达式的语法格式如下:

<%=表达式%>

表达式可以是任何Java语言的完整表达式

2.4注释

2.4.1HTML注释

HTML语言的注释不会被显示在网页中,但是在浏览器中选择查看网页源代码时,还是能看到注释信息的。语法格式如下:

<!--注释文本--!>

使用HTML注释可以为页面代码添加说明性的注释

2.4.2JSP注释

使用JSP注释,在浏览器中查看网站源代码也不会暴露注释信息。因为JSP注释是被服务器编译执行的,不会发送到客户端。

语法格式如下:

<%--注释文本--%>

2.4.3动态注释

由于HTML注释对JSP嵌入的代码不起作用,因此可以利用它们的组合构成动态的HTML注释文本。

eg:<!--<%=new Date()%>--!>

2.4.4代码注释

JSP页面支持嵌入的Java代码,这些Java代码的语法和注释方法都和Java类的代码相同,因此也可以使用Java的代码注释格式。

<%//单行注释%>

<%/*

      多行注释

      */

%>

<%/**JavaDoc注释,用于成员注释*/%>

2.5JSP动作标签

在JSP2.0规范中提供了20个标准的使用XML语法写成的动作标签,这些标签可用来实现特殊的功能,如转发用户请求,操作JavaBean,包含其他文件等。

动作标签实在请求处理阶段按照在页面中出现的顺序被执行的。JSP动作标签的优先级低于指令标签,在JSP页面被执行时将首先进入翻译阶段,程序会先查找页面中的指令标签,将它们转换成Servlet,从而设置整个JSP页面。

动作标签遵循XML语法,包括开始标签和结束标签。通用语法格式如下:

<标签名  属性 1=“值1” 属性2=“值2”.../>

或者

<标签名  属性 1=“值1” 属性2=“值2”...>

      标签内容

</标签名>

2.5.1<jsp:include>

这个动作标签可以将另一个文件的内容包含到当前JSP页面中。被包含的文件内容可以是静态文本也可以是动态代码。语法格式如下:

<jsp:include page="url" flush="false/true"/>

或者

<jsp:include page="url" flush="false/true">

     子标签

</jsp:include>

page:该属性用于指定被包含文件的相对路径。

flush:可选参数,用于设置是否刷新缓冲区。默认值是false;如果设置为true,则在当前页面输出使用了缓冲区的情况下,将先刷新缓冲区,然后再执行包含工作。

<jsp:include>标签和include标签的区别

  • 相对路径:include指令使用file属性指定被包含的文件,该属性使用文件的相对路径指定被包含文件的位置,而<jsp:include>标签以页面的相对路径来指定被包含的资源。
  • 包含资源:include指令包含的资源为静态,如HTML,TXT等;如果将JSP的动态内容用include指令包含的话,也会被当做静态资源包含到当前页面;被包含资源与当前JSP页面时一个整体,资源相对路径的解析在JSP页面转换为Servlet时发生。<jsp:include>标签包含JSP动态资源时,资源相对路径的解析在请求处理时发生。当前页面和被包含的资源是两个独立的实体,被包含的页面会对包含它的JSP页面中的请求对象进行处理,然后将处理结果作为当前JSP页面的包含内容,与当前页面内容一起发送到客户端。


2.5.2<jsp:forward>

<jsp:forward>是请求转发标签。该标签可以将当前页面的请求转发给其他Web资源,如另一个JSP页面,HTML页面,Servlet等;而当前页面可以不对请求进行处理,或者做些验证性的工作和其他工作。

例如:将首页index.jsp请求转发到用户添加页面addUser.jsp时,代码为

<html>      <head>             <title>首页</title>      </head>      <body>              <jsp:forward page="addUser.jsp"/>      </body></html>
2.5.3<jsp:param>

该标签可以作为其他标签的子标签,为其他标签传递参数。其语法格式如下:

<jsp:param name="paramName" value="paramValue"/>

name:该属性用于指定参数名称。

value:该属性用于设置对应的参数值。

<jap:forward page="addUser.jsp">      <jsp:param name ="userName" value="ming"/></jsp:forward>
上述代码在转发请求到addUser.jsp页面同时传递了userName参数,其参数值为ming。
2.5.4操作JavaBean的动作标签

<jsp:useBean>,<jsp:setProperty>和<jsp:getProperty>这3个动作标签用于操作JavaBean对象。
0 0