struts2为每个线程提供一个action实例
2012-10-11 09:19
302 查看
1.struts2为每个线程提供一个action实例,多线程访问时不会出现问题。当使用spring管理struts2的action实例对象时,scope必须配置为prototype或者session,若配置为singleton则多线程访问时会出现问题,例如actionMessage,fieldError等信息会累加,多用户访问时有的用户访问到的是另一个用户的数据。
2.scope=“prototype”是为每个请求提供一个action实例(与struts2的机制是一样的)。
scope=“session”是为每个会话提供一个action实例。
3.通常使用prototype,即让spring容器为每个请求提供一个action实例,好处是服务器端不用维护用户状态信息,否则使用session服务器端必须存储状态信息,用户多时占用服务器端内存过多。使用prototype时,必须自己在客户端维护用户的状态,每次访问服务端时将相应状态信息提交给服务器。
例如scope=“prototype”时,页面一般< input name="id" type="hidden" value="${id}"/>用来存储用户的id信息,访问action时提交到server端供action中函数使用。而使用scope=“session”时,页面不必使用hidden的对象隐藏id信息,只要服务端获取过用户的id,action中的id属性即会保存这个信息。
以下是个人感触:
如上类似的问题,也要注意,其他service如果是singleton,需要注意多线程时会不会出问题,还有,虽然action是单独的对象,可以说是线程安全的,但是,在action中调用其他的关键资源时,也要注意是否需要同步访问,配置SSH框架一定要根据需求多做调整。
2.scope=“prototype”是为每个请求提供一个action实例(与struts2的机制是一样的)。
scope=“session”是为每个会话提供一个action实例。
3.通常使用prototype,即让spring容器为每个请求提供一个action实例,好处是服务器端不用维护用户状态信息,否则使用session服务器端必须存储状态信息,用户多时占用服务器端内存过多。使用prototype时,必须自己在客户端维护用户的状态,每次访问服务端时将相应状态信息提交给服务器。
例如scope=“prototype”时,页面一般< input name="id" type="hidden" value="${id}"/>用来存储用户的id信息,访问action时提交到server端供action中函数使用。而使用scope=“session”时,页面不必使用hidden的对象隐藏id信息,只要服务端获取过用户的id,action中的id属性即会保存这个信息。
以下是个人感触:
如上类似的问题,也要注意,其他service如果是singleton,需要注意多线程时会不会出问题,还有,虽然action是单独的对象,可以说是线程安全的,但是,在action中调用其他的关键资源时,也要注意是否需要同步访问,配置SSH框架一定要根据需求多做调整。
相关文章推荐
- struts2为每个线程提供一个action实例
- struts2为每个线程提供一个action实例
- STRUTS2为每个线程提供一个ACTION实例
- struts2为每个线程提供一个action实例
- STRUTS2为每个线程提供一个ACTION实例
- STRUTS2为每个线程提供一个ACTION实例,spring管理struts2的action实例
- Struts2的Action的生命周期:struts2为每一个请求重新初始化一个action的实例。
- 一个Servlet同一时刻只有一个实例。 当多个请求发送到同一个Servlet,服务器会为每个请求创建一个新线程来处理。
- C# Singleton 如何实现多线程多实例,每个线程中有且只有一个实例
- C# Singleton 如何实现多线程多实例,每个线程中有且只有一个实例。
- struts2 中同一个action的实现中对应多个input的处理方法
- 关于struts2中Action实例
- Google多线程面试题: 4个线程向4个文件里写入数据, 每个线程只能写一个值
- Struts2 一个Action实现多个业务逻辑
- 你想让自己的服务器为每个会员提供一个独立的二级域名吗?
- struts2 的一个action中配置多个result input
- 如何解决1万个并发连接,用每个客户一个线程的方法
- Struts2一个Action内包含多个请求处理方法的处理
- Google多线程面试题: 4个线程向4个文件里写入数据, 每个线程只能写一个值(待更新)
- struts2的default-action-ref 的一个“BUG”(其实并非bug)