JSP学习笔记——HTTP请求和响应

这篇博客详细介绍了HTTP协议,包括其无状态和短连接的特点,HTTP请求的组成部分(请求行、请求头、请求正文)以及常见的请求方法,如GET、POST等。同时,文章还深入讲解了HTTP响应,包括状态行、响应头和响应正文,以及常见的响应状态码和响应头字段,如Content-Type、Location等。
摘要由CSDN通过智能技术生成

超文本传输协议 (HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。是一个应用程序级的基于TCP / IP协议,分布式,协作,超媒体信息系统(互联网)。http有两个特点,无状态和短连接,短连接是指Web浏览器和Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出一个请求,然后Web服务器返回响应(response),连接就被关闭了,无状态是指是对于事务处理没有记忆能力,在服务器端不保留连接的有关信息。HTTP是属于OSI模型中应用层,在实现http连接之前,要实现tcp传输层协议,并与网络层的Ip协议配合建立Internet连接。

1.http请求

搞清楚HTTP请求之前,还得搞清楚HTTP的URL,这给出了需要请求资源的足够信息。一般的http的URL形式为http://host[":"port][abs_path],[]中的内容为可缺省的,其中http表示用来操作的工具,http就表示HTTP定位网络资源,当然相似的还有ftp等。host表示域名,比如www.baidu.com,port表示端口号,默认为80,abs_path表示请求资源的URL,如果没有,则必须要在整个URL结尾加上“/”,比如baidu的地址会自动变更为http://www.baidu.com/,一个不缺省的URL可以是http:192.168.0.116:8080/index.jsp。

http请求分为三个部分:请求行、请求头、请求正文。

请求行的格式为:method URL HTTP-version,也就是请求方法、URI和协议版本,其中method有以下几种

1.GET    请求获取URI所标识的资源,然后获取资源

2.POST    命令向服务器发出执行某个动作的指令,有可能会修改服务器上的某些数,

3.HEAD    请求获取由URI所标识的资源的响应消息报头

4.PUT     请求服务器存储一个资源,并用Request-URI作为其标识

5.DELETE  请求服务器删除Request-URI所标识的资源

6.TRACE   请求服务器回送收到的请求信息,主要用于测试或诊断

7.OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求

其中GET和POST最常用比如GET /index.html HTTP/1.0,POST forecast HTTP/1.0。

请求包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。

请求头例举以下几种常见头

Accept:浏览器可接受的MIME类型。 
Accept-Charset:浏览器可接受的字符集。 
Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。 
Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。 
Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中。 
Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然后在正式写出内容之前计算它的大小。 
Content-Length:表示请求消息正文的长度。 
Cookie:这是最重要的请求头信息之一,用于Cookie处理。 
From:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它。 
Host:初始URL中的主机和端口。 
If-Modified-Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答。 
PRagma:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。 
Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。 
User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用

比如下面就是请求头,而且可以通过javax.servlet.http.HttpServletRequest对象的实例函数求得。

Accept:image/gif.image/jpeg.*/*
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)
Accept-Encoding:gzip,deflate.

最后请求正文,注意一点请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束。也就是说请求正文中可以不写,当然也可以包含客户提交的查询字符串信息,比如:
username=jinqiao&password=1234

2.http响应

类似于http请求,http相应可分为:状态行、响应头、响应正文。

状态行可以由HTTP-Version Status-Code Reason-Phrase也就是协议版本、数字形式的状态码及状态描述,协议版本类似于http响应,比如可以使http/1.1,状态码由3个数字组成,表示请求是否被理解或者满足,下面对数字的取值不同做分析,首位数字有5种可能,表示意思如下

1xx:  

JSPJavaServer Pages)是一种服务器端的动态网页开发技术,它可以将 Java 代码嵌入 HTML 页面中,从而实现动态网页的生成。 JSP 的基本原理是将 JSP 页面翻译成 Servlet,在服务器端执行 Servlet 代码,再将执行结果返回给客户端。因此,我们在使用 JSP 开发网页时,需要先了解 Servlet 的相关知识。 JSP 的语法基本上就是 HTML 标签加上 Java 代码。以下是一些基本的 JSP 标签: 1. <% ... %>:嵌入 Java 代码,可以用于定义变量、写循环、判断语句等。 2. <%= ... %>:输出 Java 代码的执行结果。 3. <%-- ... --%>:注释,不会被翻译成 Servlet。 4. <jsp:include ... />:包含其他 JSP 页面或 HTML 页面。 5. <jsp:forward ... />:将请求转发到其他资源(JSP 页面、Servlet 或 HTML 页面)。 6. <jsp:useBean ... />:创建 JavaBean 对象。 7. <jsp:setProperty ... />:为 JavaBean 对象设置属性。 8. <jsp:getProperty ... />:取得 JavaBean 对象的属性值。 在 JSP 页面中,我们还可以使用 EL 表达式和 JSTL 标签库来简化代码编写,提高开发效率。 EL(Expression Language)表达式是一种简化的表达式语言,可以用于取值、赋值、计算等操作。例如,${name} 表示取得名为 name 的变量的值。 JSTL(JavaServer Pages Standard Tag Library)是一套标签库,提供了循环、条件判断、格式化、国际化等常用功能的标签。例如,<c:forEach> 标签可以用于循环遍历集合,<c:if> 标签可以用于条件判断。 除了以上标签库,JSP 还支持自定义标签库。我们可以通过编写标签处理器来扩展 JSP 的功能。 JSP 的优点是可以将 Java 代码嵌入 HTML 页面中,使得网页的开发更加灵活和方便。但是,由于 JSP 页面需要翻译成 Servlet,因此会增加服务器的负担和响应时间。此外,JSP 页面中夹杂着 Java 代码,也不利于代码的维护和调试。因此,在开发大型网站时,建议使用 MVC 设计模式,将业务逻辑和视图分离,使得代码更加清晰和易于维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值