JSP 学习(1)

来源:互联网 发布:淘宝店的分析 编辑:程序博客网 时间:2024/05/23 15:05

    JSP technology 是J2EE家族重要组成,尤其在web app中。最近学习JSP,所以写下这个系列的读书笔记。在第一篇文章中,主要介绍几个问题:

1、什么是JSP?

     JSP是sun公司1999年推出的一个重要j产品。从形式上看,jsp是拓展名为.jsp的一个文件,它是在普通的HTML文件中加入特殊的JSP元素形成的。但是JSP与HTML有很大的不同点。HtML在服务器加到浏览器的请求后,直接将HTML文件,而对于JSP文件,它需要translate成servlet(servlet本质上就是java类),servlet执行完毕之后产生一个pure html,最后返回给浏览器。所以JSP必须在JSP容器中才能运行。 JSP的最根本目的是用于创建动态的网页,可以根据用户身份,浏览器类型,用户输入而返回不同的HTML页面。在实际项目中,JSP常常跟servlet、javaBean等一起是永恒,将presentation和processing分离开来。

 

     在JSP页面中,出了常规的HTML标签(被称为template text)外,还包含特殊的JSP elements。jsp元素包含以下4种:

  • Directive Element
  • Action Element
  • Scripting Element
  • Java Expression Language(EL)

2、JSP Element介绍:

2.1 Directive Element:

指令元素(Directive)用于控制整个JSP页面的格式、属性等,所以它不显示在JSP页面中。Directive Element都是以<%@开始,%>结束,指令元素中又有三类,其格式分别如下:

A:<%@ page atribution=" " ... %> 其中的省略号表示属性名及属性值(成为属性对)可以有多个。这一指令元素用于定义独立页面的属性,例如错误处理、会话跟踪等,具体的指令功能由属性对来定义。例如,<%@ page contentType="text/html " %>表示返回的页面类型为HTML文档,所以在返回消息头中的content-Type值就是text/html.

B:<%@ include atribution=" " ... %> 这一指令在翻译阶段引入一个文件。翻译阶段指的是将JSP文件转化成.java文件的过程,由容器来完成

C:<%@ taglib atribution=" " ... %> 声明在页面中使用的标记库。例如,:<%@ taglib prefix="c " uri="http://java.sun.com/jsp/jstl/core" %>声明了一个标准的标签库,也就是在JSP的官方文档中定义。标记库将在本文后面介绍。不明白可先跳过。

 

2.2 Action Element: 

动作(Action)元素定义了一系列行为,当加载JSP文件时遇到Action Element,容器执行相应的行为(程序段)并将返回结果插入到所形成的HTML文件中。动作元素也可以大致分为三类:Standard Action、Custom Action  、JSTL(java standard tag library)。

1)Standard:

     先举个例子,<jsp:useBean id="unique-tring" class="package.class"/>,加入这一元素以为中可以在该页面中使用package.class这个java bean。所有的标准标签都是以jsp为前缀的,之后是冒号,再往后是action name,还可以接着定义一些属性对。接着刚才的例子,引入了package.class之后,就可以读写这个java bean的属性值,分别使用这两个标签:<jsp:getProperty name="unique-string"  property="property-name"/> 、<jsp: setProperty  name="unique-string" property="property-name" value="property-value"/>.读取Bean属性后,会将属性值插入到html文件中,设置属性值则没有插入任何内容。

 

2)Custom:

     JSP文档中已经定义了一些标准标签,可以直接使用(不需要在Directive Element中声明)。但是对于具体的应用程序而言,标准的标签库可能无法满足要求,所以有经验的开发人员就可以自己定义一套标签库,在这里不作介绍。

 

3)JSTL:

     JSTL是世界各地自身的java开发人员组成一个团队定义的custom action,同时写入到jsp的官方文档中,可以在Apache网站中下载到具体实现。JSTL共有5个类型,具体见下面图,要使用JSTL,需要安装JSTL,并在JSP文件中声明,即使用:<%@ taglib prefix=" " uri=“”  %>元素声明。具体的前缀及uri在下图。      

每个类型的JSTL的具体功能请参考官方文档。

当加载JSP文件时,如果遇到标签(Action),无论是java标准标签库还是自定义标签库,容器将根据Directive element的声明,找到相应的TLD(标签描述文件),根据action element中的action name(冒号之后的那个)及TLD中的mapping关系,找到相应的实现类,执行实现类之后返回结果,插入页面。

 

2.3 Scripting Element

脚本元素则是在JSP页面中用script标签插入java代码。虽然这是可以实现的,但是在JSP代码中插入具体的逻辑实现,会使得页面的维护很难进行,无法将presentation和business logic分开,因此使用时应特别小心,尽量少用。在这里不作介绍。

 

2.4 Expression Language

     EL的引入使得JSP设计人员可以用类似于html元素的形式处理请求的数据,以javaBean、数据库进行互动,提高了网页的动态性。所有的EL均以美元符号开始,后面跟{},EL的具体内容放在大括号中。举个最简单的例子:

<p> The sum of 1,2,3 is $(1+2+3}</p>将会在浏览器上显示The sum of 1,2,3 is 6.

 

刚开始入门,如果错误还请指出,同时欢迎各位网友一起交流。

原创粉丝点击