JSP页面笔记本第一次开机慢运行时往往比较慢,而以后运行的速度能提高很多,为什么?

1789人阅读
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Servlet和JSP的协调运行&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&通过调整Servlet和JSP来提高你的企业应该的运行性能&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 作者:Rahul Chaudhary
&&& 简介&&& 在这篇文章里,Rahul Chaudhary描述了能够提高Servlet和JSP性能的性能协调技术(performance-tuning techniques,简称PTT技术),因而使用它来提高你的J2EE应用的性能。作者认为这篇文章的读者都应该具有Servlet和JSP的基础知识。&&& 你的J2EE应用运行很慢吗?&&&它们能够支撑不断上升的访问量吗?&& 这篇文章描述了为开发高性能和大规模的Servlet和JSP应用而提出的performance- tuning技术(PTT)。这种技术使得我们能够开发这样的应用:它的运行速度相当的快,并且能够从始至终保持这种快速,更为重要的是能大幅度的提高应用的用户数或者请求数。在这篇文章里,我将带领你实践和证明performance-tuning技术能够大幅度推进你的Servlet和JSP的性能,从而达到提高你的J2EE应用的目的。这些技术有一些是在开发环节使用的,如设计或编码阶段;还有一些是和配置相关的。&&& PTT1:使用HttpServlet的init()方法来缓存数据&&&Web服务器调用init()方法是在服务器创建Servlet实例之后,而在Servlet处理所有请求之前。在一个Servlet的生命周期里,它只被调用一次。Init()方法能用来提高性能,通过缓存静态数据,或完成那些在初始化阶段需要被执行的开销昂贵的动作。&& 例如,使用JDBC(Java Database Connectivity)连接池是一个被实践证明很好的方法,这些连接池通常包括一个javax.sql.DataSource接口。DataSource是通过JDNI(Java Naming and Directory Interface)树获得。对每一个SQL的调用,运行JDNI来获取DataSource对系统的性能来说是一个昂贵的、能产生重大的影响。Servlet的init()方法能够被用来获取DataSource,并且缓存起来留给后面使用。public class ControllerServlet extends HttpServlet
&&&& private javax.sql.DataSource testDS =&&
&&& public void init(ServletConfig config) throws ServletException&&
&&& {&&&&&
&&&&&&&& super.init(config);&&&&&&
&&&&&&&& Context ctx&&=&&&&&
&&&&&&& &try&&&&&
&&&&&&&& {&&&&&&&&&
&&&&&&&&&&&&& ctx = new InitialContext();&&&&&&&&
&&&&&&&&&&&&& testDS = (javax.sql.DataSource)ctx.lookup(&jdbc/testDS&);&&&&&
&&&&&&&& }&&&&&
&&&&&&& catch(NamingException ne)&&&&
&&&&&& &{&&&&&&&&&&&&&&& ne.printStackTrace();&&&&&&& }
&&&&&&& catch(Exception e)
&&&&&&& {&&&&
&&&&&&&&&&&& e.printStackTrace();
&&&&&&&&}&&&& }&&
&&& public javax.sql.DataSource getTestDS()&&
&&&&&&&&& return testDS;&&&
&& PTT2:关掉Servlet和JSP的auto-reloading&& Servlet/JSP的auto-reloading属性在开发阶段被证明是非常有用的,因为它减少了开发时间,你在每一次更改Servlet或JSP的时候不用重新启动服务器。然而,它在实用阶段又是极其昂贵的,由于必要的装载或担负ClassLoader,Servlet/JSP的auto-reloading有极低效率。还有,当某些类的特定的ClassLoader不能和当前的类使用的ClassLoader协调工作时,你的应用系统就会发生奇怪的冲突。所以,在工作环境关掉Servlet/JSP的auto-reloading将获得良好的性能。&&& PTT3:控制HttpSession&& 许多系统需要一序列的客户端请求以便它们能够和其他系统关联。这时候,基于Web的应用需要维护一个状态,这个状态成为Session,因为HTTP协议是无状态的。为了支持系统必须维护的这个状态,Java Servlet提供了API来管理Sessions,允许通过几种机制来实现Session。Sessions的一切作用由HttpSession对象来代表,但是使用它有昂贵的开销。当一个HttpSession对象更新的时候,无论是它被使用的时候还是被复写的时候,它都要被读取。你可以通过使用下面的技术来提高性能:
&& 。不要在JSP页面的默认状态下产生HttpSession:默认状态下,JSP页面产生HttpSession。如果你不在JSP页面使用HttpSession,为了节省一些性能开销,当它们在JSP页面不是必须的时候,使用下面的命令来阻止自动产生HttpSession:&&%@ page session=&false&%&
&& 。不要在HttpSession里存储大的对象曲线或者图表:如果存储那样的数据在HttpSession里,应用服务器不得不每次都要处理整个的HttpSession对象。这将迫使Java系列化并且增加了计算的花费。
&& 。当HttpSession使用完的时候释放HttpSession对象:使用HttpSession.invalidate()方法来释放HttpSession,当不再需要它们时。
&& 。设置Session的time-out值:Servlet引擎有一个默认的time-out值设定。如果你不删掉HttpSession或者使用它的时间达到time-out设定的时间,Servlet引擎将会从内存中删掉该对象。设置time-out的时间越大,对可测性和性能的影响越大,原因是由于内存和垃圾回收的开销。尽量使得sessions的time-out时间尽量小。&&& PTT4:使用gzip压缩&& 压缩是一种去掉多余的信息,用最小的空间来保存你所需要的数据的方法。对于HMTL文件来说,使用gzip(GNU zip)压缩文档能够极大的减少下载时间。你的信息大小越小,它就能很快的被发送出去。因而,如果你压缩你的Web应用产生的内容,那么它将很快的传到用户那里,并且能更快的显示给用户。不是所有的浏览器都支持gzip压缩,但是你能很容易的检测一个浏览器是否支持gzip,然后发送gzip压缩的内容给那些支持gzip压缩的浏览器。&& 下面是一个代码片断,用来演示如果浏览器可以接收的话,发送压缩内容:& public void doGet(HttpServletRequest request,
&&&&&&&&&&&&&&&&&&&&&&&&&&& &HttpServletResponse response)throws IOException,
&&&&&&&&&&&&&&&&&&&&&&&&&&& ServletException
&&&&&&&&&&&&& OutputStream out = null
&&&&&&&&&&&&&&& // Check the Accepting-Encoding header from the HTTP request.
&&&&&&&&&&&&&& // If the header includes gzip, choose GZIP.
&&&&&&&&&&&&&& // If the header includes compress, choose ZIP.
&&&&&&&&&&&&&&&// Otherwise choose no compression.&&
&&&&&&&&&&&&&&&&String encoding = request.getHeader(&Accept-Encoding&);&&&&&
&&&&&&&&&&&&&& if (encoding != null && encoding.indexOf(&gzip&) != -1)&
&&&&&&&&&&&&& {&&&&&&
&&&&&&&&&&&&&&&&&&&&&& response.setHeader(&Content-Encoding& , &gzip&);&&&&&&
&&&&&&&&&&&&&&&&&&&&&& out = new GZIPOutputStream(response.getOutputStream());&
&&&&&&&&&&&&&&}&
&&&&&&&&&&&&& else if (encoding != null && encoding.indexOf(&compress&) != -1)&
&&&&&&&&&&&& {&&&
&&&&&&&&&&&&&&&&&&& response.setHeader(&Content-Encoding& , &compress&);&&&&
&&&&&&&&&&&&&&&&&&& out = new ZIPOutputStream(response.getOutputStream());&
&&&&&&&&&&& }&&
&&&&&&&&& else&
&&&&&&&&&& &{&&&
&&&&&&&&&&&&&&&& out = response.getOutputStream();&
&&&&&&&&&&& }
}&&&& PTT5:不要使用SingleThreadModel&& SingleThreadModel使得Servlet一次只能处理一个请求。如果一个Servlet实现了这个接口,Servlet引擎为每一个新的请求产生一个独立的Servlet实例。这将导致系统对象数量上的开销。如果你要解决线程安全方面的问题,使用其他的方法而不是实现SigleThreadModel接口。SigleThreadModel接口已经在Servlet2.4被废弃了。&&& PTT6:使用线程池&& Servlet引擎为每一个请求产生一个独立的线程,将这些线程分配到service()方法里,service()方法执行以后,删掉这些线程。默认情况下,Servlet引擎将为每一个请求产生一个线程。这些默认的行为降低了系统的性能,因为产生和删除线程的开销是昂贵的。这些性能能够通过使用线程池得到改善。通过预测并发访问系统的用户的数目,设置在池内和增加的最大、最小的数量来配置一个线程池。启动的时候,Servlet引擎产生一个线程池,这个线程池拥有你所配置的最小的数目的线程。然后,Servlet引擎从池内分配线程到每一个请求,而不是为每一个请求产生一个线程。当线程使用完成以后,将线程返回到线程池。使用线程池,系统的性能能得到彻底的提高。如果需要,更多线程也可以在线程的最小数目的基础上进行增加。&&&& PTT7:选择正确的include机制&& 在JSP页面上,有两种方法供我们引入一个文件:include引用(&%@ include file=&test.jsp& %&)和include动作(&jsp:include page=&test.jsp& flush=&true& /&)。Include引用在转化阶段引入详细的文件内容,即,页面转化为Servlet。Include动作在处理请求的阶段引入文件内容,即,当用户请求页面的时候,include引用比include动作快。所以,除非引用的文件经常改变,使用include引用能获得一个好的性能。&&&& PTT8:在使用usebean动作的时候,使用正确的范围&& 使用JSP页面的一个有力的武器是和Javabean组件结合起来使用。通过标签&jsp:useBean&,Javabean能够直接嵌入到JSP页面,语法如下:&jsp:useBean id=&name& scope=&page|request|session|application& class=package.className& type=&typeName&&&/jsp:useBean&&& scope属性给出Javabean可见性的范围,默认值是page。你可以根据你的应用的需要选择一个适合的值。否则,它会影响你的系统的性能。&& 例如,你仅仅需要一个对象为一个特殊的请求,但是你的scope却设置到session,那么那个对象会一直存在,而你的请求已经结束很长时间了。它会停留在内存里,直到你明确的删掉它,或者使session无效,或者根据你在Servlet引擎里设置的timeout值session已经timeout。如果你没有正确选择scope的值,它会影响性能因为内存和垃圾回收的开销。所以我们要选择正确的scope值,并且在对象使用完以后马上把它们删掉。&&&& 复合技术&& 。避免String的联接。使用&+&运算符来连接字符串将产生很多的临时对象,因为String对象是一个常量。你对&+&使用的越多,临时对象就产生得越多,这会大大降低系统的性能。使用StringBuffer而不是&+&当你需要连接很多的字符串的时候。
& &。避免使用System.out.println:System.out.println同步处理磁盘的I/O系统,这醒目的降低了输入输出量。尽量得避免使用System.out.println,即使这个怪异的debug工具是可用的。有时候,由于跟踪的目的,System.out.println还是有用的,或者打印错误,或者debuging。你应该配置System.out.println,使它仅仅在error和debuging的情况下有效。为了做到这一点,使用一个boolean变量,当这个boolean变量是false的时候,优化out使之在编译阶段的检测和跟踪的时候有效。
&& 。ServletOutputStream对PrintWriter:使用后者将导致小的开销,因为它意味着字符输出流和将数据编码为字节码。所以PrintWriter能保证所有的字符转化能够正确进行。另一方面,当你是用ServletOutputStream的时候,你的Servlet仅仅返回二进制码,因而你能减少字符转化的开销因为Servlet容器不编码二进制码。&&&& 结论&& 这篇文章的目的是向你展示一些实用的,已经被证明了的性能协调技术,这些技术将极大的推进Servlet/JSP的性能,因而提高了整个系统的性能。下一步我们将深入的探讨其他相关技术如EJB (Enterprise JavaBeans), JMS (Java Message Service),,and JDBC (Java Database Connectivity)的性能协调技术。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:558069次
积分:7533
积分:7533
排名:第883名
原创:144篇
译文:36篇
评论:427条
(1)(2)(1)(6)(20)(16)(7)(2)(10)(7)(1)(6)(3)(17)(26)(1)(1)(1)(2)(1)(3)(4)(3)(6)(10)(13)(10)(3)JSP与ASP_NET运行速度的比较与分析_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
4页¥2.002页¥1.007页免费3页¥2.002页¥1.002页¥1.0014页免费1页免费8页免费1页免费
喜欢此文档的还喜欢7页免费39页1下载券5页免费3页免费33页1下载券
JSP与ASP_NET运行速度的比较与分析|J​S​P​与​A​S​P​_​N​E​T​运​行​速​度​的​比​较​与​分​析
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢ASP,PHP,JSP,ASP.NET 这是当前比较流行的四种WEB网站编程语言,现在做网站大部分都是使用这几种语言中的其一 。
ASP是基于WINDOWS平台的,简单易用,由于是运行在WINDOWS平台上,所以移植性不好,不能跨平台运行.但是国内现在大部分的网站都是使用它来开发的.
PHP是当前兴起备受推崇的一种WEB编程语言,开源且跨平台,在欧美都比较的流行,最近在国内也很受许多网站开发者的欢迎.开发效率高,成本低!
JSP是了SUN公司推出的一种网络编程语言,比较难学(是网上公认的),跨平台运行.安全性比较高,运行效率也比较的快.备受企业级的公司及银行金融机构使用.
ASP.NET从某种意义上说应该是ASP版本的升级,但是它又不完全是从ASP上升级来的,ASP.NET的推出是微软为了与SUN公司的JSP在网络
上的迅猛发展抵抗的,.NET架构现在有许多人都在学习,主要是开发的效率比较的高.但是还是基于WIN平台运行,不能跨平台.
ASP,英文全称为 Active Server Pages。
ASP 是一种动态网页 ,文件后缀名为.asp。
ASP 网页是包含有服务器端脚本 (server-side script ) 的 HTML 网页。Web 服务器会处理这些脚本,将其转换成 HTML 格式,再传到客户的浏览器端。
下面的图示,你可以很直观地理解 HTML 和 ASP 的区别。
HTML 和 ASP 的区别
HTML是编写网页的最简单的语言。HTML 只能用于编写静态的网页 。
当一个用户浏览器(下图所示:Web Client ) 从 Web 服务器 (下图所示:Web Server ) 要求一个 HTML
网页时,Web 服务器就将这个网页直接发送给用户浏览器,不经过计算处理。然后用户浏览器会处理该网页的 HTML 代码,然后将结果显示出来 。
见下图所示:
而 ASP 的处理过程则更复杂些。当一个用户浏览器(下图所示:Web Client) 从 Web 服务器 (下图所示:Web Server )
要求一个 ASP 网页时,Web 服务器会将这个 ASP 文件发送给 Web 服务器的 ASP 引擎 (下图所示:ASP Engine),ASP
引擎则将该 ASP 网页中所有的服务器端脚本 (下图所示:&%和%&之间的代码) 转换成 HTML 代码,然后将所有 HTML
代码发送给用户浏览器。
见下图所示:
ASP能干什么?
网页最合适的脚本语言。有关 VBScript。
用 HTML, CSS 已经能够编写非常漂亮的静态网页 ,但是这些网页缺乏和用户的互动性 。
比如,你需要为你的网站增加用户注册和登录的功能;你可能还需要做一些网上调查,了解用户对于某个事件或者产品的反馈;你还可能需要一个电子商务网站,及时发布产品信息和满足用户在线订购的需要......
和 ASP 的区别 。HTML 代码,然后将结果显示出来 。英文全称为!
编写 ASP 动态网页能够帮助你实现这些和用户互动的功能。
一个简单的 ASP 示例
&title&ASP代码:ASP输出语法&/title&
&p &&% = "布啦布啦 www .blabla .cn" %&&/p&
及时发布产品信息和满足用户在线订购的需要 ..?
是一种动态网页,文件后缀名为.asp?
上面这个 ASP 网页代码示例中,你可以看到,这个 ASP 文件和一个普通的HTML网页基本一样,除了里面有&%= "布啦布啦 " %&这段代码。
&% %&表示在里面的代码是 ASP 代码。
&%= 表示需要输出 ASP 代码的结果。
如果您从事基于 Web 的开发工作,那么可能已经听说过 PHP。您也许不太确切地知道 PHP 是什么、如何工作或者为什么如此热门,但现在该是进一步了解 PHP 的时候了。因此本文简要介绍了关于 PHP 基础的基本概念。
一点背景知识
PHP 是作为一个小开放源码,随着越来越多的人意识到它的实用性从而逐渐发展起来。Rasmus Lerdorf 在 1994 年发布了 PHP 的第一个版本。从那时起它就飞速发展,并在原始发行版上经过无数的改进和完善现在已经发展到版本 4.0.3 。
PHP 是一种嵌入在 HTML
并由服务器解释的脚本语言。它可以用于管理动态内容、支持数据库、处理会话跟踪,甚至构建整个电子商务站点。它支持许多流行的数据库,包括
MySQL、PostgreSQL、Oracle、Sybase、Informix 和 Microsoft SQL Server。
动态与静态内容
动态内容为什么这么热门?假设您正在管理有 10 个产品的电子商务站点。只要产品不是经常变动或者预料到它不会有太大的变动,那么手工编写 10
个带有必要的信息、表单和诸如此类内容的静态产品页面是不困难的。但是,假设您在本月再要添加 10
个或更多产品,然后在下个月要更多,而且价格有时会变动或者想改变站点的观感。那么您就会陷入用手工重新编写数十个,也许上百个静态页面的困境中。
另一方面,假设您从创建 product.php
页面开始。它没有静态信息,而是编码成可以从产品数据库中提取信息并动态地构建一个页面。然后您就拥有了一个元数据页面,它可以根据存储在数据库中的信息
提供一个、一百个、甚至十万个单独页面。现在网站管理员不再整天都简单重复更新静态页面的工作,因为在更新公司数据库中的信息同时就可以更新页面上的信
息。这样就消除了令人头疼的时间延迟(在数据库中更改信息和在网站上显示信息之间的时间间隔)。
总体来说,PHP 非常适合 Web 上的工作。但它并不是唯一的方法;如
Perl、Java、JavaScript、ASP、Python、Tcl、CGI 以及其它许多方法都可以生成动态的内容。但是,PHP
的优点是:它是专为基于 Web 的问题而设计的以及它是开放源码。
如果您正在为文字处理或 3D 游戏寻找程序设计语言,那 PHP 可能不是您所需要的语言。如果您需要运行一个具有动态内容、数据库交互和电子贸易的网站,那么就请继续读下去,因为 PHP 在这方面确实是非常有用的。
PHP 适用的平台
大多数常规 PHP 的安装通常是与 Linux 或各种 UNIX 上的 Apache 一起运行的 PHP
模块。但是如果正在使用其它平台,不要担心。PHP 可以在 Windows NT 和 9x 以及其它许多 Web 服务器上运行。可以在主要介绍
Apache/Linux/PHP 组合的一些网站上找到更多有关 PHP 的文档,但它并不是支持 PHP 的唯一平台。
许可证和使用
购买具有全部功能的嵌入式 Web 脚本语言要花多少钱?一分钱不花?PHP
是一个开放源码项目,所以没有购买许可证的费用或限制使用的问题。您可以使用 PHP
来运行小的、非赢利性站点,或者运行十亿美元的电子商务网站,而且成本是一样的:零。不仅如此,如果想要或需要修改 PHP,可以修改它。
PHP 并没有得到 GPL 的许可,但它自己的许可证允许重新分发代码和/或二进制文件。
好,现在您已经确信要真正地尝试一下 PHP 了吧。我们先看一些简单的例子,这样您对 PHP 就有个大概了解。记住决这不是深入了解 PHP 的途径,仅仅是个快速入门而已。
"Hello, World!"
为了对 PHP 有个了解,让我们来看一下几个非常简单的 PHP 脚本。既然 "Hello, World!" 是个常用的示例,那我们就编写一个友好的小 "Hello, World!" 脚本。
如早些时候所提到的,PHP 是嵌入在 HTML 中的。(可能您的文件几乎没有包含 HTML,但是通常这个文件是 PHP 与 HTML 的混合体。)这意味着在您正常的 HTML 中(或 XHTML,如果您处在比较前沿的位置),会有类似这样的 PHP 语句:
&body bgcolor="white"& &strong&How to say "Hello, World!"&/strong& &?php echo "Hello, World!";?& &br& Simple, huh? &/body&
很简单,不是吗?这仅仅是一个 "echo"
语句,就这样。当然,仅仅这样是没有多大用处的。但是它确实告诉我们关于语言的一些东西。(顺便说一下,如果检查 HTML 输出,就会注意到 PHP
的代码并没有出现在从服务器送到您 Web 浏览器的文件中。所有出现在 Web 页面中的 PHP 都会被处理并从页面中剥离;从 WEB
服务器返回给客户机的仅仅是纯 HTML 输出。)
在 Web 页面上打印日期和时间
现在我们做一些稍微实用的事情。这个示例将在 Web 页面上打印日期和时间。
&body bgcolor="white"& &strong&An Example of PHP in Action&/strong& &?php echo "The Current Date and Time is:&br&"; echo date("g:i A l, F j Y.");?& // g = the hour, in 12-hour format // i = minutes // A = print AM or PM, depending... // l = print the day of the week // F = print the month // j = print the day of the month // Y = print the year - all four digits
此代码生成以下输出:
The Current Date and Time is:
11:00 AM Friday, October 20 2000.
请注意,这里揉和了 PHP 和 HTML。假设您已经了解 HTML,所以这里仅解释 PHP 代码。在 PHP.net (请参阅参考资料)上可以找到完整的 PHP 参考。
PHP 代码是以标记 &?php 开始并以 ?& 结束的。这就告诉服务器在 &?php 和 ?& 之间的所有内容需要用
PHP 指令进行语法分析,如果发现它们,就需要执行它们。请注意,当处理和服务您的文件时,客户机会收到普通的 HTML
文件。浏览您站点的人看不到任何一个的 PHP 指令,除非您犯了错误,服务器把这些 PHP 代码分割开而没有先处理它们。
一般情况下会处理在 &?php 和 ?& 之间的常规 HTML 标记。请注意上面这个简单的脚本中包含了 &br& 这个分行标记。如果不能够很好地利用 HTML 格式,那么 PHP 就不会非常有用。
如果想和其它东西一起使用,或者您和我一样是一个健忘的人,您可能会想到要注释代码。// 字符表明是注释,服务器不会处理被 //
标记的内容,也不会象 HTML 中的注释一样,把内容传给客户机。如果在 &?php 和 ?& 标记之间有标准的 &!--
comment --&
,那么当服务器对它进行语法分析时,有可能引起错误。显然,您可能不会象我对这个基本功能一样注释您的代码,但它确是一个很好的示例。
最后要注意的是,每个 PHP 函数都封闭在圆括号内,并以分号结束,这和 C 或 Perl
相似。由于一个简单的印刷错误而遗漏一个结束的圆括号或分号,造成一些语法错误是很常见的,所以要确保检查代码。在象 Vim 或 Emacs
这样的编辑器(可以突出显示语法)中编写 PHP 是有助于消除此类错误。它使您能立刻捕捉到错误。
date 函数仅是内置 PHP 函数之一。PHP 附带了许多功能可以用于数据库连接、创建 PDF、Shockwave、JPG、GIF、PNG
和其它图象文件、发送电子邮件、阅读和书写文件、语法分析 XML、会话处理、经由 HTTP 直接与浏览器对话,以及许多其它功能。
PHP 也允许用户定义自己的函数。这使 PHP 语言能够经由 Web
提供大量的解决方案。而不是从一开始就把所有的事情都编写好了。在您编写函数之前,确保已经查看诸如 、PHP Wizard 当然还有
Freshmeat,来看是否已经有您正在尝试编写的函数(请参阅参考资料)。
对于提供标题、自动更新新闻网站、基于 Web 的电子邮件客户机、数据库管理和其它方面,已经有许多开放源码的 PHP
解决方案。再从头来做这些是毫无意义的。相反,应该从已经构建好的基础开始,并把它定制到您自己的解决方案中。如果您仅仅是初步了解和学习
PHP,在心中并没有具体的项目,那么这些项目对于使用 PHP 仍然是很好的示例和学习资料。
jsp(JavaServer Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,其网址为。该技术为创建显示动态生成内容的Web页面提供了一个简捷而快速的方法。JSP技术的设计目的是使得构造基于Web的应用程序更加容易和快捷,而这些应用程序能够与各种Web服务器,应用服务器,浏览器和开发工具共同工作。 JSP规范是Web服务器、应用服务器、交易系
统、以及开发工具供应商间广泛合作的结果。在传统的网页Html文件(*htm,*.html)中加入Java程序片段(Scriptlet)和JSP标
记(tag),就构成了JSP网页(*.jsp)。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返
回给客户。程序片段可以操作数据库、重新定向网页以及发送 email
等等,这就是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低,可以实现无
Plugin,无ActiveX,无Java Applet,甚至无Frame。
JSP技术在多个方面加速了动态Web页面的开发:
一.将内容的生成和显示进行分离
  使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来生成页面上的动态内容(内容
是根据请求来变化的,例如请求帐户信息或者特定的一瓶酒的价格)。生成内容的逻辑被封装在标识和JavaBeans组件中,并且捆绑在小脚本中,所有的脚
本在服务器端运行。如果核心逻
辑被封装在标识和Beans中,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。在服务器端,JSP引擎解释
JSP标识和小脚本,生成所请求的内容(例如,通过访问JavaBeans组件,使用JDBCTM技术访问数据库,或者包含文件),并且将结果以
HTML(或者XML)页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保证任何基于HTML的Web浏览器的完全可用性。
二.强调可重用的组件
  绝大多数JSP页面依赖于可重用的,跨平台的组件(JavaBeans或者Enterprise
JavaBeansTM组件)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者客
户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡。
三.采用标识简化页面开发
  Web页面开发人员不会都是熟悉脚本语言的编程人员。JavaServer
Page技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容生成所需要的。标准的JSP标识能够访问和实例化
JavaBeans组件,设置或者检索组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能。
  通过开发定制化标识库,JSP技术是可以扩展的。今后,第三方开发人员和其他人员可以为常用功能创建自己的标识库。这使得Web页面开发人员能够使用熟悉的工具和如同标识一样的执行特定功能的构件来工作。
  JSP技术很容易整合到多种应用体系结构中,以利用现存的工具和技巧,并且扩展到能够支持企业级的分布式应用。作为采用Java技术家族的一部分,以及Java 2(企业版体系结构)的一个组成部分,JSP技术能够支持高度复杂的基于Web的应用。
  由于JSP页面的内置脚本语言是基于Java编程语言的,而且所有的JSP页面都被编译成为Java
Servlet,JSP页面就具有Java技术的所有好处,包括健壮的存储管理和安全性。作为Java平台的一部分,JSP拥有Java编程语言“一次编
写,各处运行”的特点。随着越来越多的供应商将JSP支持添加到他们的产品中,您可以使用自己所选择的服务器和工具,更改工具或服务器并不影响当前的应
用。当与Java 2平台,企业版(J2EE)和Enterprise
JavaBean技术整合时,JSP页面将提供企业级的扩展性和性能,这对于在虚拟企业中部署基于Web的应用是必需的。
四.技术分析
  Microsoft 公司的 ASP 技术也是动态网页开发技术。JSP和ASP从形式上非常相似,ASP程序员一眼就能认出&% %&以及&%= %&。但是深入探究下去会发现它们很多的差别,其中最主要的有以下三点:
1、 JSP的效率和安全性更高
  ASP以源码形式存放,以解释方式运行,每次ASP网页调用都需要对源码进行解释,运行效率不高。另外,IIS的漏洞曾使得许多网站源程序大曝光,包
括笔者以前用ASP开发的网站,ASP程序全部被人下载了去。JSP在执行以前先被编译成字节码 (byte
code),字节码由Java虚拟机(Java Virtual
Machine)解释执行,比源码解释的效率高;服务器上还有字节码的Cache机制,能提高字节码的访问效率。第一次调用JSP网页可能稍慢,因为它被
编译成Cache,以后就快得多了。同时,JSP源程序不大可能被下载,特别是JavaBean程序完全可以放到不对外的目录中。
2、 JSP的组件 (Component) 方式更方便
  ASP通过COM来扩充复杂的功能,如文件上载、发送email以及将业务处理或者复杂计算分离出来成为独立可重复利用的模块。JSP通过
JavaBean实现了同样的功能扩充。在开发方面,COM的开发远比JavaBean复杂和繁琐,学会ASP不难,但学会开发COM可不简单。而
JavaBean就简单多了,从本文上述示例中可以看出开发JavaBean很方便。在维护方面,COM必须在服务器上注册,如果修改了COM程序,就必
须重新注册,甚至必须关机和重新启动。JavaBean则不需要注册,放在CLASSPATH包含的目录中就行了。如果JavaBean进行了修改,则
JSWDK和Tomcat现在还需要关闭和重新运行(但不是关机),但开发者已经许诺将在以后的版本中做到不需要关闭服务器。另外JavaBean是完全
的OOP,可以针对不同的业务处理功能方便地建立一整套可重复利用的对象库,例如用户权限控制、email自动回复等等。
3、 JSP的适应平台更广
  ASP目前仅适用于NT和IIS。虽然Unix下有ChiliSoft的插件来支持ASP,但是ASP本身的功能有限,必须通过ASP+COM的组合来扩充,Unix下的COM实现起来非常困难。
  1.1 什么是ASP.net
  ASP.net 是一种建立在通用语言上的程序构架,能被用于一台Web服务器来建立强大的Web应用程序。ASP.net提供许多比现在的Web开发模式强大的的优势。
  执行效率的大幅提高
  ASP.net是把基于通用语言的程序在服务器上运行。不像以前的ASP即时解释程序,而是将程序在服务器端首次运行时进行编译,这样的执行效果,当然比一条一条的解释强很多。
  世界级的工具支持
ASP.net构架是可以用Microsoft(R)公司最新的产品 Visual Studio.net开发环境进行开发,WYSIWYG(What
You See Is What You Get所见即为所得)的编辑。这些仅是ASP.net强大化软件支持的一小部分。
  强大性和适应性
  因为ASP.net是基于通用语言的编译运行的程序,所以它的强大性和适应性,可以使它运行在Web应用软件开发者的几乎全部的平台上(笔者到现在为
止只知道它只能用在Windows 2000
Server上)。通用语言的基本库,消息机制,数据接口的处理都能无缝的整合到ASP.net的Web应用中。ASP.net同时也是
language-independent语言独立化的,所以,你可以选择一种最适合你的语言来编写你的程序,或者把你的程序用很多种语言来写,现在已经
支持的有C#(C++和Java的结合体),VB,Jscript。将来,这样的多种程序语言协同工作的能力保护您现在的基于COM+开发的程序,能够完
整的移植向ASP.net。
  简单性和易学性
  ASP.net是运行一些很平常的任务如表单的提交客户端的身份验证、分布系统和网站配置变得非常简单。例如ASP.net页面构架允许你建立你自己的用户分界面,使其不同于常见的VB-Like界面。另外,通用语言简化开发使把代码结合成软件简单的就像装配电脑。
  高效可管理性
  ASP.net使用一种字符基础的,分级的配置系统,使你服务器环境和应用程序的设置更加简单。因为配置信息都保存在简单文本中,新的设置有可能都不
需要启动本地的管理员工具就可以实现。这种被称为"Zero Local
Administration"的哲学观念使Asp.net的基于应用的开发更加具体,和快捷。一个ASP.net的应用程序在一台服务器系统的安装只需
要简单的拷贝一些必须得文件,不需要系统的重新启动,一切就是这么简单。
  多处理器环境的可靠性
  ASP.net已经被刻意设计成为一种可以用于多处理器的开发工具,它在多处理器的环境下用特殊的无缝连接技术,将很大的提高运行速度。即使你现在的
ASP.net应用软件是为一个处理器开发的,将来多处理器运行时不需要任何改变都能提高他们的效能,但现在的ASP确做不到这一点。
  自定义性,和可扩展性
  ASP.net设计时考虑了让网站开发人员可以在自己的代码中自己定义"plug-in"的模块。这与原来的包含关系不同,ASP.net可以加入自己定义的如何组件。网站程序的开发从来没有这么简单过。
  安全性
  基于Windows认证技术和每应用程序配置,你可以确性你的原程序时绝对安全的。(但是Asp的经验告诉我们,不能这么自信,M$老是会出Bug的)
  1.2 本篇教程的主要内容
  ASP.net 的语法
  ASP.net 的语法有可能对老的ASP程序员来说很熟悉,但也有一些是全新的东西,QuickStart教程将在细节上全部谈到它们。
  ASP.net 的结构和特征
  介绍ASP.net的所有特性,是ASP开发者可以编写交互性的世界级的应用软件,用比以前少的多时间和精力。
  最佳话的练习
  引用了一些练习题和如何回避在程序开发中潜在地容易犯的错误的方法,是开发更加顺利。
  为那些人编写的
  如果你从来没有开发过网站程序,那么这不适合你,你应该至少掌握一些HTML语言和简单的Web开发术语。你不需要先前的ASP开发经验(当然有经验更好),但是你必须了解交互式Web程序开发的概念,包含窗体,脚本,和数据接口的概念。
  1.3 安装 ASP.net
  跟基督山一起检查你们的计算机哦
  CPU Pentium II 450以上,推荐733
  内存 256M 推荐 512M
  硬盘空间 1G 或者更多
  操作系统 Windows 2000 Pro Server AD Server 都可以,并安装 IIS 5 和 Windows 2000 SP1
  但基督山的机器配置 C266 超 333 内存 128M 硬盘 2G 还是安装成功了。
  检查一下大家是不是都用IE 5.5 了?
  我们还需要 MDAC(ADO)2.6以上版本(可以在微软网站下面下载。)
  最后,就是我们讲座的主角 Microsoft .Net Framework SDK 诶,在下可以下载,绝对地址在 ,还好带宽不小ADSL的朋友可以达到全速(如果down不了的朋友,基督山可以帮着刻一张光盘,包括MDAC iIE5.5 SP1,.net SDK。)
  注意:教育网络上的朋友么,呵呵,在北京科技大学的服务器上面,有完整的文件可以下载,速度还不错,地址是
  终于down完了,运行安装程序,.net安装到你的计算机里面去。
  1.4 安装 .NET Framework 的快速入门示例
  打开 SDK Overview 链接 (.NET Framework SDK Overview),该链接已在 SDK 安装过程中添加至您的桌面。
  HTML 页面打开后,单击 .NET Framework Samples 链接。
  按照安装步骤来安装示例。
  安装完成后,您可以在http://localhost/quickstart/default.htm访问示例。
  最后,在浏览默认文档时,您可以选择页面顶端的 ASP.NET 链接。此链接包含了 ASP.NET
示例的列表。这个教程是目前国际上面唯一的完全教程,也是Microsoft提供给我们学习ASP.net的唯一教程,可惜是全英文的,ASP.net的
先行者,全靠它了。
  1.5 学习ASP.net 的过程中如何求助--加入 ASPNG 讨论列表
   Charles Carroll 作为不断壮大的 ASP.NET 社团的领导者之一,一直尽心尽力地主持着基于电子邮件的 ASP.NET 讨论列表。事实上,从七月初专业开发人员会议 (PDC) 的第一天开始,这个讨论列表就一直存。/在。
  此讨论列表是学习和发布日益丰富的 ASP.NET 开发人员知识的最佳选择。Charles 会检查和筛选所有的消息,确保发布的文章都与此列表相关,从而使讨论不脱离主题。
  除了社区方面的列表以外,Microsoft .NET Framework 小组还定期参加讨论并发布示例代码。最近一次是 Scott Guthrie 发布了一个动态生成图像的 ASP.NET 示例。
  要加入讨论列表,只需访问(英文)。在此页面上,您可以找到与 ASP.NET 相关的不同主题的电子邮件讨论列表的完整列表。最活跃的列表是 ASPNGBeta,我们推荐您加入这个列表。请从列表中选择 ASPNGBeta。您也可以直接访问(英文),选择所需的接收电子邮件分发的选项。
  1.6 完整的.NET 解决方案演示
  IBuySpy Microsoft ASP.NET 示例应用程序
  IBuySpy(英文)是功能全面的电子商务应用程序,它详细介绍了如何使用 ASP.NET 创建高性能、可伸缩的 Web
应用程序。您可以联机浏览示例应用程序(包括完整的源代码和文档),也可以下载完整的 C# 或 Visual Basic.NET 版本的应用程序。
  1.7 免费的.net空间
  Brinkster Inc.(英文)是最大的免费 ASP Web 主机服务提供商,它提供免费 ASP.NET 主机服务。加入的每个成员可获得
5 MB 空间用于测试和学习 ASP.NET。用于测试和学习的成员身份,给开发人员提供了了解这项新技术的机会。Brinkster 提供免费
ASP 主机服务已经有一年多的时间,在 ASP/ASP.NET 主机服务市场处于领先地位。
 (速度不是很理想)
  1.8 国外相关的技术支持网站
文)是比较全面的 ASP.NET 社区站点之一,由 Steve Schofield 管理。您可以在这里找到十多篇关于 ASP.NET
的文章,以及联机的 ASP.NET 快速入门示例。如果您不能安装 NET.SDK,这是您学习 ASP.NET
的不错的选择。作为奖励,您还可以得到 Wrox Press 出版的 A Preview of ASP.NET 第 1 章的联机版本。
文)是另外一个比较全面的 ASP.NET 相关站点。ASPNG 包括至以下内容的链接:Charles Carroll 上载的 ASP.NET
类和 Stephen Walther 上载的 ASP.NET Workshop。最后,ASPNG
还包括一个比较活跃的电子邮件讨论列表。相关信息请参见(英文)。
 (英文)几篇 ASP.NET 相关文章,以及按线索组织的、基于 Web 讨论的 ASP.NET 论坛。
 (英文)Wrox Press 的联机杂志已经有 10 篇关于 ASP.NET 的文章,范围从 ADO+ 到生成服务器控件。
 (英文)4GuysFromRolla 包括一些文章和其他相关资源。文章内容涉及 ADO+ 和 ASP.NET 本身的概述。
 (英文)最后, 包含比较全面的 ASP.NET 列表和可用的 .NET 相关资源。从书籍、Web 站点到活动,您都可以在这里找到感兴趣的东西。
阅读(...) 评论()

我要回帖

更多关于 笔记本第一次开机慢 的文章

 

随机推荐