Servlet接口中有哪些方法及Servlet生命周期

这篇具有很好参考价值的文章主要介绍了Servlet接口中有哪些方法及Servlet生命周期。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

void init(ServletConfig config) throws ServletException

void service(ServletRequest req, ServletResponse resp) throws ServletException, java.io.IOException生命周期:

Web容器加载Servlet并将其实例化后,Servlet生命周期开始,容器运行其 init()方法进行Servlet的初始化;

请求到达时调用Servletservice()方法,service()方法会根据需要调用与请求

对应的doGetdoPost等方法;

当服务器关闭或项目被卸载时服务器会将Servlet实例销毁,此时会调用Servlet destroy()方法。

init方法和destory方法只会执行一次,service方法客户端每次请求Servlet都会执行。Servlet中有时会用到一些需要初始化与销毁的资源,因此可以把初始化资源的代码放入init

方法中,销毁资源的代码放入destroy方法中,这样就不需要每次处理客户端的请求都要初始化与销毁资源。

Cookie  Session,一般认为是两个独立的东西,Session采用的是在服务器端保持状态的方案,而Cookie采用的是在客户端保持状态的方案。

但为什么禁用Cookie就不能得到Session呢?因为Session是用Session ID来确定当前对话所对应的服务器Session,而Session ID是通过Cookie来传递的,禁用Cookie相当于失去

Session ID,也就得不到Session了。

假定用户关闭Cookie的情况下使用Session,其实现途径有以下几种:

一:通过图解法来描述一下分包和粘包,这样客户更清晰直观的了解:

下面对上面的图进行解释:

1.正常情况:如果Socket Client 发送的数据包,在Socket Server端也是一个一个完整接收的,那个就不会出现粘包和分包情况,数据正常读取。

2.粘包情况:Socket Client发送的数据包,在客户端发送和服务器接收的情况下都有可能发送,因为客户端发送的数据都是发送的一个缓冲buffer,然后由缓冲buffer最后刷到数

据链路层的,那么就有可能把数据包2的一部分数据结合数据包1的全部被一起发送出去了,这样在服务器端就有可能出现这样的情况,导致读取的数据包包含了数据包2的一部分

数据,这就产生粘包,当然也有可能把数据包1和数据包2全部读取出来。

3.分包情况:意思就是把数据包2或者数据包1都有可能被分开一部分发送出去,接着发另外的部分,在服务器端有可能一次读取操作只读到一个完整数据包的一部分。

4.在数据包发送的情况下,有可能后面的数据包分开成2个或者多个,但是最前面的部分包,黏住在前面的一个完整或者部分包的后面,也就是粘包和分包同时产生了。

二:产生上情况的内部原因有下面几点:

1.数据发送端发送数据给缓冲buffer太大,导致发送一个完整的数据包被分几次发送给缓存buffer,然而缓冲buffer等到数据满了以后会自动把数据发送的数据链路层去,这样就

导致分包了。

2.TCP协议定义有一个选项叫做最大报文段长度(MSSMaximum Segment Size),该选项用于在TCP连接建立时,收发双方协商通信时每一个报文段所能承载的最大数据长

度。在一定程度上MSS应该能尽可能多地承载用户数据,用于在传输通路上又可能避免分片,但是在复杂的网络环境下确定这个长度值非常困难,那么在这样的情况下在传输过

程中产生分包,粘包就很常见了

3.以太网,IP,TCP,UDP数据包分析

4.数据帧的有效载荷(payload)比以太网的最大传输单元(MTU)大的时候,进行了IP分片。

三:解决数据分包和粘包的基本策略如下

1.消息定长,比如定一个100,那么读取端每次读取数据就截取100个长度的数据,然后交给业务成去做解析

2.在消息的尾部加一些特殊字符,那么在读取数据的时候,只要读到这个特殊字符,就认为已经可以截取一个完整的数据包了,这种情况在一定的业务情况下实用。

3.读取缓存的数据是不定长的,所以我们把读取到的数据添加到我们自己的一个byte[]数组中,然后根据我们的业务逻辑来找到指定的特殊协议头部,协议长度,协议尾部,然后

从我们的byte[]中获取一个完整的数据包,然后再对数据包进行业务解析就可以得到正确结果。

void destory()

java.lang.String getServletInfo()

ServletConfig getServletConfig() 文章来源地址https://www.toymoban.com/news/detail-468163.html

