Struts2中Action与Servlet的联系与区别

Servlet处理客户端请求的步骤

1、Web客户向Servlet容器(Tomcat)发出Http请求

2、Servlet容器分析客户的请求信息

3、Servlet容器创建一个HttpServletRequest对象,将客户请求的信息封装到这个对象中

4、Servlet容器创建一个HttpServletResponse对象 

5、Servlet容器根据请求消息中的URL找到对应的servlet,然后针对该请求创建一个单独的线程,并把HttpRequest对象与HttpResponse对象作为参数传给新创建的线程中

6、容器调用Servlet对象的service()方法,完成对用户请求的响应,同时把动态页面返回给容器。

(或者是HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息;调用HttpResponse对象的有关方法,生成响应数据)

7、Servlet容器把响应结果组装成HTTP格式传给Web客户


   Struts2也是在容器上执行的,实际上虽然没有用到Servlet,但是前四步是一样的,会创建HttpServletRequest对象和HttpServletResponse对象,所以,在struts2.0中,可以通过ServletActionContext.getRequest()获取request对象。

 Struts2的流程


    可以说Struts2本质还是一个Servlet(在S1中用于整体控制的是一个Servlet;S2中是一个Filter,其实也可把它看作是Servlet),只是对Servlet进一步的封装罢了。
    打个比方:做Web项目,好比建房子。Servlet好比木材,用一根根的木材搭,也可盖起房子,只是速度慢而已;
而Struts2好比是用木材做好的一个房子大概结构,要建房子时,只需把它拿过来,再往其里面添砖加瓦,修修补补,就能很快盖好房子,这要比直接使用Servlet要快得多。

优缺点

1、Servlet更随意灵活,带来的就是规范性差、不易解读。

2、安全性,Servlet没有Struts2高。Servlet可能会带来session的乱用,造成信息泄露。

3、维护性,struts远胜于servlet。struts项目的代码分层很清晰,如果用servlet,代码结构不清晰,很容易引入新BUG。



  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值