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

一JSP客户端请求

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

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

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

16dbf048e659012b75dc10275355e041.png

(1)HttpServletRequest类

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

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

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

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

d736331d0cafb3992a48feb956ff3c3a.png

0d192f9deec95c61681d7bb0c46bb52c.png

e64f77509b2df8a6f763b9f029ebbc4f.png

(2)HTTP信息头示例

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

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

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

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

main.jsp源代码为:

pageEncoding="UTF-8"%>

HTTP

HTTP头部请求实例


Header NameHeader Value(s)

Enumeration headerNames = request.getHeaderNames();

while (headerNames.hasMoreElements()) {

String paramName = (String) headerNames.nextElement();

out.print("

" + paramName + "\n");

String paramValue = request.getHeader(paramName);

out.println("

" + paramValue + "\n");

}

%>

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

836b23efc2bd5d909e516dc54244b461.png

二JSP服务器响应

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

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

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

HTTP/1.1 200 OKContent-Type: text/htmlHeader2: ......HeaderN: ...(空行)..>

......

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

如OK。

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

579ace8b62189725aa57862d8b43fff4.png

(1)HttpServletResponse类

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

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

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

戳,还有HTTP状态码等等。

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

54d3101e102b7019b0614f9a6033d690.png

2a18d45d16f644692a180064df07fcf0.png

(2)HTTP响应头程序示例

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

main1.jsp源代码:

pageEncoding="UTF-8"%>

HTTP

自动刷新实例

//设置每隔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");

%>

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

三HTTP状态码

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

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

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

3)一个空行,比如CRLF

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

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

HTTP/1.1 200 OKContent-Type: text/htmlHeader2: ......HeaderN: ...(Blank Line)..>

......

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

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

188468aa208350a0c6e40d7e67c29b45.png

c598249730bfc2c2d9e3bea248ce7018.png

b48ba08cb345a3d55fb8f8ff49363310.png

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

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

76a261169b08bce0036b4110cd311a05.png

(2)HTTP状态码程序示例

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

main2.jsp源代码:

045574f32dd1faf4434ff296e69f12db.png

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

43435ed8ae4d22c918b2dd5f95e58658.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值