文档章节

Sevlet(Lifecycle)

赵-猛
 赵-猛
发布于 2017/06/04 16:29
字数 681
阅读 6
收藏 0
点赞 0
评论 0

Servlet工作流程

1.客户端browser组装客户端的请求逻辑,构造向服务端发送的请求内容request

http request: method url version + header kvs + 空行 + body


2.由browser向服务器端发送请求request

http request: method url version + header kvs + 空行 + body


3.服务器端由Tomcat服务器提供的Servlet容器解析接收到的请求

parse parameters, build session, build application ... 

 

4.通过Web应用程序的配置文件web.xml,解析到对应执行的JSP/Servlet

对于jsp,先由jsp引擎编译成java servlet文本,继而由java编译器编译成java class字节码文件,然后加载/链接(验证/准备/解析)/类初始化/执行

对于servlet,由于已经编译成了java class字节码文件,直接加载/链接(验证/准备/解析)/类初始化/执行

    sevlet的执行(生命周期,其中124在整个生命周期只会执行一次):

1.实例化该servlet, 一个servlet容器只有该类的一个实例
2.初始化该实例,容器负责调用该servlet实例的 init() 方法,在处理用户请求之前,来做一些额外的初始化工作
3.处理请求,当Servlet容器接收到一个Servlet请求时,便运行与之对应的Servlet实例的 service()方法
4.特定情况下(如jsp或者servlet发生了更新)销毁该servlet实例,servlet容器调用该实例的destroy()方法

   servlet相关组件

listener:application/session/request事件响应程序
filter:拦截并转换请求或者响应
sevlet:依据请求的url, 加载和执行对应的处理代码
(interceptor是struts和spring中的概念,不配置在web.xml中)


    
5.Servlet完成客户端发送的请求逻辑,并完成向客户端发送的响应内容response

http response: version code message + header kvs + 空行 + body

  
6.由Tomcat服务器提供的Servlet容器向客户端浏览器进行响应response。    

http response: version code message + header kvs + 空行 + body


Servlet注意事项

Servlet规范定义,在默认情况下(Servlet不是在分布式的环境中部署),Servlet容器对声明的每一个Servlet,只创建一个实例
Servlet容器维护了一个线程池来服务多个客户请求同时访问同一个Servlet
Servlet容器使用一个调度者线程(Dispatcher Thread)来管理工作者线程(Worker Thread)。
当容器接收到一个访问Servlet的请求,调度者线程从线程池中选取一个工作者线程,将请求传递给该线程,然后由这个线程执行Servlet的service()方法 
(在Tomcat,可以在server.xml文件中通过<Connnector>元素设置线程池中线程的数目)

 

© 著作权归作者所有

共有 人打赏支持
赵-猛
粉丝 4
博文 727
码字总数 437989
作品 0
深圳
技术主管
关于SpringMvc实践的一些体会和总结

一直以来都在用java的springmvc,没有深入去探究关于spring以及mvc的一些内在的工作过程,今天利用休息时间,仔细阅读了一下我们的源码,并结合搜索引擎,明白了几个之前解决了问题,还没理解原理的...

xiaobo137
2016/10/29
49
0
velocity 模板 文件找不到

结构如下: web.xml 配置如下 : 现在用sevlet 的方式 访问 blacklist.vm 出现找不到 这个文件 错误

雾霾下的精彩
2012/08/14
292
4
CMS中一般是如何调用模板的

我使用的是Sevlet+Spring+HiberNate+FreeMaker+Lucence 的架构

俊颖
2013/12/16
250
2
我对servlet中的web.xml的理解

今天看到Servlet的web.xml配置,作一下总结,也加深一下印象: xml文件是的字符是区分大小写的,还有在一起工作的的不能够调换位置. <servlet> <sevlet-name>:指是你为你的servlet命一个名,就个名...

小梅菜鸟
2012/04/26
0
0
spring初始化和spring mvc servlet配置冲突

用springmvc的时候component-scan如果写在spring的配置文件里 servlet的一些bean会扫描不到,如果写到servlet配置里 spring初始化就会报错,两边都写的话会造成一个类重复初始化,为什么sev...

Black-Hole
2015/09/17
1K
9
细谈eclipse拓展网站项目集锦----my note

使用eclipse有一些时间啦,也试着开发一些网站project,不是很熟,也用zend studio,后放弃啦。 我的一些经验 1, 使用eclipse开发jsp网站项目,入门篇 let's start 启动Eclipse,新建一个项...

