servlet2.3规范
2.2.1
servlet引擎可以声明多个实例去处理请求,servlet在应用服务的部署描述中定义发布.
serlvet有两个实现类GenericServlet 和 HttpServlet
servletapi 不会去管是单实例 还是多实例,是由框架和容器来控制的。
1、struts2的action为多实例
2、spring的Bean是单实例,不过从2.5开始加了scope注解,开始支持多实例。
3、多实例太耗资源,spring默认是单例,其中自己的DispatchServlet也是单例。
4、单实例存在线程安全问题。下面三种方法可以做为参考
a、可以学习spring的DispatchServlet(实例属性,只在初始化时写入。方法里对实例属性只做读操作)。
b、也可以使用ThreadLocal。
c、也可以加锁,不建议加锁,会影响性能。