servlet和struts中action的区别
2014-01-26 20:38
267 查看
Struts1的action完全就是Servlet
因为ActionServlet类继承自Servlet
而struts2就是纯JavaBean。。他的实现是基于拦截器
当FilterDispather拦截到请求以后, 会根据你的请求,去xml中找相关的bean,然后创建一个JavaBean
同时servlet是单例,线程不安全。struts2中action是线程安全的。
引用:
上面我们了解了Struts1里面的多线程问题,那Struts2是怎么解决这个问题的呢?其实道理非常简单,原因就是Strtus2会获取到用户的http请求,然后负责给每个请求实例化一个Action 对象,但是大家注意,这里的action对象和Struts1里面的action对象完全不是一个概念,struts1里面的action类就是一个servlet类,而这里的action类只是一个普通的java class。这也就是为什么Struts1里面的action是线程不安全的,而struts2里面的action是线程安全的原因。
那我们在回头来看看struts2对servlet的处理和struts1有什么不同。看过前面分析的读者肯定知道,struts1的 action对servlet没有进行任何的包装,它是直接实现的Java WEB API 里面的servlet 接口。所以才会有线程安全的问题,但是struts2底层帮我们封装了Servlet,使开发人员不用直接接触Servlet。具体做法是:
Strtus2截获servlet请求,然后给每个请求实例化一个Action对象,请求结束之后销毁Action对象。至于Strtus2具体是怎么做的,我这里不赘叙,大家可以去参看Struts2的有关介绍。
在Struts2中由于 Action和普通的Java类没有任何区别(也就是不用像Struts1里面那样去实现一个Struts的接口,有兴趣的朋友可以自己去了解),所以我们可以用Spring去管理Struts2的Action,这个时候我们就要注意了,因为当我们在spring里面去定义bean的时候,spring默认用的是单例模式。所以在这个时候,你就要修改Spring的配置文件---即修改scope为prototype。
/article/9679999.html
因为ActionServlet类继承自Servlet
而struts2就是纯JavaBean。。他的实现是基于拦截器
当FilterDispather拦截到请求以后, 会根据你的请求,去xml中找相关的bean,然后创建一个JavaBean
同时servlet是单例,线程不安全。struts2中action是线程安全的。
引用:
上面我们了解了Struts1里面的多线程问题,那Struts2是怎么解决这个问题的呢?其实道理非常简单,原因就是Strtus2会获取到用户的http请求,然后负责给每个请求实例化一个Action 对象,但是大家注意,这里的action对象和Struts1里面的action对象完全不是一个概念,struts1里面的action类就是一个servlet类,而这里的action类只是一个普通的java class。这也就是为什么Struts1里面的action是线程不安全的,而struts2里面的action是线程安全的原因。
那我们在回头来看看struts2对servlet的处理和struts1有什么不同。看过前面分析的读者肯定知道,struts1的 action对servlet没有进行任何的包装,它是直接实现的Java WEB API 里面的servlet 接口。所以才会有线程安全的问题,但是struts2底层帮我们封装了Servlet,使开发人员不用直接接触Servlet。具体做法是:
Strtus2截获servlet请求,然后给每个请求实例化一个Action对象,请求结束之后销毁Action对象。至于Strtus2具体是怎么做的,我这里不赘叙,大家可以去参看Struts2的有关介绍。
在Struts2中由于 Action和普通的Java类没有任何区别(也就是不用像Struts1里面那样去实现一个Struts的接口,有兴趣的朋友可以自己去了解),所以我们可以用Spring去管理Struts2的Action,这个时候我们就要注意了,因为当我们在spring里面去定义bean的时候,spring默认用的是单例模式。所以在这个时候,你就要修改Spring的配置文件---即修改scope为prototype。
/article/9679999.html
相关文章推荐
- ActionContext(Struts中的Action类里)和ServletActionContext(HttpServlet类里的)【区别】小结
- Struts集成Spring出错:Servlet action is not available 的解决
- struts servlet action 共存
- 使用JSON,在SERVLET或者STRUTS的ACTION中取得数据时,如果会出现异常:java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher
- 使用spring 的action-servlet.xml解决struts线程问题
- servlet与Struts action线程安全问题分析!
- Servlet action is not available(Struts+Spring+Hibernate)
- servlet、struts1的action和struts2的action初始化及线程安全模式
- 在部署Struts时,出现如下错误信息:HTTP Status 404 - Servlet action is not available
- ActionContext和ServletActionContext区别以及action访问servlet API的三种方法
- Struts集成Spring出错:Servlet action is not available 的解决
- ActionContext与ServletActionContext的区别及获取request、session等对象
- Struts 注解配置例子及redirect,redirectAction,chain的区别
- Struts中ActionContext和ServletActionContext
- Jsp、Servlet、Action的区别
- servlet与Struts action线程安全
- ActionContext和ServletActionContext区别
- Struts中ActionContext和ServletActionContext的比较
- Struts1.x和Struts2.0的Action的区别
- servlet与Struts action线程安全问题分析