struts1和struts2的区别

struts1和struts2都是基于MVC的开源框架,不过从配置都实现都是完全不同的两个框架。
struts1是在01年左右发布的,一出来就很受欢迎,经过很长时间的发展,有很好
的稳定性,现在企业中都还有很多企业在用;缺点就是它实在是太老了,对后来发
展的其他框架比如spring,freemarker的支持都不太好。
struts2则是集合了webwork和struts1的优点的核心为webwork的开源框架,它有自
己的AOP库,同其他的框架可以很好的兼容。学过struts1的人都知道,struts1是
直接依赖于servlet的API的,这样导致了类之间耦合度过高,需要修改的时候甚至
会牵扯到视图层,这个是struts2比struts1明显要好的地方。
至于servlet呢,是J2EE的核心技术的一部分,struts1、struts2什么的都是以它
为基础的。简单的说,它是服务器端负责处理客户端发送过来的请求并产生回应的一
个控制器。如果你有心向J2EE发展,servlet的知识是一定要掌握的。至于其余的什
么框架,只要清楚原理,要入门都很简单。


Servlet原理2009-08-21 09:01一、Servlet基础

1、Servlet执行过程
用户请求一个Servlet,Servlet容器自动构建请求和响应对象,然后执行Servlet的service()方法,该
方法会接收请求和响应对象,通过响应对象将处理结果发送给用户。

2、怎么请求Servlet
用户通过一个URL来请求一个Servlet。比如:[url]http://localhost:8080/HelloApp/HelloServlet[/url]

3、怎么处理请求
当用户请求Servlet时,容器构建ServletRequest对象request,并传递给Servlet的Service()方 法,
Service通过request对象获取到请求的参数,然后,根据参数做出相应的处理,通过ServletResponse对
象来向客户端发送响应 内容。

4、怎么响应客户端
当用户请求一个Servlet时候,容器会自动创建ServletResponse对象response,然后通过response对象
向客户端发送响应内容。

5、Servlet的生命周期
a、Servlet的class经过部署,并启动容器
b、(当请求该Servlet时候)容器自动创建Servlet对象xServlet,然后xServlet调用其init()方法。
到此,Servlet初始化结束。
c、一旦客户端请求该Servlet,xServlet自动调用service()来处理请求。
d、一旦很长时间都没有请求该Servlet(或者说该Servlet超时),则容器会将xServlet从容器中清除掉。

二、Servlet接口API
1、接口五个方法
2、Servlet的分支
3、Servlet的请求对象ServletRequest
4、Servlet的响应对象ServletResponse
5、Http相关的Servlet


三、总结

1、Servlet是一种规范,称为Servlet规范,是J2EE规范的一部分。

2、Servlet规范定义了Servlet相关的一组接口、其实现是由Servlet容器开发商来实现,类似于JDBC驱动。

3、Servlet的也是类,其对象是通过Servlet容器来创建,Servlet只能在Servlet容器
中运行。打个比方说:容器是青山,Servlet是松柏。

4、当客户端请求Servlet时,容器会做两件事情:
a、Servlet容器会将请求自动组装为一个ServletRequest对象,并自动产生一个ServletResponse对象,这
两个对象一并传递给Servlet的service(request,response)方法。
b、在该Servlet对象上调用service(request,response)方法来处理并响应用户的请求。

5、用户无法直接调用Servlet的方法,也无法去创建Servlet的实例。

servlet原理与生命周期java 2009-12-03 09:58:35 阅读313 评论0 字号:大中小
当客户端向服务器发送一个http请求的时候。服务器端(httpd)会判断是静态的HTML还
是包含动态的页面。如果是静态的页面,服务器端会返回相应的结果(HTML代码)。如果
是动态页面的话,会有两种方式去寻找结果。

1、CGI(Common Gateway Interface,公共网关接口)程序

工作原理:当一个客户端请求到来,该程序会启动一个CGI进程,与相应的数据库服务器或
应用服务器进行连接。得到相应的结果,由服务器返回给客户端。当多个客户端请求同时
到来,会产生多个进程并发执行。

优点:每个进程占用独立的资源,运行速度快(但服务器启动进程并不快,因为要分配出
独立的资源)。当客户请求教少的时候,服务器可以承担这样的消耗。

缺点:当客户请求巨大时,会造成服务器死机。当然,可以在服务器端限制,比如说用户请
求超过某个范围,就不响应请求。或者采用多台服务器集合工作。


2、servlet实例方式

工作原理:服务器端会有一个servlet实例,然后服务器会启动一个进程去使用一个servlet实例。
当多个客户端请求同时到来,会产生多个线程并发的去使用同一个servlet实例。

优点:因为是同一个servlet实例,而且多个线程只是占用同一进程的资源(一个进程可以启动多个
线程)。因为一开始进程就准备好了(不用最分配资源),所以启动线程非常快。

缺点:当线程非常多的时候,会存在一个对进程资源争夺、冲突的问题。这样也会影响到运行
的速度(当然,如果处理好资源争夺、冲突的问题,还是很快)。

比较而言:

CGI程序采用多进程方式为并发请求客户服务,进程占独立资源,运行快,但启动慢。

Servlet采用多线程方式,启动快,资源冲突时速度慢

并发客户量非常大时,进程因为共享资源而占很大优势。

所谓开发一个servlet组件,就JAVA来说,不过是开发一个servlet接口。该接口是所有Servlet必
须遵守的规范。定义如下:

void destroy()//不是销毁servlet,而是一个servlet对象即将被销毁执行的一个方法。(释放资源)

ServletConfig getServletConfig()//servlet部署的相关配置有关。

String getServletInfo()//获取servlet信息,告诉调用者干什么用的字符串描述。

void init(ServletConfig config)//不是创建对象,而是servlet被创建对象之后调用的方法(分配资源)

void service(ServletRequest req,ServletReponse res)//一个请求到达时,servlet对象
调用该方法进行工作。任务:给客户端制造出结果。

写一个类,里面包括这些方法,然后去实现相应功能。(说的很容易,写很难哦)!

servlet生命周期:

由servlet引擎(容器)启动和停止,当第一个请求到达servlet引擎,servlet会去查
看有没有创建这样一个servlet对象,如果没有,会创建一个servlet实例。调用
init()方法,做相关配置文件的读取。初始化之后,调用service()方法,按照客
户的某些数据和参数工作,为客户端产生输出结果。


当第二个请求到来,servlet已经创建过,不再调用init()方法,直接执行service()方法,init只被执行一次。

servlet服务器停止,会调用destroy()方法。关闭对象。

servlet服务器存在多个应用程序,当一个应用程序停止会重启的时候,servlet会把该应用
程序对应的servlet对象销毁。

(当一个servlet实例好久没人用,会被保存到文件,不占用内存了。当有人用时,在加载
进内存。有效节约资源)(是各大应用服务器自己的优化方案)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值