Servlet的理解
一、什么是Servlet?
Servlet是用Java编写的web组件,实际上可以简单的理解为是用来处理请求的,为什么这么说,看了它的生命周期就知道了。
二、常见的Servlet容器
4容器顾名思义是装东西的,Servlet容器里面装的就都是Servlet,容器会根据请求选择不同的Servlet处理。
Weblogic,Jboss,Tomcat等这些都是常见常用的Servlet容器。
三、Tomcat容器的层级
知道了容器,那么来看看容器的内部构造,因为我只用过tomcat所以这里已tomcat来讲,其他的应该八九不离十。
Tomcat容器一共分为4个层级:Container,Servlet,Context,Wrapper,其中一个Context代表了一个项目。
四、Servlet的生命周期
在讲Servlet生命周期前,先介绍参与周期的几个角色:Client(客户端),Web服务器,Servlet容器(Tomcat,WebLogic,Jboss...)
[1]一切请求都始于用户,那么第一步,Client端像Web服务器发送请求;
[2]Web服务器接收Client端请求后,将请求转发给了Servlet容器;
[3]容器拿到请求后,根据请求的Url寻找对应的Servlet去处理这个请求;
但事情往往不会辣么顺利,万一没找到对应的肿么办,这时候容器会去加载Servlet,并把它驻入容器内;
[4]这里提一下,如果Servlet是第一次被加载的,那么会调用它的init()方法去初始化;
[5]调用Servlet的Service()方法去处理请求,并创建一个响应;
[6]web服务器将处理的结果返回给Client端;
五、Servlet,Jsp的区别
面试的时候可能会被问到这两个的区别,那么这里谈一下个人的理解:
[1] 看本质的话,Jsp的本质其实就是Servlet,如果用Servlet去写页面,不但乱还难以维护,那么Jsp就诞生了;
[2]有了Jsp后,Jsp只负责表现层,那么Servlet只负责逻辑层的处理;
[3]JVM只识别Java代码,它是不认你JSP的,那么些JSP为什么还能运行呢?那是因为JSP在第一次加载时被编译成了Servlet驻留在内存中了;
Servlet的理解的更多相关文章
- 初识JAVA,对servlet的理解
一.WEB开发的简单理解 Web开发是一个指代网页或站点编写过程的广义术语.网页使用 HTML.CSS 和 JavaScript编写.这些页面可能是类似于文档的简单文本和图形.页面也能够是交互式的,或 ...
- 异步Servlet的理解与实践
AsyncContext理解 Servlet 3.0(JSR315)定义了Servlet/Filter的异步特性规范. 怎么理解"异步Servlet/Filter"及其使用情景? ...
- Servlet过滤器理解
from:http://blog.csdn.net/microtong/article/details/5007170 过滤器(Filter)的概念 过滤器位于客户端和web应用程序之间,用于检查和修 ...
- servlet清晰理解
servlet介绍 Servlet看起来像是通常的Java程序.它是JSP的前身,在MVC架构中担任Controller的角色,即控制层.主要进行数据的处理操作和流程的控制,并将有关结果存储到Java ...
- servlet详细理解
生命周期 编辑 客户端请求该 Servlet: 加载 Servlet 类到内存: 实例化并调用init()方法初始化该 Servlet: service()(根据请求方法不同调用doGet() 或者 ...
- Java技术分享:如何编写servlet程序
身为计算机专业的我,从接触java至今,已经有七年之久,从最开始的小白到现在的大白,这是一个漫长而曲折的历程. 大学刚接触Java这个学科时,一点儿都不理解java是要干嘛的,只知道学起来肯定不容易, ...
- Servlet(三):获取表单数据、解决乱码和报错问题
在了解了servlet的生命周期以及运行过程后,再来动手写一个小例子,加深对servlet的理解. 一.需求说明 在用户注册信息页面,输入用户名.密码.性别.邮箱等一些信息后,页面返回刚刚填写的信息. ...
- 简单的学生选课系统——基于Servlet+Ajax
以前挖的坑,早晚要往里掉.基础太薄弱,要恶补.在此程序前,我还对Servlet没有一个清晰的概念:一周时间写好此程序之后,对Servlet的理解清晰许多. 这周一直在恶补Spring,今天正好完成了S ...
- Servlet基础使用总结
Servlet通俗理解:主要功能在于交互式地浏览和生成数据,生成动态Web内容.Servlet运行于支持Java的应用服务器中.从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Ser ...
随机推荐
- 【NOIP2016提高组day2】蚯蚓
那么我们开三个不上升队列, 第一个记录原来的蚯蚓, 第二个记录乘以p的蚯蚓 第三个记录乘以(1-p)的蚯蚓, 在记录每条就要入队列的时间,就可以求出增加的长度 每次比较三个队列的队首,取最大的值x的切 ...
- 自测-4 Have Fun with Numbers
Notice that the number 123456789 is a 9-digit number consisting exactly the numbers from 1 to 9, wit ...
- 多个activity跳转保留内存使用intent传递数据问题_新手
/////本来是做的activity跳转,普通那种,但是会在调回来会销毁原来的,重新调用onCreate方法, 后来参考[http://blog.csdn.net/qq_26918031/articl ...
- ServiceStack.Text / Newtonsoft.Json 两种json序列化性能比较
JSON序列化现在应用非常多,尤其在前后端分离的情况下,平常大多数C#下都使用Newtonsoft.Json来操作,量少的情况下,还可以忽略,但量大的情况下就要考虑使用ServiceStack.Tex ...
- Python实战之int学习笔记及简单练习
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__ ...
- C#中 什么是装箱和拆箱
装箱:将值类型包装为引用类型 拆箱:将引用类型转换为值类型 例如 objetct obj = null; obj = ; //装箱 int i = (int) obj; //拆箱
- 关于Websockets问题:
Websockets是一种与服务器进行全双工,双向通信的信道,它不使用http协议,他有自己的协议即自定义协议,ws协议:它的安全协议为wss协议.这种协议专门为快速传输小数据而设计的.对服务其有一 ...
- ajax请求中设置特殊的RequestHeader
现在ajax应用已经相当广泛了,有很多不错的ajax框架可供使用.ajax是一个异步请求,也主要是一种客户端的脚本行为.那么,如何在请求之前为请求添加特殊的一些头部信息呢? 下面是一个简单的例子,我用 ...
- JQuery上传插件Uploadify详解及其中文按钮解决方案 .
Uploadify有一个参数是 buttonText 这个无论你怎么改都不支持中文,因为插件在js里用了一个转码方法把这个参数的值转过码了,解码的地方在那个swf文件里,看不到代码,所以这条路不行. ...
- python contextlib 上下文管理器
1.with操作符 在python中读写文件,可能需要这样的代码 try-finally读写文件 file_text = None try: file_text = open('./text', 'r ...