Chinaunix首页 | 论坛 | 博客
  • 博客访问: 638281
  • 博文数量: 125
  • 博客积分: 8703
  • 博客等级: 中将
  • 技术积分: 1102
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-10 17:48
文章分类

全部博文(125)

文章存档

2012年(2)

2011年(3)

2010年(11)

2009年(1)

2008年(12)

2007年(58)

2006年(38)

分类: Java

2006-03-02 15:05:07

              JSP语法详解

                                             张彦星

JSP构成

JSP文件中,可以总结出五类元素:
  • 注释
  • 模板元素
  • 脚本元素
  • 指令元素
  • 动作元素

1.模板元素

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

2.注释

JSP中的注释有多种:

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

JSP语法:

例如

隐藏注释:写在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("");
          out.println("----------------------");
          out.println("");
          }
          %>

4.指令元素

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

  • 页面(page)指令
  • include 指令
  • taglib指令

5.动作元素

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

  

指令元素

   指令用于从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"%>


 
   
    My JSP 'page.jsp' starting page
   
   
   
   
   
   
   
   
 
 
 
   

使用 page 指令的测试页面


    <%=new java.util.Date().toLocaleString()%>
    使用表达式语言:
    \${4>3}:${4>3}
 


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+"/";
%>



 
   
   
    My JSP 'declare.jsp' starting page
   
   
   
   
   
   
   
   
 
  <%!
     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;
  %>
 
      <%
         String source = "你好!世界";
         for(int i =0;i
         {
         out.println(trans(source));
         out.println("
");

         source = trans(source);
         }
      %>
 


2.表达式(Expression)

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

3.Scriplet

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

动作元素

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

或者


...

标准动作有:

   、< jsp:param>、

另外,还有:

介绍常用的JSP动作元素
1.
jsp:param 操作被用来以“名-值”对的形式为其他标签提供附加信息。他和jsp:include、jsp:forward和jsp:plugin一起使用,他的使用方式为:     
2.
jsp:include 操作允许在请求时间内在现成的JSP页面里面包含静态或者动态资源。被包含的对象只有对Jspwriter对象的访问权,并且他不能设置头或者Cookie。如果页面输出是缓冲的,那么缓冲区的刷新要优先于包含的刷新。此指令在运行上效率比<%@ page include %>指令的效率低,但可以动态增加内容。通过以下格式来使用include指令:或者


....


例如:







3.

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

或者

....

例如:

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

或者


  
  

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

4.

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

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

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

property="*"
property="propertyName" param="parameterName"
property="propertyName"
property="propertyName" value="propertyValue"

例如:



或者:


(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:setProperty的一个补充,他用来访问一个Bean的属性。
使用方法为:
例如:
  
  
6.
标签用来在JSP页面中创建一个Bean的实例,并指定他的名字以及作用分为。语法如下:
其中ID是一个大小写相关的名字,用来表示这个实例;scope表示此对象可以使用的范围;typeSpec可以是以下四个中的一个:
  • class="className"
  • class="className" type="typeName"
  • Beanclass="beanName" type="typeName"
  • type="typeName"

scope介绍:
  • page:能够在包含标签的JSP文件中使用,页面执行完毕,就会实效
  • request:在请求范围内有效。
  • session:从创建Bean开始,就可以在Session有效范围内使用,这个Bean对于Jsp是共享的。注意:在创建Bean的JSP页面中<%@ page %>指令中必须指定session=True。
  • application:同Session一样,从创建Bean开始,就可以在任何使用相同application的JSP文件中使用Bean。

阅读(2136) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~