到了这里,关于Servlet接口中有哪些方法及Servlet生命周期的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 软件生命周期阶段有几个?常见软件生命周期模型有哪些?

    软件生命周期阶段及常见的软件生命周期模型,软件生命周期是指一个计算机软件从功能确定、设计,到开发 成功投入使用,并在使用中不断地修改、增补和完善,直到停止该软件的使用的全过程。 生命周期 从收到应用软件开始算起,到该软件不再使用为止。 它有以下几方

    2024年02月03日
    浏览(59)
  • 创建javaEE项目(无maven),JSP(九大内置对象)、Servlet(生命周期)了解

    1.创建一个普通的java项目 2.项目根目录右键,添加模板 3.配置tomcat服务器 4.配置项目tomcat依赖         用户通过浏览器发送一个请求,服务器tomcat接收到后,解析web.xml配置文件进行分析执行接口对应的类;         Tomcat服务器支持:支持Servlet规范。而要想让它能找到

    2024年02月05日
    浏览(51)
  • 什么是Vue中的生命周期钩子函数?有哪些主要的生命周期钩子函数?如何监听DOM事件?

    Vue中的生命周期钩子函数是指在Vue实例创建、数据绑定、组件挂载等生命周期阶段中,可以执行一些特定操作的函数。这些函数在Vue实例的不同生命周期阶段被调用,可以帮助开发者更好地控制Vue实例的行为。 Vue的生命周期钩子函数包括: beforeCreate :在Vue实例创建之前调用

    2024年02月12日
    浏览(57)
  • Spring的Bean生命周期有哪些阶段?

    Spring的Bean生命周期分为四个阶段:实例化、属性赋值、初始化和销毁。 实例化:Spring容器负责创建Bean的实例,可以通过构造方法或者无参构造方法进行实例化。 属性赋值:Spring容器通过属性注入的方式为Bean的属性赋值,可以通过setter方法或者无参构造方法进行属性赋值。

    2024年02月09日
    浏览(41)
  • 微信小程序的生命周期函数有哪些?

    跟 vue 、 react 框架一样,微信小程序框架也存在生命周期,实质也是一堆会在特定时期执行的函数 小程序中,生命周期主要分成了三部分: 应用的生命周期 页面的生命周期 组件的生命周期 应用的生命周期 小程序的生命周期函数是在 app.js 里面调用的,通过 App(Object) 函数用

    2024年01月19日
    浏览(39)
  • 微信小程序的生命周期函数有哪些,以及执行过程?

    目录 1、应用的生命周期  2、页面的生命周期 3、组件的生命周期  4、执行顺序  小程序中,生命周期主要分成了三部分: ① 应用的生命周期        ② 页面的生命周期        ③ 组件的生命周期 1、应用的生命周期  在 app.js 里面调用,通过 App(Object) 函数用来注册一个小

    2024年02月08日
    浏览(52)
  • spring工程的启动流程?bean的生命周期?提供哪些扩展点?管理事务?解决循环依赖问题的?事务传播行为有哪些?

    Spring工程的启动流程主要包括以下几个步骤: 加载配置文件:Spring会读取配置文件(如XML配置文件或注解配置)来获取应用程序的配置信息。 实例化并初始化IoC容器:Spring会创建并初始化IoC容器,即ApplicationContext。在这一步,Spring会解析配置文件,并将配置的Bean实例化。

    2024年02月12日
    浏览(38)
  • Vue的生命周期方法

    beforeCreate 在实例初始化之后,数据观测(data observe)和 event/watcher 事件配置之前被调用。在当前阶段 data、methods、computed 以及 watch 上的数据和方法都不能被访问。 created 实例已经创建完成之后被调用。在这一步,实例已经完成以下的配置:数据观测(data observe ),属性和方

    2024年01月21日
    浏览(45)
  • react 生命周期方法

    每个组件都包含 “生命周期方法”,你可以重写这些方法,以便于在运行过程中特定的阶段执行这些方法。你可以使用此生命周期图谱作为速查表。在下述列表中,常用的生命周期方法会被加粗。其余生命周期函数的使用则相对罕见。 挂载 当组件实例被创建并插入 DOM 中时

    2024年02月13日
    浏览(84)
  • unity的函数生命周期以及静态生成方法

    前段时间毕业了,到处跑着玩,玩傻了之后入职了又摸了一个多月鱼~收收心了,近期的学习计划是下半年入门图形学,九月中旬把线性代数学完,所以unity和游戏开发的文章还是很少更新了,等后期学习图形学再慢慢更新和学习记录吧,中间工作中遇到的一些问题还是会记录

    2024年02月03日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包