在JSP程序中Application使用浅析

开发 后端
本文向您介绍JSP程序中Application Session Page的设置,通过分析和实例代码详解讲解Application的特性。

JSP程序调用Javeabean命令UseBean中有Scope设置,一般有Application session page等设置,Page就是每页重新产生usebean中的javabean新对象,一般情况是用这种,如果多个JSP程序间为共享数据,可以使用session

而Application的意思,该javabean将一直存在,与session相对用户来说,Application是相对应用程序的,一般来说,一个用户有一个session,并且随着用户离开而消失;而Application则是一直存在,类似一个servlet程序,类似整个系统的"全局变量",而且只有一个实例。

MVC中控制功能

因此application这个特性,很适合用来做MVC中的控制功能,一般传统MVC是用servlet做控制功能,V基本是JSP页面,M就是中间件Javabean之类。

但是随着JSP功能的完善和推广,逐渐有替代servlet之趋势,我们在实践中更多使用的也是JSP,有时为了省却麻烦的事情,就使用JSP代替servlet.尤其是其控制功能。

实际上,这个控制功能是封装在一个Javabean中,JSP程序使用scope=application来调用这个Javabean,这样,具备控制功能的javabean就类似servlet常驻内存,并和后台各种中间件交互操作。

“首页”的展现

在实际应用中,我们经常有多个用户要同时访问一个页面,如首页,这个首页中有很多功能要运行,比如目录分类,首页程序要从数据库中读入树形数据并展开,输出到首页,这个功能是封装在Javabean中的。

那么首页JSP程序调用这个Javabean时,使用scope=application, 再通过树形数据的缓冲算法,这样,多个用户同时访问首页时,首页JSP程序就无需每次启动Javabean然后再反复读取数据库了。无疑大大提高速度。

所以如果你的首页JSP访问量很高,那么就应该在这方面多花点时间优化。

数据库连接缓冲

<jsp:useBean id="cods" 
  class="oracle.jdbc.pool.OracleConnectionCacheImpl"   
  scope="application" /> 
 
 
<event:application_OnStart> 
<%   
cods.setURL("jdbc:oracle:thin:@HOST:PORT:SID");  
cods.setUser("scott");  
cods.setPassword("tiger");  
cods.setStmtCache (5);   
%> 
</event:application_OnStart> 
 
 
<%@ page import="java.sql.*, javax.sql.*, oracle.jdbc.pool.*" %> 
 
<!----------------------------------------------------------------  
* This is a JavaServer Page that uses Connection Caching over  
application  
* scope. The Cache is created in an application scope in  
globals.jsa file.   
* Connection is obtained from the Cache and recycled back once  
done.  
 
--------------------------------------------------------------------!> 
 
<HTML>   
<HEAD>   
<TITLE> 
ConnCache JSP  
</TITLE> 
</HEAD> 
<BODY BGCOLOR=EOFFFO>   
<H1> Hello   
<%= (request.getRemoteUser() != null? ", " +  
request.getRemoteUser() : "") %> 
! I am Connection Caching JSP.  
</H1> 
<HR> 
<B> I get the Connection from the Cache and recycle it back.  
</B>   
 
<P> 
<%  
try {  
Connection conn = cods.getConnection();  
 
Statement stmt = conn.createStatement ();  
ResultSet rset = stmt.executeQuery ("SELECT ename, sal " +   
"FROM scott.emp ORDER BY ename");  
 
if (rset.next()) {  
%> 
<TABLE BORDER=1 BGCOLOR="C0C0C0"> 
<TH WIDTH=200 BGCOLOR="white"> <I>Employee Name</I> </TH> 
<TH WIDTH=100 BGCOLOR="white"> <I>Salary</I> </TH> 
<TR> <TD ALIGN=CENTER> <%= rset.getString(1) %> </TD> 
<TD ALIGN=CENTER> $<%= rset.getDouble(2) %> </TD> 
</TR> 
 
<% while (rset.next()) {  
%> 
 
<TR> <TD ALIGN=CENTER> <%= rset.getString(1) %> </TD> 
<TD ALIGN=CENTER> $<%= rset.getDouble(2) %> </TD> 
</TR> 
 
<% }  
%> 
</TABLE> 
<% }   
else {  
%> 
<P> Sorry, the query returned no rows! </P> 
 
<%   
}  
rset.close();  
stmt.close();  
conn.close(); // Put the Connection Back into the Pool  
 
} catch (SQLException e) {  
out.println("<P>" + "There was an error doing the query:");  
out.println ("<PRE>" + e + "</PRE> \n <P>");  
}  
%> 
 
</BODY> 
</HTML> 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.

在JSP程序的实际运行中,使用Application缓存数据库的连接,每次使用时,从缓冲中取出,用完就返回。

 

【编辑推荐】

  1. 教你在JSP中使用JavaMail
  2. 在JSP中动态生成并调用JSP程序
  3. JSTL介绍—JSP编程新组件 允许用标签编程
  4. JSP开发所需要的Eclipse插件及安装配置方法
  5. JDBC与JSP简单模拟MVC三层架构
责任编辑:佚名 来源: jdon.com
相关推荐

2009-06-29 17:57:30

ApplicationJSP

2009-06-10 17:03:36

JSP动态生成

2009-07-02 11:34:42

JSP指令JSP开发

2009-03-17 16:18:51

JspActionStruts

2009-07-02 10:51:21

脚本编程JSP开发

2009-06-29 17:39:31

JSP设计模式

2009-07-06 13:52:56

编写JSP Tag

2009-06-30 10:59:38

fckeditorJSP

2017-05-24 09:43:42

2021-03-06 14:22:39

池化对象类库

2011-08-29 17:27:47

HTML 5交互移动应用

2009-07-03 09:08:23

JSP标记学习笔记

2009-07-06 14:05:11

JSP服务器

2009-07-03 09:08:23

JSP标记学习笔记

2009-07-14 10:47:47

MyEclipse J

2009-06-16 09:06:37

JavaMailJSP

2009-07-02 09:25:41

JSP实现页面跳转

2009-03-02 09:45:45

2009-09-28 13:23:54

HTTP编程

2009-09-11 11:33:58

C# WinForm控Attribute
点赞
收藏

51CTO技术栈公众号