Servlet工作原理

Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。

对这句话再做点解释,比如HttpServlet类继承自Servlet类,可以利用继承HttpServlet来实现Http请求,当不是Http请求的时候,也可以定义其他形式的Servlet。

比如我之前工作过的一个公司的架构就是使用Servlet来处理自己的应用层协议。

Servlet运行于支持Java的应用服务器中。

ServletJ2EE 规范中的一种,主要是为了扩展java作为web服务的功能

他的作用就是为java程序提供一个统一的web应用的规范,方便程序员统一的使用这种规范来编写程序,应用容器可以使用提供的规范来实现自己的特性。

ServletJ2EE 规范中的一种,主要是为了扩展java作为web服务的功能. 92年到的J2EE 1.2到现在J2EE8 12个规范到现在20多个规范,越来越完善

他的作用就是为java程序提供一个统一的web应用的规范,方便程序员统一的使用这种规范来编写程序,应用容器可以使用提供的规范来实现自己的特性。比如tomcat的代码和jetty的代码就不一样是吧,但作为程序员你只需要了解servlet规范就可以从request中取值,你可以操作session等等。不用在意应用服务器底层的实现的差别而影响你的开发

当然你也可以自己写一个http 服务器,自己定义一套API,比如你在底层接受到一个http请求后,你把这个http请求的headercookieparam等封装成一个MyRequest.class 。然后你要得到,你在你的MyServlet中从MyRequest对象中拿到param请求参数,校验成功后需要返还给浏览器一个HTTP response。其中必须要有一个session,所以你往cookie中写了一个字段,LAOZIDESESSIONID=878361839QWQWEQEQE,同时把这个sessionid放在了自己的内存中。下一次浏览器再访问你就会带上这个LAOZIDESESSIONID这个cookie,你就知道他原来已经访问过了,而且上一次访问的数据你都有(在第一次保存在内存中)

但是有没有想过,如果每个程序员都写一个自己的HTTP服务器,该程序员离职了咋办。而且你用你的,我用我的,遇到问题都不能一起解决,你一会儿只支持http/1.0 ,别人都支持http/2.0(虽然这个是在底层的实现了,和servlet没半毛钱关系,大家注意了,打个比方而已)。别人都支持注解了,你还在写配置呢!肯定不能啊,所有J2EE要出一个规范,要管住你们这群人,大家都要同步走。大家都用我这套规范,所有的请求都放在Request中,返回都放在response中。sessionID的名称也都可以自己设置,

比如tomcat你可以<Context sessionCookieName="zheshilaozidesessionid" >

 

讲了这么多废话,总结来说Servlet就是一群人来制定java应用中使用web时的各种规范,统一接口,其他内部实现由厂商自己实现,tomcat jetty jboss等等应运而生。面向接口编程!!很熟悉吧

 

关于他如何工作的:一个http请求到来,容器将请求封装成servlet中的request对象,在request中你可以得到所有的http信息,然后你可以取出来操作,最后你再把数据封装成servletresponse对象,应用容器将respose对象解析之后封装成一个http response

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值