JSP 客户端请求

JSP 操作使用 XML 语法中的结构来控制 Servlet 引擎的行为。我们将详细学习各种 JSP 操作元素,例如客户端请求、服务器响应和 HTTP 状态码。
JSP 客户端请求
- 当请求网页时,它会在 HTTP 标头中将信息发送到 Web 服务器。
- 我们可以使用 HTTPServletRequest 对象使用此信息。
- 浏览器发送的信息保存在HTTP请求的请求头中。
- 我们使用不同的标题向请求对象发送信息。
JSP 中的标头
JSP 中的不同标头如下所述:
| 标题 | 描述 | 例如: |
|---|---|---|
| 接受 | 它指定浏览器或其他客户端可以处理的 MIME 类型 | Image/png 或 image/jpeg |
| 接受字符集 | 它使用浏览器使用的字符集来显示信息 | ISO 8859 1 |
| 接受编码 | 它指定浏览器处理的编码类型 | Gzip 或者压缩 |
| 接受语言 | 它指定客户指定的语言 | En,en_us |
| 授权 | 客户端尝试访问受密码保护的网页时使用的标头 | |
| 连接升级包 | 它表明客户端是否可以处理持久的 HTTP 连接(浏览器可以检索多个文件) | 活着 |
| 内容长度 | 适用于发布请求。它给出发布数据的大小(以字节为单位) | |
| 利用Cookies的 | 将 cookie 返回给服务器(之前发送给浏览器的 cookie) | |
| 主办方 | 指定原始主机和端口 URL | |
| 如果自 | 它表示如果它已被更改或修改,则只需要一个页面 | |
| 如果未修改 | 表示仅当页面未发生改变或修改时才需要该页面 | |
| 推荐人 | 表示 URL 指 URL 页 | |
| 用户代理 | 识别发出请求的浏览器或客户端 |
JSP 中的 HTTP 标头方法
以下方法用于读取JSP页面中的HTTP标头:
- Cookie[] getCookies() – 返回包含客户端发送的 cookie 对象的数组
- 枚举 getAttributeNames() – 包含请求属性名称的枚举
- 枚举 getHeaderNames() – 包含标头名称的枚举。
- 枚举 getParameterNames() – 包含请求中获取参数名称的枚举。
- HttpSession getSession() – 返回与请求相关的当前会话,如果没有会话,那么它将创建一个新的会话。
- 区域设置 getLocale() – 返回客户端将接受内容的首选语言环境。它已分配给响应。默认情况下,该值将是服务器的默认语言环境。
- 对象 getAttribute(字符串名称) – 将命名属性的值作为对象返回。
- ServletInputStream getInputStream() – 以二进制数据形式检索请求体。
- 字符串 getAuthType() – 返回用于保护 servlet 的身份验证方案的名称
- 字符串 getCharacterEncoding() – 返回请求主体中使用的字符编码名称。
- 字符串 getContentType() – 返回请求主体的 MIME 类型。
- 字符串 getContextPath() – 返回请求 URI 的一部分,表示 URI 的上下文路径
- 字符串 getHeader(字符串名称) – 以字符串形式返回请求标头
- 字符串 getMethod() – 返回 HTTP 方法的名称,如 GET、POST
- 字符串 getParameter(字符串名称) – 以字符串形式返回请求的参数。
- 字符串 getPathInfo() – 返回与以下路径关联的信息: URL
- 字符串 getQueryString() – 返回与请求关联的查询字符串 URL
- 字符串 getServletPath() – 返回部分 URL调用 JSP 的请求的 s
- String[] getParameterValues(字符串名称) – 返回包含请求参数值的字符串对象数组
计费示例:
在下面的例子中,我们使用请求对象的不同方法
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page import="java.io.* java.util.*" %> <!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=ISO-8859-1"> <title>Client Request Guru JSP</title> </head> <body> <h2>Client Request Guru JSP</h2> <table border="1"> <tr> <th>guru header</th><th>guru header Value(s)</th> </tr> <% HttpSession gurusession = request.getSession(); out.print("<tr><td>Session Name is </td><td>" +gurusession+ "</td.></tr>"); Locale gurulocale = request.getLocale (); out.print("<tr><td>Locale Name is</td><td>" +gurulocale + "</td></tr>"); String path = request.getPathInfo(); out.print("<tr><td>Path Name is</td><td>" +path+ "</td></tr>"); String lpath = request.get(); out.print("<tr><td>Context path is</td><td>" +lipath + "</td></tr>"); String servername = request.getServerName(); out.print("<tr><td>Server Name is </td><td>" +servername+ "</td></tr>"); int portname = request.getServerPort(); out.print("<tr><td>Server Port is </td><td>" +portname+ "</td></tr>"); Enumeration hnames = request.getHeaderNames(); while(hnames.hasMoreElements()) { String paramName = (String)hnames.nextElement(); out.print ("<tr><td>" + paramName + "</td>" ); String paramValue = request.getHeader(paramName); out.println("<td> " + paramValue + "</td></tr>"); } %>
代码说明:
Code 线17: 使用请求对象,我们获取该特定会话的会话对象,并获取该会话的对象值
Code 线19: 通过请求对象,我们可以获取该特定会话的区域设置,即该 JSP 的区域设置是 en_US。
Code 线21: 我们使用请求对象获取该 JSP 的路径信息。在本例中,由于没有该 JSP 的路径,因此路径信息为空。 URL 提及。
Code 线23: 使用请求对象,我们获取上下文路径,即根路径
Code 线25: 使用请求对象,我们获取服务器名称。
Code 线27: 使用请求对象,我们获取服务器端口。
Code 第 29-35 行: 使用请求对象,我们获得以枚举形式出现的标头名称,因此我们获得标头名称中的所有标头值。
在此,我们将所有标题值作为 利用Cookies的、主机、连接、接受语言、接受编码。
执行上述代码时,您将获得以下输出:
输出:
我们获取了一系列值,例如会话名称、语言环境名称、路径名、服务器名称、端口名、主机、上下文路径以及所有标头值 JSP.
JSP 服务器响应
- 当请求被处理后,Web 服务器会生成响应。响应由状态行、响应头、空白行和文档组成。
- 它是 HTTPServletResponse 类的对象,也就是一个响应对象。
- 状态行是 HTML 的一个版本。
JSP 中的响应标头
JSP 中的响应头如下:
| 标题 | 描述 |
|---|---|
| 让 | 它指定服务器正在请求的请求方法,例如 GET、POST |
| 缓存控制 | 响应文档可以缓存。可以是公共、私有或无缓存。无缓存指定文档不应缓存 |
| 连接升级包 | 它指示浏览器是否应使用 savedHTTPConnections。Close 值表示浏览器不应在 HTTPConnections 中使用持久连接,“keep-alive” 表示使用持久连接 |
| 内容配置 | 询问用户是否将响应保存到磁盘 |
| 内容编码 | 页面在传输过程中必须进行编码 |
| 内容长度 | 响应中的字节数 |
| 内容类型 | 它指定响应的 MIME 类型 |
| 到期日期 | 指定内容应被视为过期且不应缓存的时间 |
| 最后修改 | 它指示文档的最后修改时间 |
| 地点 | 它应该包含在所有具有状态代码 300 的响应中 |
| 刷新 | 它指定如何找到更新的页面。 |
| 重试 | 它可以与 503 响应一起使用,告诉客户端多久可以重复请求 |
| 设置cookie | 规定与页面关联的 cookie |
JSP 中的 HTTP 响应标头方法
以下是 JSP 中使用响应对象的方法:
- 字符串编码重定向URL(细绳 URL) - 编码 URL 重定向URL 方法。
- 字符串编码URL(细绳 URL) - 编码 URL 通过包含会话 ID。
- 布尔值 containsHeader(字符串名称) – 它在 JSP 中是否包含标头。
- 布尔值 isCommited() – 响应是否已被提交。
- void addCookie(Cookie cookie) – 在响应中添加 cookie
- Void addDateHeader(字符串名称,字符串值) – 添加响应头日期名称和值
- Void addHeader(字符串名称,字符串值) – 添加带有名称和值的响应标头
- Void addIntHeader(字符串名称,int 值) – 添加带有名称和整数值的响应标头
- 虚空冲洗Buffer()– 强制将缓冲区中的内容输出至客户端。
- 无效重置() – 清除缓冲区中的数据。
- 无效重置Buffer – 清除响应中的内容缓冲区而不清除状态代码。
- void sendError(int sc,String msg) – 使用状态代码向客户端发送错误响应。
- 无效 sendRedirect(字符串位置) – 向客户端发送临时重定向响应。
- 虚空套装Buffer大小(int 大小) – 设置主体的缓冲区大小
- 无效设置字符编码(字符串字符集) – 设置字符编码
- 无效 setContentType(字符串类型) – 设置响应的内容类型
- void setContentLength(int len) – 设置响应的内容长度
- 无效 setLocale(Locale lcl) – 设置响应的区域类型
- void setStatus(int sc) – 设置响应的状态代码
计费示例:
在这个例子中,我们将介绍不同的方法,包括 getLocale、flushbuffer 和 get。Writer, getContentType, setIntHeader。
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page import="java.io.* java.util.*" %> <!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=ISO-8859-1"> <title>Guru Action Response</title> </head> <body> <center> <h2>Guru Response</h2> <% Locale lcl = response.getLocale(); out.println("Locale is : " + lcl + "\n"); response.flushBuffer(); PrintWriter output = response.getWriter(); output.println("This is from writer object"); String type = response.getContentType(); out.println("The content type : " + type + "\n"); // Set refresh,autoload time as 5 seconds response.setIntHeader("Refresh", 5); //Get current time Date dt = new Date(); out.println("Today's date is : " +dt.toString() + "\n"); %> </center> </body> </html>
代码说明:
Code 线13: 使用响应对象,我们获取此 JSP 会话的区域设置对象
Code 线15: 使用响应对象,使用 flushbuffer 将缓冲区内容强制写入客户端
Code 线16: 使用响应对象,我们得到在输出流中输出的写入器对象
Code 线18: 使用响应对象,我们获取响应对象的内容类型,即 MIME 类型
Code 线21: 使用响应对象,它用于每 5 秒自动加载一次,因为第二个参数设置为 5
执行上述代码时,您将获得以下输出:
输出:
- 这里我们从 get 函数的 writer 对象中获取输出。Writer这样我们就得到了一个对象,我们可以将其输出到输出流中。
- 我们将语言环境设置为 en_us,将内容类型设置为 text/html
- 我们得到的字符集是 ISO 8859
- 今天的日期作为当前日期。
JSP HTTP 状态 Codes
- 当请求被处理时,就会生成响应。响应状态行由 HTTP 版本、状态代码和相关消息组成。
- 该消息与状态码、HTTP版本直接相关,由服务器决定。
- 默认情况下,200 被设置为 JSP 中的状态代码,因此我们不需要明确设置。
- 我们可以设置为 response.setStatus() 方法
代码分为以下 5 类:
- 100-199 – 客户端在此表示它应该采取一些行动
- 200-299 – 表示请求成功
- 300-399 – 它们用于已移动的文件,通常包含指示新地址的位置标头
- 400-499 – 表示客户端错误
- 500-599 – 表示服务器错误
一些常见的状态代码如下:
- 200 – 表示一切正常
- 301 – 已永久移动
- 304 – 自上次更改后未修改
- 400 –错误的要求
- 404 – 未找到
- 405 – 未找到方法
- 500 - 内部服务器错误
- 503服务不可用
- 505——HTTP 版本不受支持
HTTP 状态 Code JSP中的方法
JSP 中的一些状态码方法如下:
- public void setStatus(int status)Code): 它设置我们想要在该 JSP 页面中设置的状态代码。这将向我们提供已设置的状态代码的消息
- public void sendRedirect(String URL): 它会生成 302 响应以及位置标头,提供 URL 新文件
- public void sendError(int code,String msg): 它将状态代码与短消息一起发送,并在 HTML 文档中进行格式化。
计费示例:
在这个例子中,我们明确地将错误发送到 JSP 页面。
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!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=ISO-8859-1"> <title>Guru Status Code</title> </head> <body> <% response.sendError(404,"Guru Page Not Found"); %> </body> </html>
代码说明:
Code 线10: 使用响应对象我们将错误发送到带有两个参数的页面。
- 状态代码 – 可以是以上任何一种。在本例中,我们将其描述为 404
- 消息 – 可以是我们想要显示错误的任何特定消息
如果你执行上述代码,你会得到以下输出:
输出:
这里我们收到错误代码 404,该错误代码由代码发送,并且还显示“Guru 输出中显示“页面未找到”消息。



