JSP基础总结之一

JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。

 

总体而言,jsp就是html+java程序段。

 

1,Jsp语法

 

1.1,Jsp数据定义

声明 <%! 声明 %> :<%! int i=0; %>

表达式 <%= 表达式 %>: <%= a*b*c %>(变量已经在页面当中声明)

程序代码段 <% 程序代码片段 %>

<% double r=5.0,s;

       s=3.14*r*r;

       out.print(s);<!--out对象可以将数据打印到页面-->

%>

 

 

1.2,Jsp指令

 

JSP指令不是JSP代码中逻辑的一部分。相反,JSP指令只是为容器提供指导和指示,JSP指令会被JSP引擎转换为相应的Java代码,但这些Java代码并不直接产生任何可见输出,而是告诉JSP引擎如何处理JSP页面,或是如何生成Servlet类。

 

JSP指令包括:page指令;taglib指令;include指令。

 

指令的形式一般为:<%@ 指令名 [...一个或多个属性...]%>。指令类似于动作,也可以有一些属性。@符号和指令名之间的空格以及最后一个属性与结束%>之间的空格都是可选的。

 

处理一个JSP页面:容器的角度。

 

容器完成的处理划分为不同阶段。

      1.第一阶段,JSP页面实际上首先转换为Java源代码。这称为翻译阶段,在这个阶段,称JSP页面被翻译为JAVA源代码。java源代码按纯文本格式生成,而且是人可读的。

      2.第二阶段,Java源代码编译为可执行的字节码。这称为编译阶段。所得到的可执行字节码是二进制格式,可以由任何JVM执行。

      3.第三阶段,执行已编译的JSP二进制码时,它会处理到来的请求。这个阶段称为请求阶段。这个阶段发生的所有事情都称为在请求时出现。

 

      一旦被翻译和编译,就能重用JSP二进制码来处理每一个到来的请求。这就不必为每个请求都完成翻译和编译阶段。不过,如果JSP有修改,容器必须发现这个修改,并重新翻译和重新编译页面。

 

page指令

page 指令是最复杂的JSP指令,它的主要功能为设定整个JSP 网页的属性和相关功能。具体是设置哪种功能,是由其属性指定的。


基本语法
page 指令是以<%@ page 起始,以%>结束:
<%@ page attribute1=“value1” attribute2= “value2” attribute3=…%>
然而像所有JSP 标签元素一样,page 指令也支持另一种以XML为基础的语法,如下所示:
<jsp:directive.page attribute1="value1" attribute2= "value2" />

 

通常page指令位于JSP页面的顶端,在同一个JSP页面中可以有多个page指令,但不能重复指定同样的page指令。

page 指令中包含的属性:

      1) import
      语法:<
%@page import="package.class|package.*,..."%>
      说明:类似于在java中导入包一样,如果JSP页面中用到一些类,需要使用page指令的import属性导入使用的类。import设置当前JSP页面中要用到的Java类,这些java类可能是JDK的类,也可能是自定义的类。在JSP页面中也默认加入"java.lang.*;"、"java.servlet.*"、"java.servlet.jsp.*;"、"java.servlet.http.*;"。

     2) session
      语法:<%page session = "true|false" %>
      说明:定义当前页面是否参与HTTP会话。当设置为true时,可以获得隐含的名session的对象,为false时,则不可以获得该对象。默认为true。

     3) contentType
      语法:<%page contentType = "mimeType[;charset=characterSet]"%>
      说明:使用contentType属性可以设置JSP页面应答的MIME类型,默认值为"text/html"。另外可以定义JSP页面的字符编码方式,默认值为ISO-8859-1,即英文文本。如果在JSP中使用中文,则可以定义字符编码方式为GBK。

     4) isThreadSafe(慎用)
      语法:<%page isThreadSafe = "true|false" %>
      说明:定义当前页面是否支持线程安全。若为true,则该页面可能同时收到JSP引擎发送的多个请求;反之,JSP引擎会对收到的请求进行排除,当前页面在同一时刻只处理一个请求。默认为true。

      5) info
      语法:<%page info = "some text" %>
      说明:info属性允许开发人员包含有关页面的文本信息,可以通过Servlet.getServletInfo()方法得到该字符串。

      6) language
      语法:<%page language = "java" %>
      说明:language属性定义JSP使用的脚本语言,JSP容器允许使用其他语言进行JSP开发,但这些语言需要满足JSP规范中定义的规则。默认为java。

     7)extends
      语法:<%page extends = "jsp base class" %>
      说明:extends属性用来指定生成的JSP Servlet的基类。默认为扩展JspBase类。

     8) buffer
      语法:<%page buffer = "8k" %>
      说明:buffer属性用来指定响应的缓冲模型。默认值为8k。若设置为none,则表示该JSP页面不使用缓冲,所有响应输出孝将被PrintWriter直接写到ServletResponse中。

     9) autoFlush
      语法:<%page autoFlush = "true|flase" %>
      说明:

     10) errorPage
      语法:<%page errorPage = "true|flase" %>
      说明:errorPage用来设定当JSP页面出现异常时,所要转身的页面。如果没有设定,则JSP容器会用默认的当前页面来显示出错信息。例如,<
