jsp 语法详解

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。
相关文章
相关标签/搜索