就servlet规范本身,数据可以放在3个地方:request、session、servletContext.
request:
好处:用完就仍,不会导致资源占用的无限增长。
弊处:每次要用都从数据库中抓,多做操作,自然会对性能有一些影响。
session:
好处:不用每次都去数据库抓,少做操作。
弊处:每个客户都有一个session,只能自己使用,不同session可能保存大量重复数据;
可能耗费大量服务器内存;
另外session构建在cookie和url重写的基础上,所以用session实现会话跟踪,会用掉一点点服务器带宽和客户端保持联络,
当然session越多,耗费的带宽越多,理论上也会对性能造成影响。
集群的session同步会是个问题。
servletContext:
好处:不用每次都去数据库抓,少做操作。
存储的数据所有客户都可以用。
可减少重复在内存中存储数据造成的开销。
弊处:很多时候相同的数据可能不多(相当于cache的命中率很低)。
其实以上3中方法都有利有弊,各自的好处在某种条件下,也都会转变为弊处。所以不妨综合使用,相当于一个“第三方用法”(只讲一下思路,否则太过繁琐,涉及到的相关技术点请参考有关技术资料):
request不说了,重点说说session和servletContext:
--session的可控应用
session的最大问题是资源回收,两类回收方法:
主动回收:浏览器被关闭,而为提交触发清理动作的请求时,该方法失效,而且很常见。
超时回收:设置session的setMaxInactiveInterval属性或在web.xml中配置超时时间,然后交给jvm的垃圾处理器处理。
不过不要报太大希望,jvm的垃圾收集器并不灵光。
可以用另一种替代方法缓解该问题,比如限制session的数量,可以用HttpSessionListener实现,这样可以缓解session带来的吃内存问题,当然这种做法每次都需要判断session数量,当session达到限定数量时还必须用其他方法处理了,这些细节繁琐,而且要谨慎处理。
--servletContext
如果说session是一个“局部缓存”,那servletContext就是一个“全局缓存”了,不妨把它当作cache(这里不讲究用词的严谨性,仅为了更好说明问题)。cache的大小是当前应用可使用的最大内存。cache的最大问题是提高命中率,命中率高,内存占用少,效率高,命中率低,则内存占用多而且效率低。这种应用的技术实现比“session的可空应用”要简单,适用于相同数据多的地方,这个要事先有所判断,如果用不好则有弊无利。
如果仅使用servlet规范给出的3种机制,任何一种都达不到好处兼收的效果,所以要发挥3种方法的好处、摒弃弊处,必须综合运用,做一些技术框架的构建工作,而且有些地方还比较繁琐(还好框架是可重用的)。
有时候寻求或实现“平衡”(或者说尽取其利而摒其害),要付出很大代价,根据不同的情况,这些代价或是值得,或是不值得。也可以“两害相权取其轻”,或许是最便捷的方法。
分享到:
相关推荐
MLDN 李兴华 Java Web 开发实战经典.pdf (高清版) 全书分为两部分,需 要全部下载下载一起解压,此部分为第二部分 带有书签,清华大学出版社 第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 ...
第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器...
MLDN 李兴华 Java Web 开发实战经典.pdf (高清版) 全书分为两部分,需 要全部下载下载一起解压,此部分为第一部分 带有书签,清华大学出版社 第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 ...
第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器...
### Java Web开发基础知识点 #### 一、Java Web开发概述 Java Web开发是构建基于Java技术的网络应用程序的过程。它涵盖了从前端用户界面到后端数据处理的各种技术栈。对于那些对Web概念模糊的人来说,本参考资料...
在Java Web开发的更高级阶段,我们还会学习到如JSTL(JavaServer Pages Standard Tag Library)、EL(Expression Language)、Java Bean,以及Spring MVC这样的框架。Spring MVC是Spring框架的一部分,用于构建高效...
MLDN 李兴华 Java Web 开发实战经典.pdf (高清版) 带有书签,清华大学出版社 第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发...
第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器...
第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器...
Java开发工程师在Web方向的工作涉及众多技术和...在实际的Java Web开发实践中,开发者需要结合以上知识点,运用到实际项目中,通过解决具体问题来提升技能和经验。教师的指导和项目评分有助于加深理解和提高开发能力。
在web.xml中定义如下: <param-name>ScanPackage <param-value>com.mvc.controller</param-value> 容器在启动时候,会将com.mvc.controller下所有映射路径绑定处理方法上,假如在扫描包中定义下列类: import ...
### Java for the Web with Servlets: A Comprehensive Overview #### Introduction "Java for the Web with Servlets, JSP, and EJB: A Developer’s Guide to J2EE Solutions" by Budi Kurniawan is a ...
### Java Web 笔试面试题集锦解析 #### 1. JSP 的内置对象及其作用 JSP (Java Server Pages) 提供了九个内置对象,这些对象在编写 JSP 页面时可以直接使用,无需导入或声明。它们为开发者提供了丰富的功能,简化了...
11. Applet是可以访问后台数据的,但现代Web开发中已较少使用。 12. Servlet在Web服务器中运行,由Web容器(如Tomcat)管理。 13. Servlet的优点包括:易于扩展、跨平台、动态生成内容;缺点包括:开发效率低,...
在这个示例中,我们首先从`ServletContext`中获取到了名为`MySource`的数据源对象,然后将其传递给了`LoginBean`实例,以便执行具体的数据库操作。 #### 五、总结 通过以上步骤,我们成功地在Struts框架中配置了...
Struts框架是一个基于MVC(Model-View-Controller)设计模式的Java Web开发框架,它旨在简化Java Web应用的开发工作。MVC模式将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller),以...
### Web应用开发知识点详解 #### 一、JSP基本概念及使用 1. **JSP自动加载的基本类:** - JSP默认加载了`java.lang.*`、`javax.servlet.*`和`javax.servlet.jsp.*`包中的类,而`java.io.*`并不是JSP自动加载的...
Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常...
【JSP(Java Server Pages)概述】 JSP(Java Server Pages)是Java平台上...这些内容对于理解和掌握Web开发,特别是Java Web开发,具有重要意义。通过深入学习,开发者可以运用这些技术构建高效、稳定的Web应用程序。