Jsp学习3-请求与响应

1.客户端请求

HTTP信息头的内容是不能直接被读取的
这里写图片描述

HttpServletRequest类

request对象是javax.servlet.http.HttpServletRequest类的实例。每当客户端请求一个页面时,JSP引擎就会产生一个新的对象来代表这个请求。
request对象提供了一系列方法来获取HTTP信息头,包括表单数据,cookies,HTTP方法等等。
这里写图片描述
这里写图片描述
这里写图片描述

HTTP信息头示例

在这个例子中,我们会使用HttpServletRequest类的getHeaderNames()方法来读取HTTP信息头。这个方法以枚举的形式返回当前HTTP请求的头信息。
获取Enumeration对象后,用标准的方式来遍历Enumeration对象,用hasMoreElements()方法来确定什么时候停止,用nextElement()方法来获得每个参数的名字。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
<h2>HTTP 头部请求实例</h2>
<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>

结果:
这里写图片描述

2.服务器响应

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响应头中最有用的部分,在网络编程中您将会经常见到它们:
这里写图片描述

HttpServletResponse类

response 对象是 javax.servlet.http.HttpServletResponse 类的一个实例。就像服务器会创建request对象一样,它也会创建一个客户端响应。
response对象定义了处理创建HTTP信息头的接口。通过使用这个对象,开发者们可以添加新的cookie或时间戳,还有HTTP状态码等等。
下表列出了用来设置HTTP响应头的方法,这些方法由HttpServletResponse 类提供:
这里写图片描述
这里写图片描述

HTTP响应头程序示例

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

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
<h2>自动刷新实例</h2>
<%
   // 设置每隔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>

参考:http://www.runoob.com/jsp/jsp-server-response.html
http://www.runoob.com/jsp/jsp-client-request.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.引入jQuery库 在jsp页面中,首先要引入jQuery库。可以使用CDN或者本地引入,如: <!-- CDN引入jQuery库 --> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <!-- 本地引入jQuery库 --> <script src="js/jquery.min.js"></script> 2.编写ajax请求代码 在jsp页面中,可以使用jQuery的ajax方法来发送ajax请求。ajax方法中可以设置url、type、data等参数。 示例代码: $.ajax({ url: "test.jsp", //请求的url地址 type: "post", //请求方式 data: { //请求参数 name: "张三", age: 18 }, dataType: "json", //返回数据格式 success: function (data) { //请求成功回调函数 console.log(data); }, error: function (xhr, status, error) { //请求失败回调函数 console.log(error); } }); 以上代码表示向test.jsp页面发送一条POST请求请求参数为{name:"张三",age:18},返回数据格式为json。请求成功后,会执行回调函数success,请求失败后会执行回调函数error。 3.在jsp页面中处理ajax请求jsp页面中,可以使用Java代码来处理ajax请求。可以使用request.getParameter()方法获取请求参数,使用response.getWriter()方法返回响应结果。 示例代码: <% String name = request.getParameter("name"); int age = Integer.parseInt(request.getParameter("age")); JSONObject json = new JSONObject(); json.put("name", name); json.put("age", age); response.setContentType("application/json;charset=utf-8"); response.getWriter().write(json.toString()); %> 以上代码表示获取请求参数name和age,然后将其封装成json格式返回给前端页面。在返回响应结果之前,需要设置响应头的ContentType为application/json;charset=utf-8,表示返回的数据是json格式的。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值