- 浏览: 367991 次
- 性别:
最新评论
-
天使建站:
这里这篇文章更详细 还有完整的实例演示:js跳出循环:brea ...
js跳出循环的方法区别(break,continue,return) -
jahentao:
我觉得Jcreator和eclipse中的列出属性和方法,很多 ...
反射原理 -
T240178168:
相互交流下吧
ie9以下都有这个问题(ajax) -
blackproof:
试了一下,的确第一种写法oracle优化了,效率比第二种快多了 ...
Oracle分页sql语句 -
杨白白:
进程与线程
调整JSP和servlet的一些非常实用的方法,它将使你的servlet和JSP页面响应速度更快,更具可扩展性。和系统上的负载会在用户数量增加的情况下,显示出平稳的长期趋势。在这篇文章中,我将通过实际例子和配置意想不到的升级应用程序的性能。其中,在你的编程工作中的一些调谐技术。和其他技术相关的应用程序服务器配置。
在这篇文章中,我们将详细地描述怎样通过调整servlet和JSP页面,您的应用程序,以提高整体性能。在阅读本文之前,假设你有一个基本的servlet和JSP的知识。
方法一:在servlet的init()方法的缓存数据
当应用服务器初始化servlet实例,为客户端请求提供服务时,它调用servlet的init()方法。生命周期的一个servlet的init()方法只被调用一次。在init()方法中缓存静态数据或完成,只需要执行耗时的操作,可以大大提高系统的性能。
例如,在init()方法来建立一个JDBC连接池是一个最好的例子,假设我们是用JDBC2.0的DataSource接口,数据库连接,在正常情况下,我们需要通过JNDI来源获取的具体数据。我们可以想像,在一个特定的应用程序,如果每次SQL查询必须执行一次JNDI查找,然后,系统性能将会急剧下降。解决方法是将下面的代码,通过缓存的数据源的SQL调用,可以继续使用它的下一次:
公共类ControllerServlet延伸的HttpServlet {私人javax.sql.DataSource的testDS = NULL;公共无效的init(ServletConfig配置)抛出ServletException {super.init(配置);上下文CTX = NULL;尝试{CTX =新的InitialContext(); testDS =( javax.sql.DataSource的)ctx.lookup(“jdbc / testDS的”);}的catch(NamingException的NE){ne.printStackTrace();}赶上(例外五){论坛主题贴();}}公共javax.sql。 DataSource的getTestDS(){返回testDS;} ...}方法2:禁用servlet和JSP自动重载(自动重载)
的Servlet / JSP提供了一个实用的技术,即自动重载技术,它提供了一个良好的发展环境,而无需重新启动应用服务器,当你改变servlet和JSP页面的开发。然而,这个系统在生产阶段的技术资源,是一个巨大的损失,因为它会给JSP引擎的类装载器(classloader)下施加了沉重的负担。因此,关闭自动重载功能对系统性能有很大的帮助。
方法3:不要滥用HttpSession中
在许多应用中,我们的程序需要保持客户端的状态,以便页面可以是相互关联的。不幸的是,出生由于HTTP的无状态,从而无法保存客户端状态。一般应用服务器提供了一个会议,以保存客户的状态。 JSP应用服务器的HttpSession要实现会议的功能,但在同一时间,很方便,它也带来了不小的负担系统。因为每当你获得或更新session时,系统是费时的操作顺序。您可以向以下HttpSession来提高系统的性能:
如果你不需要,你应该关闭JSP页面的HttpSession的缺省设置:如果你不明确指定,然后每个JSP页面将默认创建一个HttpSession。如果你不需要使用在你的JSP会话,然后由下面的JSP页面指示符来禁止它:
<%会话=“假”%>不存储在HttpSession中的大量数据,如:如果你存储在HttpSession中大型数据之类的,然后,只要是读,写,应用服务器将其序列化,从而增加了系统的额外负担。像更大的HttpSession中存储的数据,该系统的性能下降得更快。
当你不需要HttpSession中,尽快释放它:当你不再需要一个会话,您可以致电HttpSession.invalidate()方法来释放它。
尽可能的会话超时设置过短:在JSP应用服务器,默认的会话超时。当客户在此时间后,再没有会话的操作,系统会自动从内存中释放。超时设置就会越大系统的性能较低,所以最好的办法是要尽量保持在一个较低的水平及其价值。
方法4:页面输出压缩
压缩是解决数据冗余的一个好方法,尤其是在欠发达的网络带宽,今天。一些浏览器支持gzip(GNU zip的)压缩的HTML文件,这种方法可以大大减少HTML文件的下载时间。
因此,如果你的servlet或JSP页面生成的压缩的HTML页面,然后,用户会发现页面浏览速度是非常快的。不幸的是,并非所有浏览器都支持gzip压缩,但可以由客户在你的程序来检查浏览器是否支持它。下面是有关此方法的一个片段:
公共无效的doGet(HttpServletRequest的请求,HttpServletResponse的回应)=空字符串编码= request.getHeader(“的Accept-Encoding”)抛出IOException异常,ServletException {OutputStream的!(encoding! = NULL,&& encoding.indexOf(“gzip压缩”)= -1){request.setHeader(“内容编码”,使用“gzip”);出新的GZIPOutputStream的(request.getOutputStream());}!否则,如果(encoding!空&& encoding.indexOf的(“压缩”)= -1){request.setHeader(“内容编码”,“压缩”);出新ZIPOutputStream(request.getOutputStream());} {出= request.getOutputStream();} ......}方法5:使用线程池
默认的应用服务器为每个客户端请求创建一个线程处理,并为他们的service()方法,当service()方法调用完成分配,相应的线程也将被撤回。创建和撤消线程会消耗一定量的系统资源,降低系统的性能在此默认模式。但是,幸运的是,我们可以改变这种情况下,通过创建一个线程池。
此外,我们必须为这个线程池设置一个最小线程数和一个最大线程数。应用服务器启动时,它会创建一个数等于最低数量的线程,线程池,当客户的要求,相应的出池进行处理,处理完成时,然后英寸线程池线程如果线程池是不够的,系统会自动地增加池中线程的数量,但总不能超过最大线程数。通过使用线程池,当客户端请求在系统负荷剧增将呈现平稳上升的曲线,从而提高了系统的可扩展性。
方法6:选择正确的页面包含机制
有两种方法可以用来包含另一个JSP页面
1,使用include指令(<%@ includee文件“的test.jsp”%>)。
2,使用的JSP指标(<jsp:includee page="test.jsp" flush="true"/>)。
在实践中,我发现,如果使用第一种方法,可以使一个更高的系统性能。
方法7:确定的JavaBean的生命周期
在JSP的一个强大的地方是javabean的支持。在JSP页面中使用的<jsp:useBean>标签,JavaBean可以直接插入到一个JSP页面。其用途如下:
<jsp:useBean id="name" scope="page|request|session|application" class= "package.className" type="typeName"> </ JSP:useBean的scope属性指出了这个bean的生命周期。默认页面的生命周期。如果你没有选择权的bean的生命周期,它会影响系统的性能。
例如,如果你想使用bean的请求,但你却将会话bean的生命周期设置,这个请求结束时,这个bean将仍然保留在内存中,除非会话超时或用户关闭浏览器。这会消耗一些内存,并不必要地增加了JVM垃圾收集器的工作量。因此,设置正确的bean的生命周期,并尽快豆清洗他们的使命结束后,它会使用系统性能的改善。
其他一些有用的方法,尽可能的字符串串联操作不使用“+”操作符:在java编程中,我们经常使用“+”操作符连接多个字符串,但你可能从来没有想到这一点实际上对系统性能的影响?由于字符串是一个常量,因此JVM会产生一些临时对象。您可以使用“+”越多,像更使系统的性能将有一定的影响产生的暂时的。解决的办法是使用StringBuffer的,而不是像“+”操作符。
避免使用System.out.println()方法:由于对System.out.println()是一个同步调用,调用它,磁盘I / O操作必须等待它的完成,所以我们必须要尽量避免它调用。但我们在调试器中,它是一个重要的得心应手的工具,为了解决这个矛盾,我建议你使用Log4j工具http://Jakarta.apache.org;最好的,它可以方便调试,而不会产生系统通过out.println()这样的方式。
ServletOutputStream与PrintWriter的权衡:使用PrintWriter可能会带来一些小的开销,因为它的原始输出转换为字符流输出,所以如果你使用它作为页面输出,那么系统必须支付一个转换过程。使用ServletOutputStream作为页面输出不存在问题,但它是一个二进制输出。为了在实际应用中的利弊权衡。
总结
Servlet和JSP调整技术,大大提高了应用程序的性能,从而提升整个J2EE应用的性能。通过这些调优技术,你可以发现,其实,不是一个技术平台(如J2EE和。NET的争议)确定应用程序的性能,重要的是你想有一个更深入的了解这个平台,所以可以从根本上优化的应用。
在这篇文章中,我们将详细地描述怎样通过调整servlet和JSP页面,您的应用程序,以提高整体性能。在阅读本文之前,假设你有一个基本的servlet和JSP的知识。
方法一:在servlet的init()方法的缓存数据
当应用服务器初始化servlet实例,为客户端请求提供服务时,它调用servlet的init()方法。生命周期的一个servlet的init()方法只被调用一次。在init()方法中缓存静态数据或完成,只需要执行耗时的操作,可以大大提高系统的性能。
例如,在init()方法来建立一个JDBC连接池是一个最好的例子,假设我们是用JDBC2.0的DataSource接口,数据库连接,在正常情况下,我们需要通过JNDI来源获取的具体数据。我们可以想像,在一个特定的应用程序,如果每次SQL查询必须执行一次JNDI查找,然后,系统性能将会急剧下降。解决方法是将下面的代码,通过缓存的数据源的SQL调用,可以继续使用它的下一次:
公共类ControllerServlet延伸的HttpServlet {私人javax.sql.DataSource的testDS = NULL;公共无效的init(ServletConfig配置)抛出ServletException {super.init(配置);上下文CTX = NULL;尝试{CTX =新的InitialContext(); testDS =( javax.sql.DataSource的)ctx.lookup(“jdbc / testDS的”);}的catch(NamingException的NE){ne.printStackTrace();}赶上(例外五){论坛主题贴();}}公共javax.sql。 DataSource的getTestDS(){返回testDS;} ...}方法2:禁用servlet和JSP自动重载(自动重载)
的Servlet / JSP提供了一个实用的技术,即自动重载技术,它提供了一个良好的发展环境,而无需重新启动应用服务器,当你改变servlet和JSP页面的开发。然而,这个系统在生产阶段的技术资源,是一个巨大的损失,因为它会给JSP引擎的类装载器(classloader)下施加了沉重的负担。因此,关闭自动重载功能对系统性能有很大的帮助。
方法3:不要滥用HttpSession中
在许多应用中,我们的程序需要保持客户端的状态,以便页面可以是相互关联的。不幸的是,出生由于HTTP的无状态,从而无法保存客户端状态。一般应用服务器提供了一个会议,以保存客户的状态。 JSP应用服务器的HttpSession要实现会议的功能,但在同一时间,很方便,它也带来了不小的负担系统。因为每当你获得或更新session时,系统是费时的操作顺序。您可以向以下HttpSession来提高系统的性能:
如果你不需要,你应该关闭JSP页面的HttpSession的缺省设置:如果你不明确指定,然后每个JSP页面将默认创建一个HttpSession。如果你不需要使用在你的JSP会话,然后由下面的JSP页面指示符来禁止它:
<%会话=“假”%>不存储在HttpSession中的大量数据,如:如果你存储在HttpSession中大型数据之类的,然后,只要是读,写,应用服务器将其序列化,从而增加了系统的额外负担。像更大的HttpSession中存储的数据,该系统的性能下降得更快。
当你不需要HttpSession中,尽快释放它:当你不再需要一个会话,您可以致电HttpSession.invalidate()方法来释放它。
尽可能的会话超时设置过短:在JSP应用服务器,默认的会话超时。当客户在此时间后,再没有会话的操作,系统会自动从内存中释放。超时设置就会越大系统的性能较低,所以最好的办法是要尽量保持在一个较低的水平及其价值。
方法4:页面输出压缩
压缩是解决数据冗余的一个好方法,尤其是在欠发达的网络带宽,今天。一些浏览器支持gzip(GNU zip的)压缩的HTML文件,这种方法可以大大减少HTML文件的下载时间。
因此,如果你的servlet或JSP页面生成的压缩的HTML页面,然后,用户会发现页面浏览速度是非常快的。不幸的是,并非所有浏览器都支持gzip压缩,但可以由客户在你的程序来检查浏览器是否支持它。下面是有关此方法的一个片段:
公共无效的doGet(HttpServletRequest的请求,HttpServletResponse的回应)=空字符串编码= request.getHeader(“的Accept-Encoding”)抛出IOException异常,ServletException {OutputStream的!(encoding! = NULL,&& encoding.indexOf(“gzip压缩”)= -1){request.setHeader(“内容编码”,使用“gzip”);出新的GZIPOutputStream的(request.getOutputStream());}!否则,如果(encoding!空&& encoding.indexOf的(“压缩”)= -1){request.setHeader(“内容编码”,“压缩”);出新ZIPOutputStream(request.getOutputStream());} {出= request.getOutputStream();} ......}方法5:使用线程池
默认的应用服务器为每个客户端请求创建一个线程处理,并为他们的service()方法,当service()方法调用完成分配,相应的线程也将被撤回。创建和撤消线程会消耗一定量的系统资源,降低系统的性能在此默认模式。但是,幸运的是,我们可以改变这种情况下,通过创建一个线程池。
此外,我们必须为这个线程池设置一个最小线程数和一个最大线程数。应用服务器启动时,它会创建一个数等于最低数量的线程,线程池,当客户的要求,相应的出池进行处理,处理完成时,然后英寸线程池线程如果线程池是不够的,系统会自动地增加池中线程的数量,但总不能超过最大线程数。通过使用线程池,当客户端请求在系统负荷剧增将呈现平稳上升的曲线,从而提高了系统的可扩展性。
方法6:选择正确的页面包含机制
有两种方法可以用来包含另一个JSP页面
1,使用include指令(<%@ includee文件“的test.jsp”%>)。
2,使用的JSP指标(<jsp:includee page="test.jsp" flush="true"/>)。
在实践中,我发现,如果使用第一种方法,可以使一个更高的系统性能。
方法7:确定的JavaBean的生命周期
在JSP的一个强大的地方是javabean的支持。在JSP页面中使用的<jsp:useBean>标签,JavaBean可以直接插入到一个JSP页面。其用途如下:
<jsp:useBean id="name" scope="page|request|session|application" class= "package.className" type="typeName"> </ JSP:useBean的scope属性指出了这个bean的生命周期。默认页面的生命周期。如果你没有选择权的bean的生命周期,它会影响系统的性能。
例如,如果你想使用bean的请求,但你却将会话bean的生命周期设置,这个请求结束时,这个bean将仍然保留在内存中,除非会话超时或用户关闭浏览器。这会消耗一些内存,并不必要地增加了JVM垃圾收集器的工作量。因此,设置正确的bean的生命周期,并尽快豆清洗他们的使命结束后,它会使用系统性能的改善。
其他一些有用的方法,尽可能的字符串串联操作不使用“+”操作符:在java编程中,我们经常使用“+”操作符连接多个字符串,但你可能从来没有想到这一点实际上对系统性能的影响?由于字符串是一个常量,因此JVM会产生一些临时对象。您可以使用“+”越多,像更使系统的性能将有一定的影响产生的暂时的。解决的办法是使用StringBuffer的,而不是像“+”操作符。
避免使用System.out.println()方法:由于对System.out.println()是一个同步调用,调用它,磁盘I / O操作必须等待它的完成,所以我们必须要尽量避免它调用。但我们在调试器中,它是一个重要的得心应手的工具,为了解决这个矛盾,我建议你使用Log4j工具http://Jakarta.apache.org;最好的,它可以方便调试,而不会产生系统通过out.println()这样的方式。
ServletOutputStream与PrintWriter的权衡:使用PrintWriter可能会带来一些小的开销,因为它的原始输出转换为字符流输出,所以如果你使用它作为页面输出,那么系统必须支付一个转换过程。使用ServletOutputStream作为页面输出不存在问题,但它是一个二进制输出。为了在实际应用中的利弊权衡。
总结
Servlet和JSP调整技术,大大提高了应用程序的性能,从而提升整个J2EE应用的性能。通过这些调优技术,你可以发现,其实,不是一个技术平台(如J2EE和。NET的争议)确定应用程序的性能,重要的是你想有一个更深入的了解这个平台,所以可以从根本上优化的应用。
发表评论
-
UML类图与类的关系详解-UML一波流系列
2016-12-11 20:23 680http://peterwei.iteye.com/blog/ ... -
201612-8笔记
2016-12-08 22:46 589数据库设计 1.主表明确 主表一直是主,里面不需要关联关系 ... -
OOP和AOP区别
2015-04-27 17:18 3436OOP(面向对象编程)针对业务处理过程的实体及其属性和行为进行 ... -
正则表达式的基础语法
2015-01-06 23:08 808首先让我们看两个特殊 ... -
Filter过滤器在Web.xml中几个标签说明
2015-01-06 22:58 1675<!-- 定义Filter --> <fi ... -
JSP中out.print 和 out.write 区别
2015-01-06 22:55 1690jsp中的out对象是JspWriter类型的.而JspWri ... -
使用Eclipse开发Java Web过程中Debug调试的使用方法
2014-03-06 21:35 1661这里介绍的是在Eclipse中的Debug调试。 首先右击 ... -
iBATIS CDATA
2014-02-27 23:52 860在ibatis 中,SQL语句经常会出现一些特殊符号,比如:& ... -
isNotEmpty isNotNull
2014-01-27 14:20 1531ibatis : isNotEmpty:过滤空串"& ... -
读书:《代码整洁之道》
2014-01-17 00:10 12221. 本书内容概要 核心观 ... -
String,StringBuffer和StringBuild性能
2014-01-08 22:09 975在不考虑线程安全的前 ... -
stringbuffer 的缓冲长度
2014-01-08 22:06 14351 StringBuffer缓冲长度,或者叫容量会随着 ... -
重构——代码的坏味道
2014-01-04 00:17 878重构——代码的坏味道 1. Duplicated Code(重 ... -
xls与csv文件是什么区别?功能和作用上有什么不同
2013-11-03 22:30 197371 xls 文件就是Microsoft e ... -
toString() ,String,String.valueOf
2013-07-20 00:52 2498常用的方法有Object#toString(),(String ... -
jre与jdk的区别
2013-07-20 00:48 2586JDK就是Java Development Kit. ... -
Java编译原理
2013-01-22 21:11 1884Java编译原理 1. 关于动 ... -
JVM的基本工作原理和特点
2013-01-22 21:08 1339JVM的基本工作原理和特点 操作系统装入jvm是通过jd ... -
Math的属性之对数
2013-01-22 11:20 1579Math.LN2 2的自然对数 Math.LN10 10的自然 ... -
面试题50
2013-01-14 23:37 1435【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起 ...
相关推荐
调整JSP和servlet的一些非常实用的方法,它可使你的servlet和JSP页面响应更快,扩展性更强。而且在用户数增加的情况下,系统负载会呈现出平滑上长的趋势。在本文中,我将通过一些实际例子和配置方法使得你的应用程序...
提升 JSP 页面响应速度的七大秘籍绝招 本文将介绍七大秘籍绝招,以提升 JSP 页面响应速度,提高系统性能。这些秘籍绝招涵盖了 JSP 页面的生命周期、Servlet 的 init() 方法、自动重载功能、HttpSession 的使用、...
以下是提高JSP应用程序运行速度的七大绝招: ### 1. 缓存机制的合理应用 缓存可以显著提高JSP应用程序的响应速度。开发者应充分利用HTTP缓存头,如`Cache-Control`和`Expires`,来控制浏览器缓存静态资源,减少对...
### 提升JSP中页面响应速度的七大秘籍绝招 在现代Web开发中,Java Server Pages(JSP)作为一种动态网页技术,被广泛应用于构建交互式的网站和应用程序。然而,随着用户对网页加载速度的高要求,优化JSP页面的响应...
- 优化JSP页面本身也可以提升加载速度。在“Window > Preferences > General > Editors > Text Editors > Spelling”中,可以关闭拼写检查来减少对性能的影响。 8. 关于Tomcat配置 - 调整Tomcat服务器的配置参数...
在JSP页面响应速度优化的过程中,`Servlet`的初始化阶段是一个重要的切入点。通过合理利用`init()`方法,可以在服务器启动时完成一系列预处理工作,从而减少每次请求时的处理时间。 **具体做法:** - **数据库连接...
### JSP_Servlet应用程序优化的八种方法 #### 技术1:在`HttpServlet init()`方法中缓存数据 为了提升JSP/Servlet应用程序的性能,开发者可以在`init()`方法中缓存静态数据或执行那些成本较高的初始化操作。这是...
4. **性能提升**:EL的解析速度比纯Java脚本let快,因为它在服务器端被优化为Java方法调用。 **注意事项** 1. **只适用于公共方法**:EL只能调用JavaBean的公共方法,私有方法无法直接访问。 2. **方法签名匹配**:...
页面静态化是一种常用的提高网页加载速度的方法,特别是在那些数据更新不频繁的场景下。通过将动态生成的内容转换为静态HTML文件,可以显著减少服务器的处理时间,并降低数据库的访问频率。其中提到的Velocity和...
本文件“JSP分页技术(多种方法)”中,将探讨几种常见的JSP分页实现方法。 1. **基于SQL的分页** 这是最基础的分页方法,通过在SQL查询语句中添加`LIMIT`和`OFFSET`或`ROWNUM`(根据数据库类型)来实现。例如,在...
总结起来,JSP和Servlet实现分页的方法主要分为基于请求参数和基于会话两种。理解这两种方法的工作原理并根据项目需求选择合适的方式是提升Web应用性能和用户体验的关键。通过阅读和实践提供的"openpage"相关文件,...
以下是一些针对MyEclipse启动速度优化的关键点: 1. **关闭自动验证**:在`Windows > Preferences > MyEclipse > Validation`中取消Build下的所有勾选,以减少启动时的验证过程。当需要验证特定文件时,可以右键...
在提高JDBC设计中JSP数据库访问速度的过程中,我们需要关注几个关键点,包括JSP的模块化、MVC设计模式的应用、JDBC操作的优化以及使用自定义标签库(Tag Libraries)来提升代码的可读性和可维护性。 首先,JSP作为...
本文将深入探讨如何使用JSP技术实现SEO优化,以及它如何帮助你轻松推广网站。 首先,JSP(JavaServer Pages)是一种动态网页开发技术,允许开发者在HTML中嵌入Java代码,从而实现服务器端的数据处理和页面生成。在...
**提升JSP页面响应速度的七大秘籍绝招** 在构建基于Java的Web应用时,JSP页面的性能优化至关重要,因为它直接影响用户体验。以下是一些提升JSP页面响应速度的有效策略: 1. **在servlet的init()方法中缓存数据** ...
这种需求可以通过多种方式实现,其中一种较为常见的做法是利用中间JSP页面来间接调用Action,从而达到自动加载数据的目的。 #### 二、原理及实现步骤 ##### 2.1 原理介绍 在Struts框架中,通常通过配置文件...