如何写出高性能的JSP和Servlet


Posted in 面试题 onJanuary 22, 2013
最小化servlet中的java 同步。
不要用servlet的单线程模式。
使用servlet的init()方法进行一些昂贵的一次性的初始化。
避免使用System.out.pintln()调用。
避免使用共享的可修改的类变量
在servlet的多线程模式中(缺省情况下),一个应用服务器实例只有一个的servlet实例,这个servlet的所有请求都共享同一个 servlet实例,如果在servlet内有同步代码块的话会造成线程争夺,因为servlet的类变量创建需要同步,所以要避免使用共享的可修改的类 变量。
HTTP Session处理
使用HTTP Session的时候请遵守一下规则:
不要随意创建Session, Session的创建不是免费的。如果不需要就不要创建
如果session不需要了请使用javax.servlet.http.HttpSession.invalidate()来释放session
保证session小型化可以减少反应时间,如果可能的话,请保证session小于7K。
在JSP里面使用指令来避免应用服务器自动在不需要的时候创建session.
避免session中存放大的对象,这样会强制序列化和增加过度计算,通常情况下不要存放大的对象到session里面。
不要缓存事务数据到HttpSession里面,访问HttpSession里面的数据是非事务的,最好把这些数据存放在数据库或者用实体 Bean访问,事务如果失败会恢复到它原来的状态,不过,这些失效的或者不再精确的数据会继续存放在session里面。应用服务器提供了只读的bean 管理器去缓存这些只读的数据。
配置和部署技巧
为了提高类的载入时间,避免在服务器的CLASSPATH里面使用过多的目录,把跟应用有关的类发放到jar文件里面。
HTTP反应时间跟HTTP server调整有很大关系。
如果可能,请缓存servlet的结果。
如果一个应用不含任何JEB,把应用部署成war文件,不要部署成ear文件。
禁用Security Manager
Security manager是非常昂贵的,因为在调用需要的资源的时候必须要调用doPrivileged()方法而且还必须要检测server.policy里面的 资源。如果你确信你的服务器没有恶意的代码而且你也不使用用户认证,你就可以禁用secrity manager.

Tags in this post...

面试题 相关文章推荐
Java面试中常遇到的问题,也是需要注意的几点
Aug 30 面试题
用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?
Jan 05 面试题
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
Aug 09 面试题
如何在存储过程中使用Loop
Jan 05 面试题
如何判断计算机可能已经中马
Mar 22 面试题
什么是makefile? 如何编写makefile?
Aug 08 面试题
中科软测试工程师面试题
Jun 16 面试题
数据库测试通常都包括哪些方面
Nov 30 面试题
写clone()方法时,通常都有一行代码,是什么?
Oct 31 面试题
对象的序列化(serialization)类是面向流的,应如何将对象写入到随机存取文件中
Jun 22 面试题
Hibernate持久层技术
Dec 16 面试题
给定一个时间点,希望得到其他时间点
Nov 07 面试题
宝信软件JAVA工程师面试经历
Aug 19 #面试题
Linux中如何设置Java环境变量(Ubuntu)
Jul 24 #面试题
线程的基本概念、线程的基本状态以及状态之间的关系
Oct 26 #面试题
用JAVA SOCKET编程,读服务器几个字符,再写入本地显示
Nov 25 #面试题
解释一下ArrayList Vector和LinkedList的实现和区别
Apr 26 #面试题
描述一下JVM加载class文件的原理机制
Dec 08 #面试题
解释一下抽象方法和抽象类
Aug 27 #面试题
You might like
4月1日重磅发布!《星际争霸II》6.0.0版本更新
2020/04/09 星际争霸
PHP连接SQLServer2005方法及代码
2013/12/26 PHP
dedecms集成财付通支付接口
2014/12/28 PHP
showModalDialog 和 showModelessDialog
2007/01/22 Javascript
nicejforms——美化表单不用愁
2007/02/20 Javascript
juqery 学习之六 CSS--css、位置、宽高
2011/02/11 Javascript
Jquery getJSON方法详细分析
2013/12/26 Javascript
JavaScript中判断两个字符串是否相等的方法
2015/07/07 Javascript
JavaScript清空数组元素的两种方法简单比较
2015/07/10 Javascript
jQuery实现带有上下控制按钮的简单多行滚屏效果代码
2015/09/04 Javascript
Node.js巧妙实现Web应用代码热更新
2015/10/22 Javascript
javascript中加var和不加var的区别 你真的懂吗
2016/01/06 Javascript
JS获取鼠标坐标位置实例分析
2016/01/20 Javascript
JavaScript编写Chrome扩展实现与浏览器的交互及时间通知
2016/05/16 Javascript
AngularJS自定义指令实现面包屑功能完整实例
2017/05/17 Javascript
vue 使某个组件不被 keep-alive 缓存的方法
2018/09/21 Javascript
Javascript原生ajax请求代码实例
2020/02/20 Javascript
JS 设计模式之:工厂模式定义与实现方法浅析
2020/05/06 Javascript
Python的Django框架中if标签的相关使用
2015/07/15 Python
浅谈python中copy和deepcopy中的区别
2017/10/23 Python
python实现最大优先队列
2019/08/29 Python
Python实现i人事自动打卡的示例代码
2020/01/09 Python
浅析Python 条件控制语句
2020/07/15 Python
Django vue前后端分离整合过程解析
2020/11/20 Python
可自定义箭头样式的CSS3气泡提示框
2016/03/16 HTML / CSS
HTML5页面音视频在微信和app下自动播放的实现方法
2016/10/20 HTML / CSS
购买澳大利亚最好的服装和内衣在线:BONDS
2016/10/14 全球购物
希尔顿酒店官方网站:Hilton Hotels
2017/06/01 全球购物
荷兰的时尚市场:To Be Dressed
2019/05/06 全球购物
关于爱情的广播稿
2014/01/16 职场文书
超市优秀员工事迹材料
2014/05/01 职场文书
工会文体活动总结
2015/05/07 职场文书
不服劳动仲裁起诉书
2015/05/20 职场文书
运动会广播稿300字
2015/08/19 职场文书
mysql优化之query_cache_limit参数说明
2021/07/01 MySQL
什么是clearfix (一文搞清楚css清除浮动clearfix)
2023/05/21 HTML / CSS