(作者:天译编译 2000年12月01日 14:26)

JavaServerTM Pages(JSP)技术为我们提供了一种建立动态网页的简单方法,而且也简化了构造web程序的工作。本文从一个开发人员的角度对JSP技术做了一个全面介绍(并提供了一些JSP实例程序)。
前言
JavaServer Pages技术可以让web开发人员和设计人员非常容易的创建和维护动态网页,特别是目前的商业系统。作为JavaTM技术的一部分,JSP能够快速开发出基于web、独立于平台的应用程序。JSP 把用户界面从系统内容中分离开来,使得设计人员能够在不改变底层动态内容的前提下改变整个网页布局。
那么什么是JavaServer Page呢?简单的说,一个JSP网页就是在HTML网页中包含了能够生成动态内容的可执行应用程序代码。此应用程序可能包含JavaBeanTM,JDBCTM对象,Enterprise Java BeanTM (EJB)和Remote Method Invocation (RMI)对象,所有的部分都可以非常容易的从JSP网页上访问到。例如,一个JSP网页可以包含 HTML代码所显示的静态文本和图像,也可以调用一个JDBC对象来访问数据库;当网页显示到用户界面上以后,它将包含静态HTML内容和从数据库中找到相应的动态信息。
  在JSP网页中,要把用户界面和应用程序分开可以考虑在网页设计人员和开发人员之间执行一个非常方便的授权任务。它也允许开发人员去建立灵活的代码,从而非常容易的进行更新和重复利用。由于JSP网页能够根据需要自动进行编译,web设计人员无须重新编译应用程序逻辑就可以改变表述代码。这也使得JSP与Java servlet(它是JavaSever Pages功能的扩展)相比成为一种可以更灵活生成动态web内容的方法。

JSP和Servlet
  如果你已经用过Java servlet,那么你就会知道servlet可以让你建立动态生成的网页,而网页中包含有从服务器方的Java对象中所获得的数据。但是你也得知道servlet 生成网页的方法就是在Java类中嵌入HTML标签和表述代码。这就意味着改变表述代码需要修改和重新编译servlet源文件。因为设计HTML页面的设计人员可能与编写servlet代码的开发人员不是同一个人,更新基于servlet的web应用程序就成了一件非常棘手的事情。

  Enter JavaServer Page是Servlet API的一个扩展。事实上,JSP网页在编译成servlet之前也可以使用,所以它们也具有servlet的所有优势,包括访问Java API。由于JSP 是嵌入到servlet中关于应用程序的一般表述代码,所以他们能够被看成一种“彻底”的servlet。

  JSP网页主要提供了一种建立servlet的高水平方法,它还带来了其他的优点。即使你已经为web应用程序编写了servlet,使用JSP仍然有很多优势:

  JSP网页可以非常容易的与静态模板结合,包括HTML 或XML 片段,以及生成动态内容的代码。

  JSP网页可以在被请求的时候动态的编译成servlet,所以网页的设计人员可以非常容易的对表述代码进行更新。如果需要的话,JSP网页还可以进行预编译。

  为了调用JavaBean组件,JSP标签可以完全管理这些组件,避免网页设计人员复杂化应用程序。

  开发人员可以提供定制化的JSP标签库。

  网页设计人员能够改变和编辑网页的固定模板部分而不影响应用程序。同样,开发人员也无须一个个编辑页面而只须对组件进行合理的改变。

  通常,JSP允许开发人员向许多网页设计人员分发功能性应用程序。这些设计人员也不必知道Java编程语言或任何servlet代码,所以他们能够集中精力去编写HTML代码,而编程人员就可以集中精力去建立对象和应用程序。

建立JSP页面
  粗略看来,JSP网页和HTML (或XML)网页非常相似——都包含用标签封装的文本(在“<>”之间被定义)。当HTML标签被用户的浏览器处理以显示网页的时候,JSP标签能够通过web服务器的处理来生成动态内容。这些JSP标签能够定义个别的操作,比如说用一个方法来调用JavaBean,或者包含标准的Java代码块(也就是所谓的scriptlet),这些代码块能够在网页被访问的时候被执行。

  为了了解它们如何使用,下面我们介绍了一个JSP网页的简单例子,在这个JSP网页中包含了静态HTML内容和从JavaBean生成的动态数据。当用户访问这个网页的时候,它可以显示当前的日期,并根据当前的时间增加相应的问候语(例如“早上好”和“下午好”)。为简单起见,JSP标签显示在块中:

  

  

  

Welcome



  

