分享

JSP页面结构(1)

 wangxuqin 2010-10-05
在一个JSP页面中,主要分为3种元素: 编译指令、操作指令和JSP指令。
(1)编译指令告诉JSP的解析引擎(比如Tomcat),需要在编译时做什么动作,比如引入其他的类,设置JSP的页面用什么语言编码。
(2)操作指令则是在JSP页面被请求时,动态执行的,比如根据某个条件动态跳转到另外一个页面。
(3)JSP代码就是我们嵌入JSP页面的Java代码,这又分为两种: 一种是JSP页面中一些变量方法的声明,在声明时,使用"<!%"和"%>"
    标记;另一种是用"<%"和%>"包含的JSP代码段。
 
编译指令:
可以通过一定的指令,让JSP容采取必要的动作。例如,可以指定一个专门的错误处理页面,当JSP页面出现错误时,可以由JSP
容器自动地调用处理页面。
page指令
    page指令是针对当前页面的指令。page指令"<%@"和"%>"字符串构成的标记符来指定。在标记符中是代码体,包括指令的类型和值。
例如,“<%@page import="java.sql.*"%>”。告诉JSP容器将java.sql包中的所有类都引入当前的JSP页面。
常用的page指令标记有8个:language、extends、import、errorPage、isErrorPage、contentType、isThreadSafe和session。
(1)language设置JSP页面中用到的语言,默认值为"Java",也是目前唯一有效的设定值。使用的语法是"<%@ page language="java"%>"。
(2)extends设置目前JSP页面要继承的父类,一般情况下不需要进行设置。在默认情况下,JSP页面的默认父类是FttpIsBase。
    例如当前JSP页面要继承mypackage包下的myclass 类,相应的声明语句为: <%@ page extends="mypackage.myclass" %> 。
(3)import设置当前JSP页面中要用到的Java类,这些Java类可能是SunJDK中的类,也可能是程序员自己自定义的类。
    例如<%@ page import="java.sql.*,java.util.*"%>。 有些类在默认情况下已经加入到当前JSP页面,而不需要特殊声明,包括4个类:
    java.lang.*; java.servlet.*; java.servlet.jsp.*; java.serlet.http.*。
(4)errorPage用来设定当JSP页面出现异常(Exception)时,所要转向的页面。如果没有设定,则JSP页面会用默认的页面来显示出错信息。
   例如<%@ page errorPage="/error/error_page"%> 。
(5)isErrorPage用来设定当前的JSP页面是否作为传回错误页面的网页,默认值是"false"。如果设定为"true",则JSP容器会在当前的页面
   中生成一个exception对象。
(6)contentType属性用来设定传回网页的文件格式和编码方式,一般使用"text/html;charset=GBK"。
(7)isThreadSafe定义JSP容器只想能够JSP程序的方式,默认值为"true",代表JSP容器会以多线程方式运行JSP页面。当设定值为"false"时,
   JSP容器会以单线程方式运行JSP页面。
(8)session定义当前JSP页面中是否要用到session默认值为"true"。
include指令
   inlcude指令用户过来指定怎样把另一个文件包含到当前的JSP页面中,这个文件可以是普通的文本文件,也可以是一个JSP页面。
例如<%@ include file="logo.htm"%>。
   采用include指令,可以实现JSP页面的模块化,使JSP的开发和维护变得非常简单。
taglib指令
   taglib指令允许页面使用标记扩展(定制标记),命名了标记库。在JSP页面里遇到定制的标记时,引擎将找到在该标记库中的标记
并且找到要实施操作——实际上是执行Java代码。taglib指令的语法为: <%@ taglib uri="tagLibraryURI" prefix="tagPrefix"%>。
(1)uri是一个URI标识标记库描述器,一个标记库描述器用来唯一的命名一组定制的标记,并且告诉包容器如何处理特殊的标记。
(2)tagPrefix定义一个prefix:tagname形式的字符串前缀,用于定义定制的标记。所保留的前缀为jsp、jspx、java、servlet、sun和
   sunw。
操作指令:
JSP编译指令是让JSP容器自动采取动作,但对于Web开发人员,有些时候想要自己控制JSP页面的运行,这时可以采用JSP 操作指令
操作指令包括:jsp:include指令、jsp:froward指令、jsp:param指令、jsp:useBean指令、jsp:setProperty指令和jsp:getProperty指令等。
(1)jsp:include指令
   jsp:include标准工作用于在当前的JSP页面中叫爱如警惕啊和动态的资源。语法格式为:<jsp:include page="test.htm"/> 。
   jsp:include指令必须以"/"结束,功能和include指令相同。
(2)jsp:forward操作指令用于把当前的JSP页面转发到另一个页面上。基本语法为:<jsp:forward page="test2.jsp"/> 。
   使用该功能时,浏览器的地址栏中地址不会发生任何变化。
(3)jsp:param指令
   使用jsp:param操作指令可以在执行jsp:forward操作动作时,追加参数,按照“名字/值”的方式进行传递。
   jsp:param操作指令标记"<jsp:param>"开始,以"/>"结束。比如"<jsp:param name="oper" value="add"/>"。可以将jsp:forward操作指令
   和jsp:param操作指令结合到一起来使用。
   <jsp:forward page="mypage.jsp">
   <jsp:param name="param1" value="value1"/>
   <jsp:param name="param2" value="value2"/>
   </jsp:forward>
   跳转到的页面可以利用request对象来读取这些参数的值。jsp:useBean指令、jsp:setPropert指令和jsp:getProperty指令都是用来操作
   JavaBean的。
JSP代码:
JSP代码包括两种: 一种是JSP页面中一些变量和方法的声明,在声明时,使用"<%!...%>"标记;另一种是常用到的"<%...%>"包含JSP代码块。
(1)变量和方法
   在"<%!...%>"标记符号之间声明变量和方法,变量类型可以是Java语言允许的任何数据类型。在JSP页面被编译执行的是时候,整个页面被
   编译成一个类,这些变量是JSP页面类的成员变量。
   这些变量被共享的任何一个用户的操作都会影响到其他用户。
   <%@ page contentType="text/html;charset=GBK"%>
   <%! int i=0; %>
   <%
      i++;
      out.print(i);
   %>个人访问本站
  
   也可以声明函数,一般会在函数前面就加上synchronized关键字,功能是当前一个用户在执行该方法时候,其他的用户必须等待,直到该
   用户完成操作。
   <%@ page contentType="text/html;charset=GBK" %>
   <%!
      int number=0;
      synchronized void countPeople()
      {
         number++;
      }
   %>
   <%
      countPeople();
   %>   
   你是第<%out.print(number);%>个访问本站的客户
 
 
(2)代码块
   可以在"<%...%>"之间插入Java程序片,一个JSP页面可以有许多程序片,这些代码将被JSP服务器按照顺序执行。在一个代码块中声明的变
   量是JSP页面的局部变量,只在当前页面中有效。
   <%@ page contentType="text/html;charset=GBK" %>
   <% int i=0; %>
   <%
      i++;
      out.print(i);
   %>个人访问本站
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多