您的位置:首页 > Web前端 > JavaScript

jsp 语法详解

2012-07-13 00:00 537 查看
SP语法解

JSP文件中,可以总结出五类元素:

• 注释

• 模板元素

• 脚本元素

• 指令元素

• 动作元素

1.模板元素:

模板元素指JSP的静态HTML或者XML内容,他对JSP的显示是非常必要的,但是对于JSP的编程人员来说,就不怎么关心这些部分内容,他主要有网页的美工来完成.,它遵循的是html或者是xml语法规则!

模板元素是页面的框架,它影响页面的结构和美观效果.在jsp编译的时候,它将这些个模板元素编译到Servlet中去.当客户端请求这个jsp页面的时候Servlet会一字不变的发送到客户端去!

2.注释

JSP中的注释有多种:

1.>>>HTML/XML注释:在客户端显示的一种注释。

JSP语法:<!--comment [<% = expression %>] -->

例如:<!--这是一个JSP页面,当前时间为: <%=(new java.util.Date()).toLocaleString() %> -->

2.>>>隐藏注释:写在JSP程序中,但不发给客户。

JSP语法:<%-- comment --%>

scriptlets中的注释:郁友scriptlets包含的是JAVA代码所以Java中的注释规则也可以使用

3. 脚本元素

脚本元素主要包括:

• 声明(Delaration)

• 表达式(Expression)

• Scriptlets

声明就是在JSP程序中声明合法的变量和方法:

<%! String getDate()

{

return new Date().toString();

}

int count = 10;

%>

直观的讲表达式就是位于<%=和%>之间的代码:

<%=getDate()%>

Scriptlets位于<%和%>之间,它们是合法的JAVA代码:

<%

int i;

String color1 = "99ccff";

String color2 = "88cc33";

for(i =1 ;i<=count;i++)

{

String color = "";

if((i%2)==0) color = color1;

else color = color2;

out.println("<TR bgcolor="+color+">");

out.println("<TD>----------------------</TD>");

out.println("</TR>");

}

%>

4.指令元素

JSP中有三种指令元素,它们是:

• 页面(page)指令

• include 指令

• taglib指令

5.动作元素:

与指令元素不用的是,动作元素在请求处理阶段起作用。JSP规范定义了一系列的标准动作,它们用jsp作为前缀,这些动作有:

<jsp:userBean>、<jsp:setProgery>、<jsp:getProperty>、<jsp:param>、<jsp:include>、<jsp:forward>、<jsp:plugin>、<jsp:fallback>、<jsp:params>、<jsp:attribut>、<jsp:body>、<jsp:invoke> 、<jsp:doBody>、<jsp:element>、<jsp:text>、<jsp:output>。

指令元素:

指令用于从JSP发送一个信息的容器上,他用来设置全局变量,声明类、要实现的方法和输出内容的类型等。它们并不向客户产生任何输出,所有的指令都在JSP整个文件范围内有效。指令元素为翻译阶段提供了全局信息。

指令元素使用一下格式:<%@ directiovename arrtibute="value",attribute="value"%>。

1.页面指令:用来定义JSP文件中的全局属性。

格式如下:<%@ page attribute="value"... %>

详细语法:

<% @ page

[language="java"]

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

[contentType="TYPE;charset=CHARSET"]

[session="True|False"]

[buffer="none|8K|sizeKB"]

[autoFlush="True|False"]

[isThreadSafe="True|False"]

[info="text"]

[errorpage="relativeURL"]

[isErrorPage="True|False"]

[extentds="package.class"]

[isELIgnored="Ture|False"]

[pageEncoding="perinfo"]

%>

例程:page.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"

session="true" buffer="24kb" autoFlush="true" info="a test directive jsp page"

errorPage="error.jsp" isErrorPage="false" contentType="text/html;charset=gb2312"%>

<%@ page isELIgnored="false"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>My JSP 'page.jsp' starting page</title>

</head>

<body>

<H1>使用 page 指令的测试页面</H1>

<%=new java.util.Date().toLocaleString()%>

使用表达式语言:

\${4>3}:${4>3}

