Servlet和Struts2有什么区别,为什么要用他们,什么时候用?

如题所述

Servlet是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。

Struts2是控制层框架,Struts2这个东西很多人认为是struts的升级版,但其实他合Struts没多大关系,仅仅只是使用方法类似,内部架构原理完全不同。但两者都是基于Serlvet的,但struts对Servlet API(注意是API)依赖程度很高不利于调试,struts2并不依赖Servlet API,更多的是其本身的API,有利于调试。

为什么用这些,很大一部分情况是不会写这类的抽象型面向协议的应用框架,另一些能写的大牛是因为这项技术在这些框架里已经体现的很成熟,并且通过一代一代版本的积累对已知漏洞的修补,已知攻击方式的防御都已经达到一定高度,并不是随手写一个能够代替的。最后万事没有绝对,struts2在爆出严重的提权漏洞后就慢慢的被spring mvc占领了市场。

至于什么时候用,这个不好说,合适的需求,合适的环境用合适的框架。
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-11-23
Servlet也是在Web容器中运行的,Servlet的生命周期容器启动的时候,会加载servlet的class,并new出这个对象,然后,当用户请求这个servlet的时候,容器会调用init方法初始化这个 servlet,这也是整个生命周期中只会调用一次的方法,然后,会调用service方法,由这个方法调用doGet或
doPost方法来响应用户,然后,容器在可用资源紧张或是长期没有对Servlet发出
请求的情况下,会销毁这个servlet。

struts是一个基于MVC模式的一个框架,分别是表示层(view)、控制层(controller)、和模型层(Model)。其表示层使用Struts标签库构建。来自客户的所有需要通过框架的请求统一由叫ActionServlet的servlet接收(ActionServlet Struts已经为我们写好了,只要您应用没有什么特别的要求,它基本上都能满足您的要求),根据接收的请求参数和Struts配置(struts-config.xml)中ActionMapping,将请求送给合适的Action去处理,解决由谁做的问题,它们共同构成Struts的控制器。Action则是Struts应用中真正干活的组件,开发人员一般都要在这里耗费大量的时间,它解决的是做什么的问题,它通过调用需要的业务组件(模型)来完成应用的业务,业务组件解决的是如何做的问题,并将执行的结果返回一个代表所需的描绘响应的JSP(或Action)的ActionForward对象给ActionServlet以将响应呈现给客户。
第2个回答  2015-12-11
Servlet也是在Web容器中运行的,Servlet的生命周期容器启动的时候,会加载servlet的class,并new出这个对象,然后,当用户请求这个servlet的时候,容器会调用init方法初始化这个 servlet,这也是整个生命周期中只会调用一次的方法,然后,会调用service方法,由这个方法调用doGet或
doPost方法来响应用户,然后,容器在可用资源紧张或是长期没有对Servlet发出
请求的情况下,会销毁这个servlet。

struts2是一个基于MVC模式的一个框架,分别是表示层(view)、控制层(controller)、和模型层(Model)。其表示层使用Struts标签库构建。来自客户的所有需要通过框架的请求统一由叫ActionServlet的servlet接收(ActionServlet Struts已经为我们写好了,只要您应用没有什么特别的要求,它基本上都能满足您的要求),根据接收的请求参数和Struts配置(struts-config.xml)中ActionMapping,将请求送给合适的Action去处理,解决由谁做的问题,它们共同构成Struts的控制器。Action则是Struts应用中真正干活的组件,开发人员一般都要在这里耗费大量的时间,它解决的是做什么的问题,它通过调用需要的业务组件(模型)来完成应用的业务,业务组件解决的是如何做的问题,并将执行的结果返回一个代表所需的描绘响应的JSP(或Action)的ActionForward对象给ActionServlet以将响应呈现给客户。

servlet是j2ee的基础,struts2是基于它的框架,什么是框架:就是为了方便开发,提供了一些高层的功能,比如说输入验证啥的,隐藏了底层很复杂的实现
以前没有框架的时候用的是servlet,然后开发比较复杂的系统,并且有可重用的功能时,就有了框架,现在开发一般都用框架,但学习servlet会更好理解框架的
j2ee的框架有很多的,不止struts2
第3个回答  2015-11-13
个人认为Struts2是对于servlet的封装;
在MVC结构中,Struts2扮演的是VC的角色;通过指定action以及modelandview来进行类似于servlet的操作,通过OGNL表达式来进行前台数据交互显示;
个人感觉Struct2+OGNL表达式可能在效率上会比单纯的servlet差一点;
望大神指点;
第4个回答  2015-12-27
Servlet是Jsp技术的核心
Struts2是对Servlet等JSP核心的一些封装。比直接使用Servlet好些。
相似回答