crossmix
2016/03/22
9
0
当前项目中Servlet个数的问题

@红薯 你好,想跟你请教个问题: 我这边项目中配置了一个hessian的Sevlet,还和Spring进行了整合. 但是我在JSP中输出当前ServletContext的Servlets,怎么一个都找不到呢? Enumeration enume =...

Robinson_lu
2012/12/13
210
3
AJAX读取servlet JSON数据·~~

通过页面访问servlet,页面打印出来的都是json格式的数据。。 AJAX读取数据,开始读取成功了,后来不知道就不行了。。也不知道什么原因,求解答。 读取到sevlet的数据 这个写的AJAX获取数据 ...

GuGu-Gavin
2016/12/20
523
5
servlet的个数的疑问

1:一个web项目需要创建多少个servlet实例, 2:一个servlet最大能处理多少个请求是根据什么决定的, 3:servlet的个数到底有什么决定的,是不是用一个sevlet实例完成某个功能的实现或控制 ...

mufish
2015/07/28
141
4
ajax接收sevlet返回值问题

html页面用ajax发送的请求,我用java写服务,处理请求,只用了sevlet,没有用ssh,struts,spring都没有用,那我用doget处理完请求,返回值放到request里面,那边在html里面接收不到request咋...

逗比一个
2016/11/14
128
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

单身税的时代就要来临,你还没有用Python帮你找一个女朋友吗?

单身税的历史可以追溯到2015年韩国的新政, 低生育率逼得韩国产生了这一政策。 现在我国也要实行这一政策, 很多单身狗就接受不了了 很可惜,国家不包分配对象, 男的都说找对象难, 有没有向...

猫咪编程
7分钟前
0
0
Java中 发出请求获取别人的数据(阿里云 查询IP归属地)

1.效果 调用阿里云的接口 去定位IP地址 2. 代码 /** * 1. Java中远程调用方法 * http://localhost:8080/mavenssm20180519/invokingUrl.action * @Title: invokingUrl * @Description: * @ret......

Lucky_Me
11分钟前
0
0
protobuf学习笔记

相关文档 Protocol buffers(protobuf)入门简介及性能分析 Protobuf学习 - 入门

OSC_fly
昨天
0
0
Mybaties入门介绍

Mybaties和Hibernate是我们在Java开发中应用的比较多的两个ORM框架。当然,目前Mybaties正在慢慢取代Hibernate,这是因为相比较Hibernate而言Mybaties性能更好,响应更快,更加灵活。我们在开...

王子城
昨天
0
0
编程学习笔记之python深入之装饰器案例及说明文档[图]

编程学习笔记之python深入之装饰器案例及说明文档[图] 装饰器即在不对一个函数体进行任何修改,以及不改变整体的原本意思的情况下,增加函数功能的新函数,因为这个新函数对旧函数进行了装饰...

原创小博客
昨天
0
0
流利阅读笔记33-20180722待学习

黑暗中的生物:利用奇技淫巧快活生存 Daniel 2018-07-22 1.今日导读 如果让你在伸手不见五指的黑暗当中生存,你能熬过几天呢?而大千世界,无奇不有。在很多你不知道的角落,有些生物在完全黑...

aibinxiao
昨天
2
0
Hystrix降级逻辑中如何获取触发的异常

通过之前Spring Cloud系列教程中的《Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)》一文,我们已经知道如何通过Hystrix来保护自己的服务不被外部依赖方拖垮的情况。但是实际...

程序猿DD
昨天
0
0
gin endless 热重启

r := gin.New()r.GET("/", func(c *gin.Context) {c.String(200, config.Config.Server.AppId)})s := endless.NewServer(":8080", r)s.BeforeBegin = func(add string) ......

李琼涛
昨天
0
0
JAVA模式之代理模式

平时一直在用spring,spring中最大的特效IOC和AOP,其中AOP使用的就是代理模式.闲着无聊,随手写了一个代理模式,也记录下代理模式的实现Demo. 比如现在有一个场景是:客户想要增加一个新的功能,...

勤奋的蚂蚁
昨天
0
0
ES15-JAVA API 索引管理

1.创建连接 创建连接demo package com.sean.esapi.client;import java.net.InetSocketAddress;import org.elasticsearch.action.get.GetResponse;import org.elasticsearch.clien......

贾峰uk
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部