如何写出高性能的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...

面试题 相关文章推荐
介绍下WebSphere的安全性
Jan 31 面试题
static全局变量与普通的全局变量有什么区别
May 27 面试题
Android interview questions
Dec 25 面试题
为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限
Dec 13 面试题
一些Unix笔试题和面试题
Sep 25 面试题
Linux面试经常问的文件系统操作命令
Nov 05 面试题
东方红海科技面试题软件测试方面
Feb 08 面试题
软件测试工程师结构化面试题库
Nov 23 面试题
Java文件和目录(IO)操作
Aug 26 面试题
Weblogic和WebSphere不同特点
May 09 面试题
Ejb技术面试题
Apr 29 面试题
为什么要使用servlet
Jan 17 面试题
宝信软件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
memcache一致性hash的php实现方法
2015/03/05 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
2019/02/08 PHP
Laravel 读取 config 下的数据方法
2019/10/13 PHP
js类 from qq
2006/11/13 Javascript
让getElementsByName适应IE和firefox的方法
2007/09/24 Javascript
DHTML Slide Show script图片轮换
2008/03/03 Javascript
JavaScript prototype属性使用说明
2010/05/13 Javascript
javascript下string.format函数补充
2010/08/24 Javascript
javascript中创建对象的三种常用方法
2010/12/30 Javascript
javascript学习笔记(七) js函数介绍
2012/06/19 Javascript
js全屏显示显示代码的三种方法
2013/11/11 Javascript
js实现对table的增加行和删除行的操作方法
2016/10/13 Javascript
一次围绕setTimeout的前端面试经验分享
2017/06/15 Javascript
jQuery选择器之属性筛选选择器用法详解
2017/09/19 jQuery
input type=file 选择图片并且实现预览效果的实例
2017/10/26 Javascript
个人小程序接入支付解决方案
2019/05/23 Javascript
python 动态迁移solr数据过程解析
2019/09/04 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
python检查目录文件权限并修改目录文件权限的操作
2020/03/11 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
tensorflow使用CNN分析mnist手写体数字数据集
2020/06/17 Python
HTML5边玩边学(2)基础绘图实现方法
2010/09/21 HTML / CSS
Laura官网:加拿大女性的顶级时尚目的地
2019/09/20 全球购物
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
中学家长会邀请函
2014/02/03 职场文书
《值日生》教学反思
2014/02/17 职场文书
大学生心理活动总结
2014/07/04 职场文书
投标人法定代表人授权委托书格式
2014/09/28 职场文书
项目安全员岗位职责
2015/02/15 职场文书
小学生读书笔记范文
2015/06/30 职场文书
《花钟》教学反思
2016/02/17 职场文书
《平移和旋转》教学反思
2016/02/19 职场文书
利用python Pandas实现批量拆分Excel与合并Excel
2021/05/23 Python
MySQL中int (10) 和 int (11) 的区别
2022/01/22 MySQL
Python学习之时间包使用教程详解
2022/03/21 Python
Java基础——Map集合
2022/04/01 Java/Android