Struts 的 ActionServlet 与正常Servlet 的区别
相对于Servlet,我总觉得ActionServlet只是与FormBean配合使用了而已,那么在Struts开发中对它们使用如何取舍?什么时候该用哪个?他们的最大区别...
相对于Servlet,我总觉得ActionServlet 只是与FormBean 配合使用了而已,那么在Struts开发中对它们使用如何取舍?什么时候该用哪个?他们的最大区别是什么?
展开
1个回答
2013-08-13
展开全部
你说的不错,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很少使用(一般做单业务逻辑较多,诸如登陆、注销或者是前台顾客查询等)。
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很少使用(一般做单业务逻辑较多,诸如登陆、注销或者是前台顾客查询等)。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询