Today is



  

  


      
  • Day:

      
  • Year:

      


  

  

  
  if (time == Calendar.AM) {

  %>

  早上好

  
  }

  else {

  %>

  下午好

  
  }

  %>

  

  

  上面的JSP例子是不是很简单?我们在JSP网页中使用了几个不同的组件。这些组件包括下面的内容:

  JSP action (或JSP标签)使用了多种函数并扩展了JSP的功能。JSP action使用的是一种类似XML的语法,并且被用来处理JavaBean组件。在上面的例子中,jsp:useBean action初始化了一个JavaBean ,JavaBean将在网页的后面部分被用到:

  

  如果在网页中需要获得和设置这个Bean的属性,另一个JSP action将被给出,使用的是下面的语法:

  

  

  当网页被编译成一个servlet的时候,Directive将被JSP引擎处理。Directive被用来设置页面级的指令、从外部文件插入数据以及制定定制的标签库。Directive被定义在之间。 在上面的例子中,Directive定义了页面所使用的语言(Java),为了关联Java类需要植入代码并指定一个将要插入页面底部的HTML文件内容:

  

  

  声明与Java中的变量声明相似,它也是为了后面表达式或scriptlet的需要来定义变量。声明被定义在之间。在上面的例子中,“int”声明并给出了一个当前时间的相应值 (AM 或 PM):

  

  表达式可以是变量或常量,它插在由web服务器所返回的数据里,并用来定义。在上面的例子中,表达式将调用JavaBean组件并在页面中插入结果数据:

  

  

  Scriptlet将作为一个Java代码块植入JSP页面中。Scriptlet代码被一一插入由页面所产生的servlet中,它被定义在之间。上面例子中的scriptlet可以根据当前用户产生相应的时间和问候语:

  
  if (time == Calendar.AM) {

  %>

  早上好

  
  }

  else {

  %>

  下午好

  
  }

  %>

  注释部分和HTML的注释相似,当在执行的时候JSP引擎将去掉对注释的解释。这就意味着JSP注释并不返回到用户的浏览器中。不象HTML注释被定义在标签之间,JSP注释被定义在之间。例如:

  

一个开发人员眼中的JSP技术(上)的更多相关文章

  1. html5 拖拽及用 js 实现拖拽功能的示例代码

    这篇文章主要介绍了html5 拖拽及用 js 实现拖拽,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  2. amaze ui 的使用详细教程

    这篇文章主要介绍了amaze ui 的使用详细教程,本文通过多种方法给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. swift皮筋弹动发射飞机ios源码

    这是一个款采用swift实现的皮筋弹动发射飞机游戏源码,游戏源码比较详细,大家可以研究学习一下吧。

  4. 10.5 Swift类方法

    /**类型方法通过类名称来调用的方法,就像类型属性一样。

  5. Swift与Js通过WebView交互

    开发环境:Swfit2.3XCode8.2基础概念jscontext,jscontext是代表JS的执行环境,通过-evaluateScript:方法就可以执行一JS代码JSValue,JSValue封装了JS与ObjC中的对应的类型,以及调用JS的API等JSExport,JSExport是一个协议,遵守此协议,就可以定义我们自己的协议,在协议中声明的API都会在JS中暴露出来,才能调用Swif

  6. JSCore swift

    如果双方相互引用,会造成循环引用,而导致内存泄露。以上是Jscore的基本使用,比较简单

  7. Swift WKWebView的js调用swift

    最近项目需求,需要用到JavaScriptCore和WebKit,但是网上的资源有限,而且比较杂,都是一个博客复制另外一个博客,都没有去实际敲代码验证,下面给大家分享一下我的学习过程。

  8. Swift WKWebView的swift调用js

    不多说,直接上代码:在html里面要添加的的代码,显示swift传过去的参数:这样就实现了swift给js传参数和调用!

  9. 在 Swift 專案中使用 Javascript:編寫一個將 Markdown 轉為 HTML 的編輯器

    你有強烈的好奇心,希望在你的iOS專案中使用JavaScript。jscontext中的所有值都是JSValue對象,JSValue類用於表示任意類型的JavaScript值。因此,我們既需要寫Swift代碼也要寫JavaScript代碼。此外,我們還會在JavaScript中按照這個類的定義來創建一個對象并對其屬性進行賦值。從Swift中呼叫JavaScript就如介紹中所言,JavaScriptCore中最主要的角色就是jscontext類。一個jscontext對象是位於JavaScript環境和本

  10. swift - WKWebView JS 交互

    本文介绍WKWebView怎么与js交互,至于怎么用WKWebView这里就不介绍了HTML代码APP调JS代码结果JS给APP传参数首先注册你需要监听的js方法名2.继承WKScriptMessageHandler并重写userContentController方法,在该方法里接收JS传来的参数3.结果

随机推荐

  1. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  2. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  3. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  4. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  5. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  6. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  7. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  8. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  9. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. Spring JdbcTemplate执行数据库操作详解

    JdbcTemplate是Spring框架自带的对JDBC操作的封装,目的是提供统一的模板方法使对数据库的操作更加方便、友好,效率也不错,这篇文章主要介绍了Spring JdbcTemplate执行数据库操作,需要的朋友可以参考下

返回
顶部