日期:2014-05-20  浏览次数:20672 次

求解释?struts和servlet的区别,越详细越好?
小弟初学struts,但是不懂为什么要要用struts,以前用servlet写项目的时候觉得很好。现在不懂struts的好处,希望大牛可以为小弟解说下,越详细越好.......

------解决方案--------------------
和你说下我自己的体会吧。struts相当于一个更大的servlet。
struts2工作流程:Form表单提交action,struts会检测form表单提交的URL是否有.action的后缀,有的话则转入struts.xml配置文件上面,这个配置文件里有多个action配置元素,然后根据之前提交的URL的名字在这配置里寻找同名的action,找到了之后就会生成一个action元素里对应的类的对象,再把form表单提交过来的数据调用对象的set方法逐个的把数据赋值到对象里面。赋值完之后,就会调用execute方法,这个execute方法会返回一个字符串,流程就要转回到struts.xml里面,根据action元素下的result元素又转到其他的jsp页面或action去了。
Struts2能完成一些常见的类型转换功能,而servlet全部都要自己编写,所以这也是使用struts更具有优势的原因之一。
Struts2的核心就是struts.xml文件,所有的流程通过这个文件就能看出来了

------解决方案--------------------
Struts2.x框架帮我们做了很多本该是我们编写的代码,比如:表单数据的获取、数据类型的转化、校验、跳转、线程安全等,使得我们可以直接编写业务代码,而无需做这些和业务本身没有关系的代码编写(我们只需要编写Action和一些配置就行了,框架本身就是个半成品,我们只需要做剩下和我们自己业务有关的部分就行了)。而且Struts2通过使用了责任链模式、装饰模式、构造模式等增加了框架的可扩展性、可维护性,我们可以在这个框架上进行自己的扩充。而这些都是我们使用servlet难以解决,或者说是需要做大量工作才能解决的问题。Struts框架是一个很优秀的MVC模式的实现,不能一言蔽之,希望以上回答能帮你理解,如果有问题,继续交流。
------解决方案--------------------
struts1的ActionServlet是extends HttpServlet的,所以你所写的Action实际上就是个Servlet。。

XML code

<servlet>
    <servlet-name>struts1</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>struts1</servlet-name>
    <url-pattern>/*.do</url-pattern>
</servlet-mapping>