Struts 的 ActionServlet 与正常Servlet 的区别

相对于Servlet,我总觉得ActionServlet 只是与FormBean 配合使用了而已,那么在Struts开发中对它们使用如何取舍?什么时候该用哪个?他们的最大区别是什么?

你说的不错,ActionServlet的确是Servlet的一种补充(可以看成是处理*.do的Servlet),其最大的好处就是借助了“数据自动封装”技术自动封装了从表单提交到服务器要处理的数据。而且ActionServlet相对与Servlet而言还提供了以下便利的操作:

1、使用mapping.findforward(路径)返回指定在配置文件中<forward>节点的对应映射文件,或者mapping.getInputForward()返回原页面(都是相当于在内部调用request.getRequestDispatcher(...).forward(requst,response))方法,其中可以包含返回request.setAttribute(..,..)的内容,您不必担心总是将数据存放在Session中而丢失大量内存;此外不必考虑相对路径问题(注意,你有没有仔细考虑过在Servlet中写response.sendRedirect(..)和request.getRequestDispatcher(...).forward(requst,response)跳转到同一个页面时候的不同地方?

【思考一下,如果你的一个工程是C盘下,而其中包含一个pages的文件夹,其中有一个文件demo.jsp,C盘下有一个index.jsp文件,尝试写出从demo.jsp页面路径开始,使用response.sendRedirect(..)和request.getRequestDispatcher(...).forward(requst,response)的访问到index.jsp方法?再和ActionServlet的findforward方法进行比较,你会领悟的】。

response.sendRedirect("index.jsp")
request.getRequestDispatcher("../index.jsp").forward(requst,response)
而配置以后,你就不必为这些路径担心,只要写mapping.findforward("index"),可能您的配置文件会这样配置:
<forward path="/index.jsp" name="index"/>

另外Structs还提供了大量的标签库配合ActionServlet使用,在Servlet中只能和JSP标准标签库配套使用,前者更和谐。

最后补充一句:你是否学过DispatcherAction?这个才是Structs中最强大的——设想一下,如果一个页面需要同时完成“增”、“删”、“改”、“查”任务,你要用几个Servlet?(四个),即便用一个,你必须要设置一个变量,以便判断究竟是执行什么操作?所以这个DispatcherAction就是解决一个页面进行多业务逻辑进行的。实际上公司在SSH开发项目多数用DispatcherAction,单纯Action和Servlet很少使用(一般做单业务逻辑较多,诸如登陆、注销或者是前台顾客查询等)。
温馨提示:内容为网友见解,仅供参考
无其他回答

Struts 的 ActionServlet 与正常Servlet 的区别
Servlet一般在MVC模式中充当C(控制器)的角色,Struts的ActionServlet 就是这样。如果你要用Struts框架,就不可能舍弃ActionServlet。但是,需要的话你可以继承ActionServlet ,覆盖其中的某个方法。(注意:覆盖时一定要在做外你自己的操作之后调用父类相同方法,以保证Struts框架的完整)FormBean 只是Struts...

Struts 的 ActionServlet 与正常Servlet 的区别
你说的不错,ActionServlet的确是Servlet的一种补充(可以看成是处理*.do的Servlet),其最大的好处就是借助了“数据自动封装”技术自动封装了从表单提交到服务器要处理的数据。而且ActionServlet相对与Servlet而言还提供了以下便利的操作:1、使用mapping.findforward(路径)返回指定在配置文件中<forward>节点...

Struts 的 ActionServlet 与正常Servlet 的区别
servlet是java web的基础 不管是struts还是别的什么MVC框架 都是以一个统一的servlet(前端控制器,分发器)接受所有请求,做一些验证、格式化、国家化等等之类的事情(在每个servlet里从头做这种事情很烦的)然后将请求转给框架自己处理器 处理请求生成相应 ...

Struts2的Action和Servlet有什么联系,区别
struts是一个基于MVC模式的一个框架,分别是表示层(view)、控制层(controller)、和模型层(Model)。其表示层使用Struts标签库构建。来自客户的所有需要通过框架的请求统一由叫ActionServlet的servlet接收(ActionServlet Struts已经为我们写好了,只要您应用没有什么特别的要求,它基本上都能满足您的要求),...

struts比servlet高级在哪?和servlet相比它的好处在哪?
1.开发时间。这个的对比是struts比servlet低。因为struts有一些配置文件,如果有些不注意思,出错的机会比servlet大,不如使用jsp+servlet开发随意。2.代码的规范。因为jsp+servlet开发随意。规范性应差。控制语句到处有,为维护及修改带来不便。也使接手的人为解读代码带来不便。3.安全性。web开发最不安全的...

Struts中的Action与Servlet中的Action到底有什么区别
Action就是请求,不管是struts还是servlet都是对请求处理的一种封装。只是一种架构的演变而已。

servlet,struts,action分别是什么呀
struts是一个框架,当我们使用serlvet 与jsp进行开发的时候,可以使用struts框架来实现MVC设计模型,同时struts框架也提供了很多其他的功能,如验证,还有他自己提供的标签库等 action的话Action类是用户请求和业务逻辑之间的桥梁,每个Action充当客户的一项业务代理 ,功能等同于servlet...简答的介绍 希望能帮助...

action与servlet的区别
其实就是一个玩意儿!只不过action是那些MVC框架的控制层的叫法.-- 当然,这个回答是笼统了点,但是其实就那回事.那些MVC框架用Servlet(struts1)或者Filter(struts2)来封装了HttpServletRequest和HttpServletResponse对象,在自己的Action类中实现控制层.从对象本身来说,确实不是一个东西,但是从设计分层(架构)...

谁能介绍一下struts中的action?
所谓ActionServlet就是一个servlet。在这里名字叫作action.任何以.do结束的URL都去会访问这个叫做action的servlet.这个叫action的servlet在服务器装载的时候会以最高优先级被初始化。初始化时struts-config.xml等init-param信息会被封装到一个ServletConfig中 并调用这个servlet的init方法。具体strtus的init方法...

Servlet和现在的struts2的区别和关系
servlet是单例,线程安全,每次请求都是由第一个请求到来后建立的那个servlet招呼,所以servlet里面不能有成员变量;struts2是通过一个servlet负责招待每个到来的线程,并为这个线程向action工厂要一个全新的action,并把它们俩放进一个叫Threadlocal的容器中,直到线程断掉,这些东西才被gc这个收垃圾的收走。

相似回答