%@page errorPage="/error/error_page.jsp"%>

     11) isErrorPage
      语法:<%page isErrorPage = "true|flase" %>
      说明:isErrorPage指定当前页面是否是错误处理页面。默认值为false。若设定为true,则JSP容器会在当前页面中生成一个exception对象。

 

Include指令

在页面转换期间将文件包含到jsp页面,include指令用于在jsp页面中静态包含一个文件,该文件可以是jsp页面,html页面,文本文件或一段Java代码等。

1)include语法:
  <%@ include file="url"%>
  file的属性值被解释为相对于当前jsp文件的URL.

 

2)在被包含的文件中不要使用和主页重复的HTML标签。这样会影响原jsp文件中同样的标签导致错误。
因为原文件和被包含文件可以互相访问彼此定义的变量和方法,所以要避免变量和方法在命名上的问题。
 
注意事项

包含文件中要避免使用<html>、</html>、<body>、</body>,因为这将会影响在原来JSP 网页中同样的标签,这样做有时会导致错误;
<%@ include %>指令是一种静态的SSI(服务器端包含)。
1、所谓的静态是指file不能为一变量,例如:
          <% String URL=“JSP.html” ; %>
而以下指令是错误的:
          <%@ include file = “<%= URL %>” %>
2、SSI意味着不可以在file 所指定的文件后接任何参数,如下:
              <%@ include file = "javaworld.jsp?name=browser" %>
同时,file 所指的路径必须是相对于此JSP 网页的路径。

 

Taglib 指令

  定义一个标签库以及其自定义标签的前缀.

  JSP 语法

  <%@ taglib uri="URIToTagLibrary" prefix="tagPrefix" %>

  例子

  <%@ taglib uri="http://www.jspcentral.com/tags" prefix="public" %>

  <public:loop>

  </public:loop>

      <%@ taglib uri="/struts-tags" prefix="s" %>

      <s:form></s:form>

  描述

  <% @ taglib %>指令声明此JSP文件使用了自定义的标签,同时引用标签库,也指定了他们的标签的前缀。

  这里自定义的标签含有标签和元素之分。因为JSP文件能够转化为XML,所以了解标签和元素之间的联系很重要。标签只不过是一个在意义上被抬高了点的标记,是JSP元素的一部分。JSP元素是JSP语法的一部分,和XML一样有开始标记和结束标记。元素也可以包含其它的文本,标记,元素。比如,一个jsp:plugin元素有<jsp:plugin>开始标记和</jsp:plugin>结束标记,同样也可以有<jsp:params>和<jsp:fallback>元素.

  你必须在使用自定义标签之前使用<% @ taglib %>指令,而且你可以在一个页面中多次使用,但是前缀只能使用一次

  属性

  uri="URIToTagLibrary"

  Uniform Resource Identifier (URI)根据标签的前缀对自定义的标签进行唯一的命名,URI可以是以下的内容:

  Uniform Resource Locator (URL), 由 RFC 2396 定义, 查看 http://www.hut.fi/u/jkorpela/rfc/2396/full.html

  Uniform Resource Name (URN), 由 RFC 2396定义

  一个相对或绝对的路径

  prefix="tagPrefix"

  在自定义标签之前的前缀,比如,在<public:loop>中的public,如果这里不写public,那么这就是不合法的。请不要用jsp, jspx, java, javax, servlet, sun, 和sunw做为你的前缀

 

最后加上jsp注释

1,输出注释:

    这些是显示注释,不在页面中显示,但可以在客户端HTML源文件中看到,会被JSP引擎解释。

2,隐藏注释:

    <%-- 注释内容 --%>

    隐藏注释和输出注释不同的是,这个注释虽然写在jsp程序当中,但是不会发送给用户,因为jsp引擎会忽略这些内容。

 

    例如<!-- This page is loaded on <%= (new java.util.Date()).toLocaleString() %> -->

    在客户端的HTML源代码中显示为: 
    <!-- This page was loaded on May 5, 2010 -->

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值