</body>

</html>

2.include指令

inlcude指令通知容器将当前的JSP页面中的内嵌的,在指定位置的资源内容包含。被包含的文件内容可以被JSP解析,这种解析发生在编译期间。

include指令格式如下:<%@ include file="filename"%>

3.taglib指令

这个指令允许页面使用者自定义标签。首先用户要开发标签库,为标签库写.tld配置文件,然后在JSP页面里使用自定义标签。

在JSP规范里,标签库得到了不断的加强,最新的JSP2.0规范中增加了JSTL标签库。JSP的标签库在页面里定义如下:<%@ taglib uri ="taglibURI" prefix="tagPrefix" %>

4.表达式语言:

表达式语言是JSP2.0新增加的技术,通过表达式语言,可以简化JSP开发,使代码整洁。表达式使用"${}"来表示

脚本元素:

JSP脚本元素是JSP代码中使用最频繁的元素,特别是Scriptlets。

1.声明(Declaration):

在JSP里,声明是一段JAVA代码,他用来定义在产生的类文件中的类的属性和方法。声明后的变量和方法可以在JSP的任何地方使用。

声明的语法格式为:<%! variable declaration

moenthod declaration(paramType param,...)%>

例程:declare.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@ page import="java.io.UnsupportedEncodingException" %>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>My JSP 'declare.jsp' starting page</title>

</head>

<%!

String trans(String chi)

{

String result = null;

byte temp[];

try

{

temp=chi.getBytes("gb2312");

result = new String(temp);

}

catch(UnsupportedEncodingException e)

{

System.out.println(e.toString());

}

return result;

}

%>

<%!

int count = 10;

%>

<body>

<%

String source = "你好!世界";

for(int i =0;i<count;i++)

{

out.println(trans(source));

out.println("<br>");

source = trans(source);

}

%>

</body>

</html>

2.表达式(Expression)

表达式在JSP请求处理阶段计算它的值,所得的结果转换成字符串并于模板数据结合在一起。语法:<%= some java expression %>

3.Scriplet

Scriplet 是一段可以在处理请求时间执行的java代码,Scriplet 包括在他可以产生输出,并经输出发送到客户的输入流里,也可以是一下诶流程控制语句。当然他中间还可以包含一些合法的Java注释。语法为 <% java code statements %>。

动作元素:

与指令元素不同,动作元素在请求处理阶段起作用。JSP动作元素是使用XML语法写成的,它采用以下两种格式中的一种:

<prefix:tag arrtibute=value arrtribute-list.../>

或者 <prefix:tag arrtibute=value arrtribute-list...>

...

</prefix:tag>

标准动作有:

<jsp:userBean>、<jsp:setProgery>、<jsp:getProperty>、< jsp:param>、<jsp:include>、<jsp:forward>、<jsp: plugin>、<jsp:fallback>、<jsp:params>、<jsp:attribut>、 <jsp:body>、<jsp:invoke>、<jsp:doBody>、<jsp: element>、<jsp:text>、<jsp:output>。

另外,还有:<jsp:root><jsp:declaration><jsp:scriptlet><jsp:expression>

介绍常用的JSP动作元素:

1.<jsp:param>

jsp:param 操作被用来以“名-值”对的形式为其他标签提供附加信息。他和jsp:include、jsp:forward和jsp:plugin一起使用,他的使用 方式为: <jsp:param name="paramName" value="paramValue"/>。

2.<jsp:include>

jsp:include 操作允许在请求时间内在现成的JSP页面里面包含静态或者动态资源。被包含的对象只有对Jspwriter对象的访问权,并且他不能设置头或者 Cookie。如果页面输出是缓冲的,那么缓冲区的刷新要优先于包含的刷新。此指令在运行上效率比<%@ page include %>指令的效率低,但可以动态增加内容。通过以下格式来使用include指令:<jsp:include page="fileName" flush="true"/>或者

<jsp:include page="fileName" flush="true">

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

....

</jsp:include>

例如:

<jsp:include page="/source/copyright.html"/>

<jsp:include page="source/copyright.html">

