1、始终把会话页面指令设置为False,除非希望在JSP页面中使用会话信息,False设置不会删除现有的会话,但是true设置将创建一个会话,但也许不是有意的。了解使用request.getSession(true)时警告,为了避免这种调用带来的安全问题,应该确保限制了带有页面指令sesion = true的JSP页面的使用。
2、设置页面指令
“防弹的”应用程序使用页面指令重写Session和errorPage的默认值。应始终把会话页面指令设为False,除非希望在JSP页面中使用会话的信息。False设置不会删除任何现有的会话,但是true设置会创建一个会话(或许是无心的)。为了避免request.getSession(true)调用引入的安全问题,应确保使用页面指令Session="true"限制了JSP页面的使用。只有在确认会话后,对这些受限制的页面的直接请求才确实存在。可以限制对JSP的访问,具体做法是把它们放在web应用程序的web-inf目录中。可以在web-inf目录中包含或转发资源,但是外部用户无法直接访问这些资源。此外,我们无法知道应用程序何时会抛出异常。使用errorPage页面指令把这些失败的请求重定向到一个用户友好的错误页面。
3、基于模板进行开发
没有理由重头开始编写应用程序组件。更好的办法是采用一个与计划开发的应用程序相近的应用程序,对它进行修改,直到满足需要为止。设计 WebAuction应用程序的目的就是如此,此外,sun公司发行的j2ee Blueprints为应用程序开发提供了一个极好的起点。
4、注意大写和空格
xml编码格式的j2ee部署文件的出现意味着需要注意大写和空格。开发人员可能花费了大量时间来调试一个应用程序,最后却发现,原来是一个错误使用空格或括号导致了错误。
5、使用正确的包含机制
使用包含指令模块化页面。如果站点定期重用组件,比如横跨web站点顶部的导航栏或标题,考虑把用于生成这些组件的代码放入单独的JSP页面中。接着,使用JSP包含指令把上述代码包含到每个页面中。包含指令是一种高效的操作。如果又特殊的需要,想动态选择被包含的资源,或者需要对字符编码进行高级控制,就开一个使用包含动作。
6、在JSP中尽量少使用Java
混合使用JSP和Java代码很可能导致二者都显示的晦涩。应利用JavaBean和定制标签库的优点,尽可能地少自傲JSP页面中使用Java代码,最理想的情况是完全不使用Java代码。
7、把业务逻辑放在JavaBean中
JSP设计的一个好处是能够避免把敏感的代码放在web页面中,业务逻辑可以在web应用程序、服务器操作和Java客户端应用程序中应用程序。可以在整个J2EE平台上广泛使用JavaBean,所以JavaBean是定义应用程序业务逻辑的好地方。
8、标签库中的表示逻辑
定制标签库提供了一种方式,允许使用JSP标签来替换表示层逻辑。然而,标签库处理程序类与JSP紧密相关,不能在其他上下文中被重用。同样,定制标签是定义表示逻辑的好地方,但是不适合定义业务逻辑。
9、使用现有的标签库
没有必要重复发明轮子。又大量多种用途的标签库已经存在。如jstl