Java Web学习(1): 客户端请求、服务器响应及其HTTP状态码

简介: 一JSP客户端请求        当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信 息头的一部分来传送的。我们可以查阅HTTP协议来获得更多的信息。

一JSP客户端请求

       当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信

头的一部分来传送的。我们可以查阅HTTP协议来获得更多的信息。

       下表列出了浏览器端信息头的一些重要内容,在以后的网络编程中将会经常见到这些信息:

   (1)HttpServletRequest类

       request对象是javax.servlet.http.HttpServletRequest类的实例。每当客户端请求一个页面时,JSP引擎就会产

生一个新的对象来代表这个请求。

       request对象提供了一系列方法来获取HTTP信息头,包括表单数据,cookies,HTTP方法等等。

       接下来将会介绍一些在JSP编程中常用的获取HTTP信息头的方法。详细内容请见下表:

 

 

 

(2)HTTP信息头示例

       在下面的这个例子中,我们会使用HttpServletRequest类的getHeaderNames()方法来读取HTTP信息头。这个

方法以枚举的形式返回当前HTTP请求的头信息。

       获取Enumeration对象后,用标准的方式来遍历Enumeration对象,用hasMoreElements()方法来确定什么时候

停止,用nextElement()方法来获得每个参数的名字。

       main.jsp源代码为:

 

<%@page import="java.util.Enumeration"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>HTTP</title>
</head>
<body>
    <h1>HTTP头部请求实例</h1>
    <hr>
    <table width="100%" border="1" align="center">
	<tr bgcolor="#949494">
		<th>Header Name</th>
		<th>Header Value(s)</th>
	</tr>
 <%  Enumeration headerNames = request.getHeaderNames();  while (headerNames.hasMoreElements()) {  String paramName = (String) headerNames.nextElement();  out.print("<tr><td>" + paramName + "</td>\n");  String paramValue = request.getHeader(paramName);  out.println("<td> " + paramValue + "</td></tr>\n");  }  %> </table> </body> </html>

       访问main.jsp,将会得到以下结果:

  

二JSP服务器响应

       response响应对象主要将JSP容器处理后的结果传回到客户端。可以通过response变量设置HTTP的状态和向客

户端发送数据,如Cookie、HTTP文件头信息等。

       一个典型的响应看起来就像下面这样:

 

HTTP/1.1 200 OK
Content-Type: text/html
Header2: ...
...
HeaderN: ...
  (空行)
<!doctype ...>
<html>
<head>...</head>
<body>
...
</body>
</html>

       状态行包含HTTP版本信息,比如HTTP/1.1,一个状态码,比如200,还有一个非常短的信息对应着状态码,比

如OK。

       下表摘要出了HTTP1.1响应头中最有用的部分,在网络编程中您将会经常见到它们:

 (1)HttpServletResponse类

       response对象是 javax.servlet.http.HttpServletResponse类的一个实例。就像服务器会创建request对象一样,

它也会创建一个客户端响应。

       response对象定义了处理创建HTTP信息头的接口。通过使用这个对象,开发者们可以添加新的cookie或时间

戳,还有HTTP状态码等等。

      下表列出了用来设置HTTP响应头的方法,这些方法由HttpServletResponse类提供:

 

 (2)HTTP响应头程序示例

       接下来的例子使用setIntHeader()方法和setRefreshHeader()方法来模拟一个数字时钟:

       main1.jsp源代码:

 

<%@page import="java.util.GregorianCalendar"%>
<%@page import="java.util.Calendar"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>HTTP</title>
</head>
<body>
    <h1>自动刷新实例</h1>
    <%
	//设置每隔5秒自动刷新
	response.setIntHeader("Refresh", 5);
	//获取当前时间
	Calendar calendar = new GregorianCalendar();
 String am_pm;  int hour = calendar.get(Calendar.HOUR);  int minute = calendar.get(Calendar.MINUTE);  int second = calendar.get(Calendar.SECOND);  if (calendar.get(Calendar.AM_PM) == 0){}  am_pm = "AM";  else  am_pm = "PM";  String CT = hour + ":" + minute + ":" + second + " " + am_pm;  out.println("当前时间: " + CT + "\n");  %> </body> </html>

       将以上代码保存为main1.jsp,然后通过浏览器访问它。它将会每隔5秒显示一下系统当前时间。      

 

 三HTTP状态码

 

       HTTP请求与HTTP响应的格式相近,都有着如下结构:

 

       1)以状态行+CRLF(回车换行)开始

 

       2)零行或多行头模块+CRLF

 

       3)一个空行,比如CRLF

 

       4)可选的消息体比如文件,查询数据,查询输出

 

       举例来说,一个服务器响应头看起来就像下面这样:

 

 

 

HTTP/1.1 200 OK
Content-Type: text/html
Header2: ...
...
HeaderN: ...
  (Blank Line)