<jsp:include page="index.html"/>

<jsp:include page="/index.html"/>

<jsp:include page="included.jsp" />

<jspparam name="companyName" value="huayuan">

</jsp:include>

3.<jsp:forward>

jsp:forward 操作是允许将请求转发到另外一个JSP、Servlet或者静态资源文件中。请求被转向到的资源鼻息位于用JSP发送请求相同的上下文环境之中。每当遇到次操作时,就停止执行当前的JSP,转而执行被转发的资源,按以下的方式使用次操作:

<jsp:forward page="uri"/>

或者

<jsp:forward page="uri">

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

....

</jsp:forward>

例如:

<% String target="/login.jsp" %>

<jsp:forward page="<%=target%>"/>

或者:

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

<jsp:param name="userID" value="starxing" />

<jsp:param name="password" value="xxxxxx" />

</jsp:forward>

jsp:forward 操作典型的使用就是登录,入进行权限验证的页面。

4.<jsp:setProperty>:

此操作和useBean一起协作,用来设置Bean的简单属性和索引属性。<jsp:setProperty>标签使用Bean给定的setXXX()方法,在Bean中设置一个或多个属性值。

Bean的自省(introspection)用来发现出现的是那些属性和它们的名字是什么,这些属性是简单的还是索引的,它们是什么类型的等。用以下方 法来使用setProperty:<jsp:setProperty name="beanName" propertyDetail />

其中,progertyDatail可以是下面的几个中的一个:

property="*"

property="propertyName" param="parameterName"

property="propertyName"

property="propertyName" value="propertyValue"

例如:

<jsp:useBean id="usersession" scope="session" class="com.user.UserSession">

<jsp:setProperty name="usersession" property="name" value="starxing" />

</jsp:useBean>

或者:

<jsp:useBean id="usersession" scope="session" class="com.user.UserSession" />

<jsp:setProperty name="usersession" property="name" value="starxing" />

(1)name="beanName":这个是必须的属性。他的值为Bean的名字,在这之前要用 jsp:userBean引入名称。

(2)propertyDetails

可以通过下面四种方法指定属性的信息

• property="*":这是一个设置Bean属性的快捷方式,在Bean中,属性的名字、类型必须和request对象中的参数名称向匹配。

• property="propertyName":使用request中的一个参数来定义Bean中的一个属性值。在语法中,property指定Bean的属性名,并且Bean属性和request参数名应相同.

• property="propertyName" param="paramterName":使用request中的一个参数来定义Bean中的一个属性值。在语法中,property指定Bean的属性名,param指定了那个参数的和属性值相等。

• property="propertyName" value="PropertyValue":把Value的值赋给Bean的属性值。

5.<jsp:getProperty>

jsp:getProperty 是对jsp:setProperty的一个补充,他用来访问一个Bean的属性。

使用方法为:<jsp:getProperty name="beanName" property="propertyName" />

例如:<jsp:useBean id="usersession" scope="session" class="com.user.UserSession" />

<jsp:getProperty name="usersession" property="name" />

<jsp:getProperty name="usersession" property="password" />

6.<jsp:useBean>

<jsp:useBean> 标签用来在JSP页面中创建一个Bean的实例,并指定他的名字以及作用分为。语法如下:<jsp:useBean id="id",scope="page|request|session|application" typeSpec />

其中ID是一个大小写相关的名字,用来表示这个实例;scope表示此对象可以使用的范围;typeSpec可以是以下四个中的一个:

• class="className"

• class="className" type="typeName"

• Beanclass="beanName" type="typeName"

• type="typeName"

scope介绍:其实就是后面的内建对象的四个重要的属性范围:

• page:能够在包含<jsp:useBean>标签的JSP文件中使用,页面执行完毕,就会实效

• request:在请求范围内有效。

• session:从创建Bean开始,就可以在Session有效范围内使用,这个Bean对于Jsp是共享的。注意:在创建Bean的JSP页面中<%@ page %>指令中必须指定session=True。

• application:同Session一样,从创建Bean开始,就可以在任何使用相同application的JSP文件中使用Bean。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: