java服务器端开发-servlet:201、Servlet执行过程介绍:常见错误及解决方式、响应数据包等

声明:本教程不收取任何费用,欢迎转载,尊重作者劳动成果,不得用于商业用途,侵权必究!!!

文章目录

前言

二、Servlet执行过程介绍

1、servlet是如何运行的?

step1,建立链接

step2,打包

step3,发请求

step4,拆包,创建request、response对象

step5,创建Servlet对象

step6,调用service方法

step7, 获得请求参数,并进行处理

step8,处理结果,打包发送给浏览器

step9,浏览器拆包,生成页面

2、常见错误及解决方式

(1)404

a,错误原因:

b,解决方式:

(2)500

a,错误原因:

b,解决方式:

(3)405

a,错误原因

b,解决方式

3、http协议(了解)

(1)什么是http(超文本传输控制协议)协议

1)通信的过程:

2)特点

(2)数据包的结构

1)请求数据包

2)响应数据包


前言

接着上一篇文章 原创 java服务器端开发-servlet:1、认识Servlet,如:web开发背景、什么是servlet、如何开发一个servlet等

我们继续对servlet的知识点进行介绍,既然我们已经写了一个 servlet程序,下面我们来分析它的执行过程

二、Servlet执行过程介绍

1、servlet是如何运行的?

比如在浏览器地址栏输入:

http://ip:port/web01/hello

step1,建立链接

浏览器依据ip,port建立与servlet容器

(servlet容器也是一个简单的web服务器)之间的连接。

step2,打包

浏览器将请求参数、请求资源路径等等打包

(要按照http协议的要求)。

step3,发请求

浏览器将请求数据包发送给servlet容器。

step4,拆包,创建requestresponse对象

容器收到请求之后,对请求数据包进行解析(拆包),

然后将解析之后的结果封装到request对象上,

同时,容器还会创建一个response对象。

step5,创建Servlet对象

容器依据请求资源路径("/web01/hello")找到

应用所在的文件夹,然后依据web.xml找到对应的

servlet配置(servlet的类名),然后容器创建该servlet对象。

step6,调用service方法

容器调用servlet对象的service方法(会将事先

创建好的request,response作为参数传递进来)。

step7, 获得请求参数,并进行处理

servlet可以通过request对象获得请求参数,

进行相应的处理,然后将处理结果缓存到response对象上。

step8,处理结果,打包发送给浏览器

容器从response对象上获取之前处理的结果,

然后打包发送给浏览器。

step9,浏览器拆包,生成页面

浏览器拆包(解析容器返回过来的响应数据包)

,依据获取的数据生成相应的页面。

http://ip:port/web02/hello?name=jetty

"?"表示后面是请求参数,

"name"是请求参数名,

"jetty"是请求参数值。

2、常见错误及解决方式

(1)404

a,错误原因:

依据请求资源路径找不到对应的资源。

b,解决方式:

依据http://ip:port/appname/servlet-url

检查你的请求地址。

检查<servlet-name>是否一致。

(2)500

a,错误原因:

系统错误

b,解决方式:

检查servlet类有没有继承HttpServlet。

检查<servlet-class>的“包名.类名”是否正确。

检查程序是否正确(比如在没有检查请求参数

的情况下就做类型转换)。

(3)405

a,错误原因

容器找不到service方法。

b,解决方式

检查service方法的签名(方法名、返回类型、

参数类型、异常类型)。

3、http协议(了解)

(1)什么是http(超文本传输控制协议)协议

由w3c制订的一种网络应用层协议,用来规范

浏览器与web服务器之间通信的过程及数据格式。

1)通信的过程:

step1,浏览器建立与web服务器之间的连接。

step2,浏览器将请求数据打包并发送给web服务器。

step3,服务器将响应数据打包并发送给浏览器。

step4,服务器关闭连接。

如果浏览器要再发请求,必须重新建立一个新的连接。

2)特点

“一次请求,一次连接”,优点是web服务器可以

利用有效的连接个数为尽可能多的客户端(浏览器)服务。

(2)数据包的结构

1)请求数据包

a,请求行:请求方式(get/post) 请求资源路径

协议的类型和版本

b,消息头: 是一些key,value对,由w3c定义,

可以由通信的双方彼此发送,比如,浏览器

可以发送一个"user-agent"消息头给服务器,

告诉服务器,浏览器的类型和版本。

c,实体内容:

只有发送post请求时,实体内容才会有

数据(即请求参数)。如果发送的是get请求,

请求参数会添加到请求资源路径的后面。

2)响应数据包

a,状态行: 协议类型和版本 状态码  状态描述

状态码:是一个三位数字,由w3c定义的,表示服务器处理请求的一种状态。

200:正常

500:系统异常

404:依据请求资源路径找不到对应的资源

b,消息头:

服务器也可以发送一些消息头给浏览器,

比如"content-type",告诉浏览器,服务器返回

的数据类型和编码。

c,实体内容:

程序处理的结果

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

被开发耽误的大厨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值