知识大全 提高JSP应用程序的几个方法

Posted

篇首语:情况是在不断地变化,要使自己的思想适应新的情况,就得学习。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 提高JSP应用程序的几个方法相关的知识,希望对你有一定的参考价值。

提高JSP应用程序的几个方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  本文讲述了调整JSP和servlet的一些非常实用的方法 它可使你的servlet和JSP页面响应更快 扩展性更强 而且在用户数增加的情况下 系统负载会呈现出平滑上长的趋势 在本文中 我将通过一些实际例子和配置方法使得你的应用程序的性能有出人意料的提升 其中 某些调优技术是在你的编程工作中实现的 而另一些技术是与应用服务器的配置相关的 在本文中 我们将详细地描述怎样通过调整 servlet和JSP页面 来提高你的应用程序的总体性能 在阅读本文之前 假设你有基本的servlet和JSP的知识   方法 在servlet的init()方法中缓存数据  当应用服务器初始化servlet实例之后 为客户端请求提供服务之前 它会调用这个servlet的init()方法 在一个servlet的生命周期中 init()方法只会被调用一次 通过在init()方法中缓存一些静态的数据或完成一些只需要执行一次的 耗时的操作 就可大大地提高系统性能   例如 通过在init()方法中建立一个JDBC连接池是一个最佳例子 假设我们是用jdbc 的DataSource接口来取得数据库连接 在通常的情况下 我们需要通过JNDI来取得具体的数据源 我们可以想象在一个具体的应用中 如果每次SQL请求都要执行一次JNDI查询的话 那系统性能将会急剧下降 解决方法是如下代码 它通过缓存DataSource 使得下一次SQL调用时仍然可以继续利用它  

public class ControllerServlet extends HttpServlet private javax sql DataSource testDS = null;  public void init(ServletConfig config) throws ServletException   super init(config);   Context ctx = null;  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;    

    方法 :禁止servlet和JSP 自动重载(auto reloading)  Servlet/JSP提供了一个实用的技术 即自动重载技术 它为开发人员提供了一个好的开发环境 当你改变servlet和JSP页面后而不必重启应用服务器 然而 这种技术在产品运行阶段对系统的资源是一个极大的损耗 因为它会给JSP引擎的类装载器(classloader)带来极大的负担 因此关闭自动重载功能对系统性能的提升是一个极大的帮助 ( lian )  方法 : 不要滥用HttpSession   在很多应用中 我们的程序需要保持客户端的状态 以便页面之间可以相互联系 但不幸的是由于HTTP具有天生无状态性 从而无法保存客户端的状态 因此一般的应用服务器都提供了session来保存客户的状态 在JSP应用服务器中 是通过HttpSession对像来实现session的功能的 但在方便的同时 它也给系统带来了不小的负担 因为每当你获得或更新session时 系统者要对它进行费时的序列化操作 你可以通过对 HttpSession的以下几种处理方式来提升系统的性能    如果没有必要 就应该关闭JSP页面中对HttpSession的缺省设置 如果你没有明确指定的话 每个JSP页面都会缺省地创建一个HttpSession 如果你的JSP中不需要使用session的话 那可以通过如下的JSP页面指示符来禁止它  

<%@ page session= false %>

     不要在HttpSession中存放大的数据对像 如果你在HttpSession中存放大的数据对像的话 每当对它进行读写时 应用服务器都将对其进行序列化 从而增加了系统的额外负担 你在HttpSession中存放的数据对像越大 那系统的性能就下降得越快   当你不需要HttpSession时 尽快地释放它 当你不再需要session时 你可以通过调用HttpSession invalidate()方法来释放它   尽量将session的超时时间设得短一点 在JSP应用服务器中 有一个缺省的session的超时时间 当客户在这个时间之后没有进行任何操作的话 系统会将相关的session自动从内存中释放 超时时间设得越大 系统的性能就会越低 因此最好的方法就是尽量使得它的值保持在一个较低的水平

  方法 : 将页面输出进行压缩  压缩是解决数据冗余的一个好的方法 特别是在网络带宽不够发达的今天 有的浏览器支持gzip(GNU zip)进行来对HTML文件进行压缩 这种方法可以戏剧性地减少HTML文件的下载时间 因此 如果你将servlet或JSP页面生成的HTML页面进行压缩的话 那用户就会觉得页面浏览速度会非常快 但不幸的是 不是所有的浏览器都支持gzip压缩 但你可以通过在你的程序中检查客户的浏览器是否支持它 下面就是关于这种方法实现的一个代码片段  