<!doctype ...>
<html>
<head>...</head>
<body>
...
</body>
</html>

 

       状态行包含HTTP版本,一个状态码,和状态码相对应的短消息。

 

       下表列出了可能会从服务器返回的HTTP状态码和与之关联的消息:

 (1)设置HTTP状态码的方法

      下表列出了HttpServletResponse类中用来设置状态码的方法:

 (2)HTTP状态码程序示例

       接下来的例子将会发送407错误码给浏览器,然后浏览器将会告诉您"Need authentication!!!"。

       main2.jsp源代码:

  

     访问以上JSP页面,将会得到以下结果:

 

相关文章
|
9月前
|
C# 图形学 开发者
Unity开发中使用UnityWebRequest从HTTP服务器下载资源。
总之,UnityWebRequest就是游戏开发者手中的万能钓鱼竿,既可以获取文本数据,也能钓上图片资源,甚至是那声音的涟漪。使用UnityWebRequest的时候,你需要精心准备,比如确定URL、配置请求类型和头信息;发起请求;巧妙处理钓获的数据;还需要机智面对网络波澜,处理各种可能出现的错误。按照这样的过程,数据的钓取将会是一次既轻松愉快也效率高效的编程钓鱼之旅。
498 18
|
11月前
|
Python
使用Python实现multipart/form-data文件接收的http服务器
至此,使用Python实现一个可以接收 'multipart/form-data' 文件的HTTP服务器的步骤就讲解完毕了。希望通过我的讲解,你可以更好地理解其中的逻辑,另外,你也可以尝试在实际项目中运用这方面的知识。
513 69
|
9月前
|
应用服务中间件 网络安全 数据安全/隐私保护
网关服务器配置指南:实现自动DHCP地址分配、HTTP服务和SSH无密码登录。
哇哈哈,道具都准备好了,咱们的魔术秀就要开始了。现在,你的网关服务器已经魔法满满,自动分配IP,提供网页服务,SSH登录如入无人之境。而整个世界,只会知道效果,不会知道是你在幕后操控一切。这就是真正的数字世界魔法师,随手拈来,手到擒来。
468 14
|
8月前
|
JSON 前端开发 Go
Go语言实战:创建一个简单的 HTTP 服务器
本篇是《Go语言101实战》系列之一,讲解如何使用Go构建基础HTTP服务器。涵盖Go语言并发优势、HTTP服务搭建、路由处理、日志记录及测试方法,助你掌握高性能Web服务开发核心技能。
|
8月前
|
Go
如何在Go语言的HTTP请求中设置使用代理服务器
当使用特定的代理时,在某些情况下可能需要认证信息,认证信息可以在代理URL中提供,格式通常是:
563 0
|
11月前
|
JSON API 数据安全/隐私保护
使用curl命令在服务器上执行HTTP请求
总的来说,curl是一个非常强大的工具,它可以让你在命令行中发送各种类型的HTTP请求。通过学习和实践,你可以掌握这个工具,使你的工作更加高效。
1007 30
|
10月前
|
JSON 安全 网络协议
HTTP/HTTPS协议(请求响应模型、状态码)
本文简要介绍了HTTP与HTTPS协议的基础知识。HTTP是一种无状态的超文本传输协议,基于TCP/IP,常用80端口,通过请求-响应模型实现客户端与服务器间的通信;HTTPS为HTTP的安全版本,基于SSL/TLS加密技术,使用443端口,确保数据传输的安全性。文中还详细描述了HTTP请求方法(如GET、POST)、请求与响应头字段、状态码分类及意义,并对比了两者在请求-响应模型中的安全性差异。
971 20
|
10月前
|
存储 数据库 Python
使用HTTP POST协议将本地压缩数据发送到服务器
总的来说,使用HTTP POST协议将本地压缩数据发送到服务器是一个涉及多个步骤的过程,包括创建压缩文件,设置HTTP客户端,发送POST请求,以及服务器端的处理。虽然这个过程可能看起来复杂,但一旦你理解了每个步骤,就会变得相对简单。
367 19
|
10月前
|
存储 安全 数据安全/隐私保护
HFS-快速创建HTTP服务器
鉴于HFS的操作简便和方便快捷,它在满足快速,临时的文件分享和传输需求上,能够发挥出巨大的作用。只要明确了以上的安全警告,并做好了必需的安全设置,HFS将是一款实用的HTTP服务器工具。
1179 9
|
11月前
|
安全 网络安全 定位技术
网络通讯技术:HTTP POST协议用于发送本地压缩数据到服务器的方案。
总的来说,无论你是一名网络开发者,还是普通的IT工作人员,理解并掌握POST方法的运用是非常有价值的。它就像一艘快速,稳定,安全的大船,始终为我们在网络海洋中的冒险提供了可靠的支持。
321 22