JSP简介
- 格式:docx
- 大小:23.88 KB
- 文档页数:8
JSP程序设计课程设计方案1 概述1.1 JSP简介和运行原理JSP(Java Server Pages)是由Sun Microsystems 公司倡导、许多公司参与一起建立的一种动态网页技术标准,JSP技术在Servlet技术基础上发展起来的,它正在飞速发展中,现已成为Java服务器编程的重要组成部分。
它虽然还未成型,但是它必将和J2EE(Java 2 Enterprise Edition)一起发展。
JSP是结合markup(HTML和XML)和Java代码来处理一种动态页面。
每一页第一次被调用时,通过JSP引擎自动被编译成Servlet,然后被执行,以后每次调用时,执行编译过的Servlet。
JSP提供了多种方式访问Java class、Servlet、Applets和Web Server,因此,Web应用的功能可以分成多个明确定义公用接口的组件,通过JSP将它们结合在一起。
在JSP第一次获得来自于客户端浏览器的请求时,JSP文件将被JSP引擎(JSP engine)转换成一个Servlet,即将”.jsp”文件编译成Java Class文件。
当Servlet引擎接收到请求后,如果设置了使用最新的JSP,它就会去找JSP文件,检查该文件在上次编译后是否改动过。
如果改动过,就会重新编译生成新的Servlet,最终将请求转交给编译好的Servlet 引擎执行。
1.2 开发背景随着网络与计算机信息技术的发展,信息技术作为工具被引入商务活动的领域从而产生了电子商务。
电子商务就是利用信息技术将商务活动的各实体通过互联网络结合从而实现商务活动过程。
目前,网上书店在国际互联网上可以实现的商务已经多样化,可以完成从最基本的信息展示、信息发布功能到在线交易、在线客户服务、在线管理功能等,可以说,传统书店所具备的功能几乎都可以在互联网上进行电子化的高效动作。
作为一个虚拟的商店,网上商店具有很多新的特性,以下这些是它的优势:其营业成本完全有理由比传统意义上的商店低得多,不需支持昂贵的店铺租金,花费浩大的装修,不需要将大笔的流动资金作为货物而沉积在店里,可依靠“零库存”管理,缩速资金周转的周期,可以加速周期。
第1章JSP技术简介JSP(Java Server Pages)技术是由Sun公司发布的用于开发动态Web应用的一项技术。
它以其简单易学、跨平台的特性,在众多动态Web应用程序设计语言中异军突起,在短短几年中已经形成了一套完整的规范,并广泛地应用于电子商务等各个领域中。
在国内,JSP 现在也得到了比较广泛的重视,得到了很好的发展,越来越多的动态网站开始采用JSP技术。
本章就对JSP及其相关技术进行简单的介绍。
1.1 认识HTTP协议HTTP协议(Hypertext Transfer Protocol,超文本传送协议)是WWW服务器使用的主要协议,对HTTP协议细节的基本理解是编写JSP或Java小程序的开发人员所必需的。
因此在学习JSP技术之前有必要更加仔细地研究一下HTTP消息的格式(这里的讨论源自HTTP/1.1协议规范。
参见规范2616,网址为/rfc/rfc2616.txt)。
HTTP 协议的关键部分有HTTP请求和HTTP响应,以及客户端Web程序设计的一些基础知识,在第4章4.4节将会具体介绍。
1.2 客户端Web程序设计介绍Web浏览器现已成为深受大多数用户喜爱的用户界面。
HTML语言提供了丰富的控件,第三方厂商提供了Visual Basic编写的数百个额外的控件,这些都使得Web浏览器独具特色。
虽然Web浏览器与传统的GUI界面有一定的差距,但它提供了一种独立而又简单的方法来访问分布式资源,尤其是Internet资源。
而且越来越多的客户端Web程序扩展技术变得更加成熟,出现了包括CSS、JavaScript、VBScript、动态HTML、Java1.1.Applet应用程序等技术在内的客户端Web程序设计技术,它们的相互结合使得Web程序更加迷人。
下面简单介绍几种常用的客户端Web程序设计技术的特点。
本书假定读者对这些技术都有一定的了解,不对这些技术作详细介绍。
1.2.1 CSSCSS(Cascading Style Sheets)称为层叠样式表,是动态HTML技术的一个部分,但可以和HTML结合使用。
Jsp、MySQL和B/S模式简介1 Jsp简介1.1 什么是Java Server Pages?JSP全称Java Server Pages,是一种动态网页开发技术。
它使用JSP标签在HTML 网页中插入Java代码。
标签通常以<%开头以%>结束。
JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。
网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。
JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。
JSP标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。
1.2 为什么使用JSP?JSP程序与CGI程序有着相似的功能,但和CGI程序相比,JSP程序有如下优势:(1)性能更加优越,因为JSP可以直接在HTML网页中动态嵌入元素而不需要单独引用CGI文件。
(2)服务器调用的是已经编译好的JSP文件,而不像CGI/Perl那样必须先载入解释器和目标脚本。
(3)JSP 基于Java Servlet API,因此,JSP拥有各种强大的企业级Java API,包括JDBC,JNDI,EJB,JAXP等等。
(4)JSP页面可以与处理业务逻辑的 Servlet 一起使用,这种模式被Java servlet 模板引擎所支持。
最后,JSP是Java EE不可或缺的一部分,是一个完整的企业级应用平台。
这意味着JSP可以用最简单的方式来实现最复杂的应用。
1.3 JSP的优势以下列出了使用JSP带来的其他好处:(1)与ASP相比:JSP有两大优势。
首先,动态部分用Java编写,而不是VB或其他MS专用语言,所以更加强大与易用。
第二点就是JSP易于移植到非MS平台上。
(2)与纯 Servlet 相比:JSP可以很方便的编写或者修改HTML网页而不用去面对大量的println语句。
JSP技术简介⼀、 JSP 技术概述 在 Sun 正式发布 JSP(JavaServer Pages) 之后,这种新的 Web 应⽤开发技术很快引起了⼈们的关注。
JSP 为创建⾼度动态的 Web 应⽤提供了⼀个独特的开发环境。
按照 Sun 的说法, JSP 能够适应市场上包括 Apache WebServer 、 IIS4.0 在内的 85% 的服务器产品。
即使您对 ASP "⼀往情深",我们认为,关注 JSP 的发展仍旧很有必要。
㈠ JSP 与 ASP 的简单⽐较 JSP 与 Microsoft 的 ASP 技术⾮常相似。
两者都提供在 HTML 代码中混合某种程序代码、由语⾔引擎解释执⾏程序代码的能⼒。
在 ASP 或 JSP 环境下, HTML 代码主要负责描述信息的显⽰样式,⽽程序代码则⽤来描述处理逻辑。
普通的HTML 页⾯只依赖于 Web 服务器,⽽ ASP 和 JSP 页⾯需要附加的语⾔引擎分析和执⾏程序代码。
程序代码的执⾏结果被重新嵌⼊到 HTML 代码中,然后⼀起发送给浏览器。
ASP 和 JSP 都是⾯向 Web 服务器的技术,客户端浏览器不需要任何附加的软件⽀持。
ASP 的编程语⾔是 VBScript 之类的脚本语⾔, JSP 使⽤的是 Java ,这是两者最明显的区别。
此外, ASP 与 JSP 还有⼀个更为本质的区别:两种语⾔引擎⽤完全不同的⽅式处理页⾯中嵌⼊的程序代码。
在 ASP 下, VBScript 代码被 ASP 引擎解释执⾏;在 JSP 下,代码被编译成 Servlet 并由 Java 虚拟机执⾏,这种编译操作仅在对 JSP 页⾯的第⼀次请求时发⽣。
㈡运⾏环境 Sun 公司的 JSP 主页在 /products/jsp/index.html ,从这⾥还可以下载 JSP 规范,这些规范定义了供应商在创建 JSP 引擎时所必须遵从的⼀些规则。
Jsp详解1.简介2.Jsp的运行原理3.Jsp的语法1.Jsp模板元素2.Jsp中的脚本表达式3.Jsp中的脚本片段4.Jsp的声明5.Jsp注释6.Jsp指令1.首先我们来看一下page指令的用法2.下面在来看一下include指令3.最后来看一下taglib指令7.Jsp中内置的9个隐式对象8.JSP标签库1.jspinclude标签2.jspforward标签3.jspparam或者jspparams标签4.jspuseBean标签jspsetProperty标签jspgetProperty标签9.Jsp中怎么排查错误简介:JSP全称是JavaServer Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。
JSP这门技术的最大的特点在于,写jsp就像在写html,但:它相比html而言,html只能为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,为用户提供动态数据。
相比servlet而言,servlet很难对数据进行排版,而jsp除了可以用java代码产生动态数据的同时,也很容易对数据进行排版。
不管是JSP还是Servlet,虽然都可以用于开发动态web资源。
但由于这2门技术各自的特点,在长期的软件实践中,人们逐渐把servlet作为web应用中的控制器组件来使用,而把JSP技术作为数据显示模板来使用。
其原因为,程序的数据通常要美化后再输出:让jsp既用java代码产生动态数据,又做美化会导致页面难以维护。
让servlet既产生数据,又在里面嵌套html代码美化数据,同样也会导致程序可读性差,难以维护。
因此最好的办法就是根据这两门技术的特点,让它们各自负责各的,servlet只负责响应请求产生数据,并把数据通过转发技术带给jsp,数据的显示jsp来做。
Jsp的运行原理:目标:Web服务器是如何调用并执行一个jsp页面的?Jsp页面中的html排版标签是如何被发送到客户端的?Jsp页面中的java代码服务器是如何执行的?Web服务器在调用jsp时,会给jsp提供一些什么java对象?思考:JSP为什么可以像servlet一样,也可以叫做动态web资源的开发技术?其实Jsp就是一个Servlet,所以我们要先介绍Servlet的相关技术,当我们第一次访问Jsp 的时候,Jsp引擎都会将这个Jsp翻译成一个Servlet,这个文件存放在Tomcat中的work目录中,这里,我们新建一个MyJsp.jsp页面,然后访问以下,我们看一下翻译后的源码:1.<%@ page language="java"import="java.util.*"pageEncoding="utf-8"%>2.3.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML4.01 Transitional//EN">4.<html>5.<head>6.7.<title>My JSP 'MyJsp.jsp' starting page</title>8.9.</head>10.11.<body>12. This is my JSP page. <br>13.</body>14.</html>1.package org.apache.jsp;2.3.import javax.servlet.*;4.import javax.servlet.http.*;5.import javax.servlet.jsp.*;6.import java.util.*;7.8.public final class MyJsp_jsp extends org.apache.jasper.runtime.HttpJspBase9.implements org.apache.jasper.runtime.JspSourceDependent {10.11.private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();12.13.private static java.util.List _jspx_dependants;14.15.private javax.el.ExpressionFactory _el_expressionfactory;16.private org.apache.AnnotationProcessor _jsp_annotationprocessor;17.18.public Object getDependants() {19.return _jspx_dependants;20. }21.22.public void _jspInit() {23. _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();24. _jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class .getName());25. }26.27.public void _jspDestroy() {28. }29.30.public void _jspService(HttpServletRequest request, HttpServletResponse response)31.throws java.io.IOException, ServletException {32.33. PageContext pageContext = null;34. HttpSession session = null;35. ServletContext application = null;36. ServletConfig config = null;37. JspWriter out = null;38. Object page = this;39. JspWriter _jspx_out = null;40. PageContext _jspx_page_context = null;41.42.43.try {44. response.setContentType("text/html;charset=utf-8");45. pageContext = _jspxFactory.getPageContext(this, request, response,46.null, true, 8192, true);47. _jspx_page_context = pageContext;48. application = pageContext.getServletContext();49. config = pageContext.getServletConfig();50. session = pageContext.getSession();51. out = pageContext.getOut();52. _jspx_out = out;53.54. out.write("\r\n");55. out.write("\r\n");56. out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r\n");57. out.write("<html>\r\n");58. out.write(" <head>\r\n");59. out.write(" \r\n");60. out.write(" <title>My JSP 'MyJsp.jsp' starting page</title>\r\n");61. out.write(" \r\n");62. out.write(" </head>\r\n");63. out.write(" \r\n");64. out.write(" <body>\r\n");65. out.write(" This is my JSP page. <br>\r\n");66. out.write(" </body>\r\n");67. out.write("</html>\r\n");68. } catch (Throwable t) {69.if (!(t instanceof SkipPageException)){70. out = _jspx_out;71.if (out != null && out.getBufferSize() != 0)72.try { out.clearBuffer(); } catch (java.io.IOException e) {}73.if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);74. }75. } finally {76. _jspxFactory.releasePageContext(_jspx_page_context);77. }78. }79.}我们看到,这个类继承了org.apache.jasper.runtime.HttpJspBase,要想看到这个类的源码,我1./*2. * Licensed to the Apache Software Foundation (ASF) under one or more3. * contributor license agreements. See the NOTICE file distributed with4. * this work for additional information regarding copyright ownership.5. * The ASF licenses this file to You under the Apache License, Version 2.06. * (the "License"); you may not use this file except in compliance with7. * the License. You may obtain a copy of the License at8. *9. * /licenses/LICENSE-2.010. *11. * Unless required by applicable law or agreed to in writing, software12. * distributed under the License is distributed on an "AS IS" BASIS,13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.14. * See the License for the specific language governing permissions and15. * limitations under the License.16. */17.18.package org.apache.jasper.runtime;19.20.import java.io.IOException;21.22.import javax.servlet.ServletConfig;23.import javax.servlet.ServletException;24.import javax.servlet.http.HttpServlet;25.import javax.servlet.http.HttpServletRequest;26.import javax.servlet.http.HttpServletResponse;27.import javax.servlet.jsp.HttpJspPage;28.import javax.servlet.jsp.JspFactory;29.30.import piler.Localizer;31.32./**33. * This is the super class of all JSP-generated servlets.34. *35. * @author Anil K. Vijendran36. */37.public abstract class HttpJspBase38.extends HttpServlet39.implements HttpJspPage40.41.42.{43.44.protected HttpJspBase() {45. }46.47.public final void init(ServletConfig config)48.throws ServletException49. {50.super.init(config);51. jspInit();52. _jspInit();53. }54.55.public String getServletInfo() {56.return Localizer.getMessage("");57. }58.59.public final void destroy() {60. jspDestroy();61. _jspDestroy();62. }63.64./**65. * Entry point into service.66. */67.public final void service(HttpServletRequest request, HttpServletResponse response)68.throws ServletException, IOException69. {70. _jspService(request, response);71. }72.73.public void jspInit() {74. }75.76.public void _jspInit() {77. }78.79.public void jspDestroy() {80. }81.82.protected void _jspDestroy() {83. }84.85.public abstract void _jspService(HttpServletRequest request,86. HttpServletResponse response)87.throws ServletException, IOException;88.}好吧,看到了,继承了HttpServlet类,所以说其实Jsp就是一个ServletJsp的语法:1.JSP模版元素2.JSP表达式3.JSP脚本片段4.JSP注释5.JSP指令6.JSP标签7.JSP内置对象8.如何查找JSP页面中的错误Jsp模板元素JSP页面中的HTML内容称之为JSP模版元素。
jsp可行性分析一、引言随着互联网的发展,动态网页的需求不断增长。
为了满足客户对个性化、动态化网页的需求,Java Server Pages (JSP) 技术应运而生。
本文将对JSP的可行性进行详细分析,包括技术可行性、经济可行性和操作可行性。
二、技术可行性1. JSP技术简介JSP是一种基于Java的服务器端技术,通过将Java代码嵌入HTML 页面中,实现动态网页的生成。
与其他技术相比,JSP具有易学易用、可维护性高、跨平台性强等优点,已被广泛应用。
2. 兼容性分析JSP技术基于Java语言,可以与各种平台和操作系统兼容。
无论是Windows、Linux还是Unix,都能够支持JSP技术,保证了系统的可扩展性和可移植性。
3. 性能分析JSP技术采用了服务器端动态生成网页的方式,相对于静态网页,动态网页更加灵活且能够根据用户需求进行定制。
同时,JSP技术还能够利用服务器的缓存机制和请求分发机制,优化系统性能,使得网页的响应速度更快。
4. 安全性分析JSP技术有完善的安全机制,能够有效防止跨站脚本攻击和SQL注入等常见安全问题。
通过JSP技术,我们可以灵活控制页面访问权限,确保系统的数据安全性。
三、经济可行性1. 技术成本JSP技术是开源的,无需额外支付版权费用。
同时,由于JSP使用的是Java语言,开发人员的技术门槛较高,因此需要培训和招聘合适的技术人员,可能会增加一定的人力成本。
2. 开发成本相比其他技术,JSP的开发成本相对较低。
开发人员可以直接在HTML页面中嵌入Java代码,减少了代码的编写和维护成本。
此外,JSP技术还提供了丰富的标签库和模板,可以快速构建动态网页。
3. 维护成本JSP技术的代码易于维护和修改,开发人员可以通过修改HTML页面中的Java代码来实现网页的功能更新。
这意味着在系统需求变更时,只需对相应的代码进行修改,无需对整个系统进行重构,降低了维护成本。
四、操作可行性1. 学习曲线对于熟悉Java语言的开发人员而言,学习JSP技术相对容易。
JSP技术简介什么是JSP?JSP(JavaServer Pages)是一种用于创建动态网页的技术。
它允许开发人员将动态内容(如数据库查询结果或用户输入)嵌入到HTML页面中。
与静态网页不同,JSP页面可以根据不同的请求和数据来生成不同的输出。
JSP是基于Java编程语言的,因此开发人员可以使用Java的强大功能来实现复杂的业务逻辑。
同时,它也是在服务器端运行的,这意味着用户无需下载任何插件或软件,并且可以通过任何支持HTTP协议的浏览器访问到JSP页面。
JSP的优点1.易于学习和使用:与其他服务器端技术相比,JSP是学习曲线较为平缓的。
它是用HTML和Java代码混合编写的,因此对于熟悉HTML和Java的开发人员来说,上手相对容易。
2.代码重用:JSP页面可以通过组件、标签库和自定义标签等方式实现代码的重用。
这使得开发人员可以更加高效地开发和维护项目。
3.动态内容生成:JSP允许开发人员在HTML页面中嵌入Java代码,这使得动态内容的生成变得非常简单。
开发人员可以使用Java的强大功能处理和操作数据,从而提供与用户交互的动态页面。
4.可扩展性:JSP技术是基于Java的,可以与其他Java技术(如Servlet和EJB)无缝集成。
这使得开发人员能够构建复杂的企业级应用程序,并实现高度的可扩展性。
5.跨平台性:由于JSP是在服务器端运行的,所以它可以在任何支持Java的操作系统上运行。
这意味着开发人员可以使用一套代码在不同的操作系统上部署应用程序。
JSP的工作原理JSP的工作原理可以简单概括为以下几个步骤:1.编写JSP页面:开发人员编写JSP页面,它包含了HTML和Java代码。
Java代码通常使用特殊的标签(<% %>)来标识。
2.编译为Servlet:当第一次访问JSP页面时,容器会将JSP页面编译成一个Servlet。
这个过程是自动的,开发人员无需手动进行。
3.创建Servlet实例:每次有请求到达JSP页面时,容器都会为该请求创建一个Servlet实例。
第1章应用概览:关于JSPJSP(Java Server Page)是由Sun公司倡导、多家公司参与一起建立的一种动态网页技术标准规范。
作为动态网页的一种主流开发技术,JSP基于Java,具有平台无关性、运行效率高、快速上手易于学习等优点。
随着Internet的飞速发展,JSP被越来越广泛地应用于Web开发,许多知名网站,如新浪、网易、阿里巴巴等都采用了JSP技术,其已成为目前最为流行的网络编程语言之一。
本章主要内容如下:•JSP技术概述;•JSP运行机制;•JSP框架简介;•JSP开发应用方式;•JSP简单应用。
1.1 JSP概述1999年Sun公司推出了JSP动态网页技术。
JSP以Java编程语言作为脚本语言,Java 是一种简单易学并且完全面向对象的编程语言,特别适合作为Internet应用的开发工具。
使用JSP能轻松搭建网络平台,建立功能强大的Web网站。
JSP技术在国外应用非常广泛,近年来在国内也日趋流行。
与目前较为流行的Web开发技术ASP、PHP相比,JSP是一种完全与平台无关的开发技术,它将极高的运行效率、较短的开发周期、超强的扩展能力、完全开放的技术标准和自由的开发方式等众多的完美特性集于一身,使构造基于Web的应用程序更加容易和快捷。
JSP实现了Web业务逻辑和页面显示的分离,脱离了硬件平台的束缚,并且编译后大大提高了运行速度,降低了系统模块之间的耦合性,增强了代码的可重用性和可维护性,符合软件工程思想。
目前,JSP正逐渐成为Web应用的主流开发工具。
JSP已广泛地应用于电子商务、电子政务等各个行业的管理应用软件中,国际上一些大型电子商务解决方案都采用或即将采用JSP技术,JSP的应用领域已变得越来越大,具有广阔的发展前景。
1.1.1 JSP特点JSP技术可以让Web开发人员和设计人员非常容易地创建和维护动态网页,特别是目前的商业系统。
作为Java技术的一部分,JSP能够快速开发基于Web、独立于平台的应用程序。
jsp面试题及答案一、JSP简介Java Server Pages(JSP)是一种动态网页开发技术,它是在静态HTML页面中嵌入Java代码,并利用Java编程语言的各项功能来生成动态的内容。
JSP主要用于在Web应用程序中生成动态内容,可与HTML、CSS、JavaScript等技术结合,实现灵活的网页开发。
二、1. 什么是JSP?答:JSP是一种动态网页开发技术,它通过在HTML页面中嵌入Java代码,并利用Java的功能来生成动态的内容。
JSP可以与HTML、CSS、JavaScript等技术结合,用于开发灵活的Web应用程序。
2. JSP与Servlet有什么区别?答:JSP和Servlet都是Java用于Web开发的技术,它们之间的主要区别在于开发方式。
Servlet是基于Java代码的,通过继承Servlet类和重写doGet()或doPost()方法来处理HTTP请求和生成动态内容。
而JSP是基于HTML页面的,通过在HTML页面中嵌入Java代码来实现动态内容的生成。
3. JSP的生命周期是什么样的?答:JSP的生命周期包括以下几个阶段:- 编译阶段:当JSP页面第一次被访问时,容器会将其编译成Servlet类。
- 初始化阶段:Servlet实例被创建,并调用初始化方法来进行初始化设置。
- 请求处理阶段:每当有请求到达时,容器会创建一个线程来处理该请求,并调用JSP的_service()方法来生成响应。
- 销毁阶段:JSP页面不再被访问时,容器会销毁Servlet实例,并调用销毁方法来释放资源。
4. 如何在JSP页面中使用Java代码?答:在JSP页面中使用Java代码有以下几种方式:- 使用<% %>标签包含Java代码片段;- 使用<%= %>标签输出Java表达式的值;- 使用<%! %>标签定义全局变量和方法。
5. JSP中的指令有哪些?答:JSP中的指令包括以下几种:- page指令:用于设置页面的属性,如指定页面的编码方式、导入需要的Java包等。
JSP(全称J ava S erver P ages)是由Sun Microsystems公司倡导和许多公司参与共同建立的一种使软件开发者可以响应客户端请求,而动态生成HTML、XML或其他格式文档的Web网页的技术标准。
JSP技术是以Java语言作为脚本语言的,JSP网页为整个服务器端的Java库单元提供了一个接口来服务于HTTP的应用程序。
JSP使Java代码和特定的预定义动作可以嵌入到静态页面中。
JSP句法增加了被称为JSP动作的XML标签,它们用来调用内建功能。
另外,可以创建JSP标签库,然后像使用标准HTML或XML标签一样使用它们。
标签库提供了一种和平台无关的扩展服务器性能的方法。
•JSP被JSP编译器编译成Java Servlets。
一个JSP编译器可以把JSP编译成JAVA 代码写的servlet然后再由JAVA编译器来编译成机器码,也可以直接编译成二进制码。
JSP和Servlets从架构上说,JSP可以被看作是从Servlets高级提炼而作为JAVA Servlet 2.1 API的扩展而应用。
Servlets和JSPs最早都是由Sun Microsystems(升阳公司)开发的。
从JSP1.2版本以来,JSP处于Java Community Process(有人译为:JAVA社区组织)开发模式下。
JSR-53规定了JSP 1.2和Servlet 2.4的规范,JSR-152规定了JSP 2.0的规范。
2006年5月,JSP 2.1的规范作为Java EE 5的一部份,在JSR-245中发布。
JSP句法一个JSP页面可以被分为以下几部份:•静态数据,如HTML•JSP指令,如include指令•JSP脚本元素和变量•JSP动作•用户自定义标签静态数据静态数据在输入文件中的内容和输出给HTTP响应的内容完全一致。
此时,该JSP输入文件会是一个没有内嵌JAVA或动作的HTML页面。
而且,客户端每次请求都会得到相同的响应内容。
JSP指令JSP指令控制JSP编译器如何去生成servlet,以下是可用的指令:•包含指令include –包含指令通知JSP编译器把另外一个文件完全包含入当前文件中。
效果就好像被包含文件的内容直接被粘贴到当前文件中一样。
这个功能和C预处理器所提供的很类似。
被包含文件的扩展名一般都是"jspf"(即JSP Fragment,JSP碎片):<%@ include file="somefile.jsp" %>•页面指令page –页面指令有以下几个选项:import使一个JAVA导入声明被插入到最终页面文件。
contentType规定了生成内容的类型。
当生成非HTML内容或者当前字符集character set并非默认字符集时使用。
errorPage处理HTTP请求时,如果出现异常则显示该错误提示信息页面。
isErrorPage如果设置为TRUE,则表示当前文件是一个错误提示页面。
isThreadSafe表示最终生成的servlet是否安全线程(threadsafe)。
<%@ page import="java.util.*" %> //example import导入样例<%@ page contentType="text/html" %> //example contentType 页面类型样例<%@ page isErrorPage=false %> //example for non error page 无错页面样例<%@ page isThreadSafe=true %> //example for a thread safe JSP 安全线程JSP样例会注意:在同一个JSP文件中只有"import"导入页面指令可以被多次使用。
•标签库指令taglib –标签库指令描述了要使用的JSP标签库。
该指令需要指定一个前缀prefix(和C++的命名空间很类似)和标签库的描述URI:<%@ taglib prefix="myprefix" uri="taglib/mytag.tld" %> JSP脚本元素和变量标准脚本变量以下是永远可用的脚本变量:•out – JSPWriter用来写入响应流的数据•page – servlet自身•pageContext –一个PageContext实例包括和整个页面相联系的数据,一个给定的HTML页面可以在多个JSP之间传递。
•request –HTTP request对象•response –HTTP response对象•session –HTTP session对象,在多个请求之间追踪一个客户的信息。
脚本元素有三个基本的脚本元素,作用是使JAVA代码可以直接插入servlet.•一种是声明标签,在JAVA SERVLET的类体中放入一个变量的定义。
静态的数据成员也可以如此定义。
•<%! int serverInstanceVariable = 1; %>•一种是脚本标签,在JAVA SERVLET的类的_jspService()方法中放入所包含的语句。
•<% int localStackBasedVariable = 1;out.println(localStackBasedVariable); %> •一种是表达式标签,在JAVA SERVLET的类中放入待赋值的表达式,表达式注意不能以分号结尾。
•<%= "expanded inline data " + 1 %>JSP动作JSP动作是一系列可以调用内建于网络服务器中的功能的XML标签。
JSP提供了以下动作:jsp:include和子过程类似,JAVA SERVLET暂时接管对其它指定的JSP页的请求和响应。
当处理完该JSP页后就马上把控制权交还当前JSP页。
这样JSP代码就可以在多个JSP页中共享而不用复制。
jsp:param可以在jsp:include, jsp:forward或jsp:params块之间使用。
指定一个将加入请求的当前参数组中的参数。
jsp:forward用于处理对另一个JSP或SERVLET的请求和响应。
控制权永远不会交还给当前JSP页。
jsp:plugin Netscape Navigator的老版本和Internet Explorer使用不同的标签以嵌入一个applet。
这个动作产生为嵌入一个APPLET所需要的指定浏览器标签。
jsp:fallback如果浏览器不支持APPLETS则会显示的内容。
jsp:getProperty从指定的JavaBean中获取一个属性值。
jsp:setProperty在指定的JavaBean中设置一个属性值。
jsp:useBean创建或者复用一个JavaBean变量到JSP页。
标签样例jsp:include<html><head></head><body><jsp:include page="mycommon.jsp" ><jsp:param name="extraparam" value="myvalue" /></jsp:include>name:<%=request.getParameter("extraparam")%></body></html>jsp:forward<jsp:forward page="subpage.jsp" ><jsp:param name="forwardedFrom" value="this.jsp" /> </jsp:forward>在本例中,请求被传递到"subpage.jsp",而且请求的处理权不会再返回前者。
jsp:plugin<jsp:plugin type=applet height="100%" width="100%"archive="myjarfile.jar,myotherjar.jar"codebase="/applets"<jsp:params><jsp:param name="enableDebug" value="true" /></jsp:params><jsp:fallback>Your browser does not support applets.</jsp:fallback></jsp:plugin>上述plugin例子说明了一种在网页中嵌入applet的统一方法。
在<OBJECT>标签出现之前,并没有一种嵌入applets的通用方法。
这个标签设计得并不好,但有希望在以后加入动态属性(height="${param.height}", code="${chart}"等)和动态参数的新功能。
目前jsp:plugin标签不允许动态调用applets。
例如,你如果有一个图表applet需要数据点以参数形式被传入,除非数据点的数量是一个常量,否则你就不能使用ResultSet循环来创建jsp:param标签,你不得不手写每个jsp:param标签的代码。
而每个上述jsp:param标签可以有一个动态命名和动态值。
jsp:useBean<jsp:getProperty name="myBean" property="lastChanged" /> <jsp:setProperty name="myBean" property="lastChanged" value="<%= new Date()%>" />scope属性可以是request, page, session or application,它有以下用意:•request—该属性在请求的生命周期内有效,一旦请求被所有的JSP页处理完后,那么该属性就不可引用。