public void doGet(HttpServletRequest request HttpServletResponse response)throws IOException ServletException  OutputStream out = null String encoding = request getHeader( Accept Encoding );  if (encoding != null && encoding indexOf( gzip ) != )   request setHeader( Content Encoding gzip );  out = new GZIPOutputStream(request getOutputStream());  else if (encoding != null && encoding indexOf( press ) != )   request setHeader( Content Encoding press );  out = new ZIPOutputStream(request getOutputStream());   else   out = request getOutputStream();    

    方法 : 使用线程池  应用服务器缺省地为每个不同的客户端请求创建一个线程进行处理 并为它们分派service()方法 当service()方法调用完成后 与之相应的线程也随之撤消 由于创建和撤消线程会耗费一定的系统资源 这种缺省模式降低了系统的性能 但所幸的是我们可以通过创建一个线程池来改变这种状况 另外 我们还要为这个线程池设置一个最小线程数和一个最大线程数 在应用服务器启动时 它会创建数量等于最小线程数的一个线程池 当客户有请求时 相应地从池从取出一个线程来进行处理 当处理完成后 再将线程重新放入到池中 如果池中的线程不够地话 系统会自动地增加池中线程的数量 但总量不能超过最大线程数 通过使用线程池 当客户端请求急剧增加时 系统的负载就会呈现的平滑的上升曲线 从而提高的系统的可伸缩性   方法 : 选择正确的页面包含机制  在JSP中有两种方法可以用来包含另一个页面 使用include指示符(<%@ includee file= test jsp %>) 使用jsp指示符(<jsp:includee page= test jsp flush= true />) 在实际中我发现 如果使用第一种方法的话 可以使得系统性能更高   方法 :正确地确定javabean的生命周期  JSP的一个强大的地方就是对javabean的支持 通过在JSP页面中使用<jsp:useBean>标签 可以将javabean直接插入到一个JSP页面中 它的使用方法如下  

<jsp:useBean id= name scope= page|request|session|application class= package className type= typeName ></jsp:useBean> cha138/Article/program/Java/JSP/201311/20509

相关参考

提高小麦种子质量应注意的几个环节

小麦种子质量包括种子水分、发芽率、发芽势、净度、纯度等。要提高种子质量,就要从小麦的原种种植、生育期管理、收割打碾、精选及保管贮藏等多方面综合管理和提高。1种子繁殖基地的选择种子繁殖基地要选择土壤耕性

提高小麦种子质量应注意的几个环节

小麦种子质量包括种子水分、发芽率、发芽势、净度、纯度等。要提高种子质量,就要从小麦的原种种植、生育期管理、收割打碾、精选及保管贮藏等多方面综合管理和提高。1种子繁殖基地的选择种子繁殖基地要选择土壤耕性

知识大全 Java socket应用的几个小实例

Javasocket应用的几个小实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  用于本机上的

知识大全 提高ASP.NET应用程序性能的几招方法

提高ASP.NET应用程序性能的几招方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  以下经验

知识大全 JSP、Struts避免Form重复提交的几种方案

JSP、Struts避免Form重复提交的几种方案  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

玉米春播保全苗的几个要点

提高春播玉米播种质量,做好选播良种,精细整地,适时播种对春玉米保全苗,夺丰收至关重要。一、选择适宜品种。因地制宜选择适宜对路优良品种,根据热量资源与生产实际应选择生育期在120—130天的中晚熟品种,

玉米春播保全苗的几个要点

提高春播玉米播种质量,做好选播良种,精细整地,适时播种对春玉米保全苗,夺丰收至关重要。一、选择适宜品种。因地制宜选择适宜对路优良品种,根据热量资源与生产实际应选择生育期在120—130天的中晚熟品种,

提高玉米产量的几种技巧

吉林省辉南县辉南镇农科站全体站员在经常下乡指导过程中,发现农民朋友对玉米的种植方法基本是掌握的,对于氮磷钾的施肥是没有什么问题的。但对于如何提高玉米产量,其中的几个技巧还是不太明白现就此问题简单介绍一

提高玉米产量的几种技巧

吉林省辉南县辉南镇农科站全体站员在经常下乡指导过程中,发现农民朋友对玉米的种植方法基本是掌握的,对于氮磷钾的施肥是没有什么问题的。但对于如何提高玉米产量,其中的几个技巧还是不太明白现就此问题简单介绍一

规范使用渔药的几个要点介绍

兽药残留是目前动物源食品最常见的污染源,在水产品中也不例外,导致水产品中药物超标的原因有很多,其中滥用药物和饲料添加剂是主要的原因。规范用药是防止水产品药物残留超标,提高水产品质量及跨越“绿色技术壁垒