首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
servlet学习
时间:
2014-12-03 23:08:38
阅读:
203
评论:
0
收藏:
0
[点我收藏+]
标签:
style
blog
http
ar
os
使用
sp
on
文件
什么是servlet?
servlet是sun公司制定的一种用来拓张web服务器功能的一个组件规范。
组件和容器?
组件:
为了实现特定的规范并且可以进行单独部署的软件模块,组件一般是用来实现具体的业务逻辑的,而且组件必须依赖容器而运行。
容器:
为了实现特定的规范的程序,他提供了组件运行的环境,并且可用来管理组件的生命周期,一般常见的web容器都在tomcat、weblogic、was、包含着。
servlet是怎么运行的?
当用户在浏览器上输入:http://ip:port/helloweb/hello?name=zh后
连接了服务器,通过ip:port来连接的;
浏览器将请求数据按照http协议进行打包(数据包),把数据包发送给服务器,这个数据包中包含了资源路径(工程名之后的所有东西)以及包含了浏览器自动生成的一些信息;
服务器生成了两个对象:请求对象(request)和响应对象(response),服务器开始解析请求数据包,将解析的数据包里面的数据存放在请求对象中,方便servlet读取这个请求对象里的数据,注意:请求对象必须是HttpServletRequest接口的一个实现,响应对象必须是HttpServletResponse的一个实现。
通过资源路径找到相应的Servelet配置,通过反射来创建一个servlet的实例,然后进行调用servlet实例的service()方法;
服务器获取到response对象中的数据之后,按照http的协议打成一个数据包再发送给浏览器。
浏览器进行解析这个数据包,取出响应,生成相映的动态页面
图例
Servlet实例的创建方法?
继承HttpServlet这个类
实现Servlet接口
实现Servlet接口,必须实现接口的5个抽象方法。从抽象方法里面看到我们servlet实例的生命周期,我们servlet的生命周期主要是分为4个阶段:实例被构造、实例初始化、实例业务逻辑处理、实例被销毁。需要注意的是:在默认的情况下,实例不会随着tomcat的启动而创建。实例被销毁的方法,也不会随着浏览器的关闭或者service方法的结束而调用,而是在tomcat服务器关闭的时候被调用;
在某些时候,我们需要某些Servlet实例随着tomcat的启动而启动,那么此时,需要在web.xml文件中指定的servlet标签里加上一个<load-on-startup>这个标签即可,它代表的是servlet启动的优先级,这个标签内部写正整数,0为优先级最大,注意:如果多个servlet的实例的优先级设置为相同的话,那么由tomcat来决定谁先执行,不建议多个servlet使用同一个优先级
实现接口与继承类的区别:
除了继承和实现这两者固有的区别(继承的开发效率高)之外,最重要的区别是HttpServlet这个类可以提供对Http协议的支持。
Servlet的生命周期
实例创建,实例的创建分为两种情况:第一种,当请求到达容器的时候,容器会去经查是否存在servlet实例,如果不存在,则会创建;第二种,当容器启动的时候,容器会去检查web.xml中是否存在load-on-startup这个标签,如果存在,则按照优先级来创建servlet实例;
初始化阶段,在这个阶段里,servlet对init发方法进行了重载,如果你在使用带参数的init方法的时候,注意不要删除super.init(config);
业务逻辑处理阶段(调用/就绪),这个阶段是可以多次执行的,并且我们可以根据表单的提交方式来调用doGet方法还是doPost方法,理论上是不允许doGet/doPost和service方法同时出现的情况;
销毁阶段,即销毁的是servlet对象,并且释放所有的资源,注意了init和distory在整个生命周期中,有且只会执行一次,而service方法有可能执行多次
servlet学习
标签:
style
blog
http
ar
os
使用
sp
on
文件
原文地址:http://www.cnblogs.com/dondming/p/4141344.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!