一.SpringMVC常用注释
1.http://swengineer.iteye.com/blog/1103748
2.http://blog.csdn.net/truong/article/details/17298249
二.spring mvc与struts的区别
1.http://blog.csdn.net/generalyy0/article/details/7003974
2.Spring 中默认设置Bean为单例,Struts2本身action类是多例,此设计的原因在于本身action担任了数据载体,如果做成单例,则会便多用户数据受到影响但是当Struts2 与Spring整合时,Struts2的Action交由spring来管理时,spring默认将struts2的action以单例管理,此时必须手工设置为多例,否则,后果将会很严重。
a.因为一般我们在一个Action中接受一个实体bean,这个实体是成员实例变量,它的值会根据页面传值发生改变,就有问题了
(http://tenbamboo.aliapp.com/blogContent.jsp?blogId=b6f90b3c-8f3e-4336-a151-0df32e41531e&anchor=false)
b.解决方法(多实例对象):
(http://zfwdl2005.iteye.com/blog/1788873)或者
(http://blog.163.com/tonylee@188/blog/static/2679124520077162374435/,http://flysnow.iteye.com/blog/733785)
3.SpringMVC较ssh就不会有这种问题,因为虽然Controller是单例,但是实体bean在每个方法中,为局部变量,所以不会有a问题了,此时虽然service是成员实例变量,但是它只承担读取的作用,并没有改变它的值,所以也是相对安全的。
a.但是不管ssh和SpringMVC,我们不得不考虑另一个问题,是否多线程安全(包括共享变量安全和方法同步安全),这也和上边问题相连接,当多个用户同时操作某个页面,这多线程安全怎么考虑:如下都可以解决(http://www.xuebuyuan.com/1628190.html,http://www.open-open.com/bbs/view/1320130410702),但是,如springMVC的方法中可能还存在线程同步问题,虽然用上边的也能解决,但是我们也可以使用同步块来解决。
4.