Servlet-客户端请求
Servlet-客户端请求
- 读取HTTP标头的方法
- HTTP标头请求示例
当浏览器请求网页时,它会将大量信息发送到Web服务器,该信息无法直接读取,因为该信息作为HTTP请求标头的一部分传播。
以下是来自浏览器端的重要标头信息,您将在网络编程中经常使用:
序号 | 标头和说明 |
---|---|
1 | Accept:此标头指定浏览器或其他客户端可以处理的MIME类型。值一般为image/png或image/jpeg两种情况。 |
2 | Accept-Charset:此标头指定浏览器可用于显示信息的字符集。例如UTF-8。 |
3 | Accept-Encoding:此标头指定浏览器知道如何处理的编码类型。值一般为gzip或compress两种情况。 |
4 | Accept-Language:如果servlet可以使用多种语言生成结果,则此标头指定客户机的首选语言。例如en,en-us,ru等 |
5 | Authorization:客户端使用此标头在访问受密码保护的网页时标识自己。 |
6 | Connection:此标头指示客户端是否可以处理持久HTTP连接。持久连接允许客户端或其他浏览器通过单个请求检索多个文件。保持活动的值表示应使用持久连接。 |
7 | Content-Length:此标头仅适用于POST请求,并以字节为单位给出POST数据的大小。 |
8 | Cookie:此标头将cookie返回到先前已将其发送到浏览器的服务器。 |
9 | Host:此标头指定原始URL中给定的主机和端口。 |
10 | If-Modified-Since:此标头表示仅在指定日期之后更改页面,客户端才需要该页面。服务器发送代码304,如果没有可用的新结果,则表示未修改的标头。 |
11 | If-Unmodified-Since:此标头与If-Modified-Since相反;它指定仅当文档早于指定日期时,操作才能成功。 |
12 | Referer:此标头指示引荐网页的URL。例如,如果您在Web页1上并单击指向Web页2的链接,则当浏览器请求Web页2时,Referrer标头中将包含Web页1的URL。 |
13 | User-Agent:该标头标识了发出请求的浏览器或其他客户端,可用于将不同的内容返回给不同类型的浏览器。 |
读取HTTP标头的方法
有以下方法可用于读取servlet程序中的HTTP标头。这些方法可用于HttpServletRequest对象
序号 | 方法与说明 |
---|---|
1 | Cookie[] getCookies():返回一个数组,其中包含客户端与此请求一起发送的所有Cookie对象。 |
2 | Enumeration getAttributeNames():返回一个枚举,其中包含可用于此请求的属性的名称。 |
3 | Enumeration getHeaderNames():返回此请求包含的所有标头名称的枚举。 |
4 | Enumeration getParameterNames():返回一个String对象的枚举,其中包含此请求中包含的参数的名称 |
5 | HttpSession getSession():返回与此请求关联的当前的session,或者如果该请求没有session,则创建一个session。 |
6 | HttpSession getSession(boolean create):返回与此请求关联的当前的HttpSession;如果没有当前的session且create的值为true,则返回一个新的session。 |
7 | Locale getLocale():根据Accept-Language标头返回客户端将在其中接受内容的首选语言环境。 |
8 | Object getAttribute(String name):将命名属性的值作为Object返回;如果不存在给定名称的属性,则返回null。 |
9 | ServletInputStream getInputStream():使用ServletInputStream以二进制数据的形式检索请求的主体。 |
10 | String getAuthType():返回用于保护servlet的认证方案的名称,例如“ BASIC”或“ SSL”;如果未保护JSP,则返回null。 |
11 | String getCharacterEncoding():返回此请求正文中使用的字符编码的名称。 |
12 | String getContentType():返回请求正文的MIME类型;如果类型未知,则返回null。 |
13 | String getContextPath():返回请求URI中指示请求上下文的部分。 |
14 | String getHeader(String name):以字符串形式返回指定请求标头的值。 |
15 | String getMethod():返回发出此请求的HTTP方法的名称,例如GET,POST或PUT。 |
16 | String getParameter(String name):以字符串形式返回请求参数的值,如果参数不存在,则返回null。 |
17 | String getPathInfo():返回与客户端发出此请求时发送的URL相关的任何其他路径信息 |
18 | String getProtocol():返回请求的协议的名称和版本。 |
19 | String getQueryString():返回路径后面的请求URL中包含的查询字符串。 |
20 | String getRemoteAddr():返回发送请求的客户端的Internet协议(IP)地址。 |
21 | String getRemoteHost():返回发送请求的客户端的标准名称 |
22 | String getRemoteUser():如果用户已通过身份验证,则返回发出此请求的用户的登录名;如果用户未通过身份验证,则返回null。 |
23 | String getRequestURI():返回此请求的URL的一部分,从协议名称到HTTP请求第一行中的查询字符串。 |
24 | String getRequestedSessionId():返回客户端指定的会话ID。 |
25 | String getServletPath():返回此请求的URL中调用JSP的部分。 |
26 | String[] getParameterValues(String name):返回一个String对象数组,其中包含给定请求参数具有的所有值;如果该参数不存在,则返回null。 |
27 | boolean isSecure():返回一个布尔值,该布尔值指示是否使用安全通道(例如HTTPS)发出此请求。 |
28 | int getContentLength():返回请求主体的长度(以字节为单位),并由输入流提供;如果未知,则返回-1。 |
29 | int getIntHeader(String name):以int形式返回指定请求标头的值。 |
30 | int getServerPort():返回接收到该请求的端口号 |
HTTP标头请求示例
以下是使用HttpServletRequest的getHeaderNames()方法读取HTTP标头信息的示例。此方法返回一个Enumeration,其中包含与当前HTTP请求关联的标头信息。
一旦有了枚举,就可以使用hasMoreElements()方法确定何时停止并使用nextElement()方法获取每个参数名称,以标准方式循环枚举。
// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;// Extend HttpServlet class
public class DisplayHeader extends HttpServlet {// Method to handle GET method request.public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// Set response Headerresponse.setHeader("contentType","text/html;charset=UTF-8");response.setContentType("text/html");response.setCharacterEncoding("UTF-8");PrintWriter out = response.getWriter();String title = "HTTP标头请求示例";String docType ="<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";out.println(docType +"<html>\n" +"<head><title>" + title + "</title></head>\n"+"<body bgcolor = \"#f0f0f0\">\n" +"<h1 align = \"center\">" + title + "</h1>\n" +"<table width = \"100%\" border = \"1\" align = \"center\">\n" +"<tr bgcolor = \"#949494\">\n" +"<th>Header Name</th><th>Header Value(s)</th>\n"+"</tr>\n");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");}out.println("</table>\n</body></html>");}// Method to handle POST method request.public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}
}
上一篇:Servlet-表单数据
下一篇:Servlet-Http状态代码
Servlet-客户端请求相关推荐
- JSP 客户端请求概述
当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信息头的一部分来传送的.您可以查阅HTTP协议来获得更多的信息. 下表列出了浏览器端信息头的一些重要内 ...
- java httpinvoker漏洞_Spring HttpInvoker 服务端安全验证的和客户端请求配置
1.服务端 服务Java接口 package service; public interface TestService { int add(int i,int j); } 服务的Java实现 pac ...
- JAVA记录-Servlet RequestDispatcher请求转发
RequestDispatcher接口提供将请求转发送到另一个资源的功能,它可能是html,servlet或jsp等. 此接口也可用于包括另一资源的内容.它是servlet协作的一种方式. 在Requ ...
- Java web—Servlet的请求与响应
前言: 在家上网课快上疯了╰(‵□′)╯,上课连课本都没有,太难受了呜呜呜~, 只能在blog里记录一下这段时间的学习的内容,太难了- 一.servlet概述: 运行在WEB服务器端的 ...
- Java Web学习(六)HttpServletRequest(客户端请求)
一.定义 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有 ...
- 24.JSP 客户端请求
JSP 客户端请求 当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信息头的一部分来传送的.您可以查阅HTTP协议来获得更多的信息. 下表列出了浏览器 ...
- javaweb项目得执行过程及servlet得请求(Httprequest)和响应(Httpresponse)
javaweb项目的执行过程及servlet核心要点 1.javaWeb应用的结构 1.Java Resources :java代码 2.WebContent:资源文件 如:html css ...
- Servlet之请求包含与会话技术获取表单信息(Cookie)
request获取form表单中提交的数据 用ServletContext获取 ServletContext context = this.getServletContext(); String us ...
- 通过request对象获取客户端请求信息
一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...
- SCCM 2007系列教程之二客户端安装之客户端请求安装
一.客户端安装方法: 客户端请求安装.软件更新点安装. 组策略安装.登录脚本安装.手动安装.升级安装.客户端映像 客户端成功安装客户端之后,它将尝试分配到某个站点,并找到该站点的默认管理点以下 ...
最新文章
- 数组越界怎么判断_算法连载之求解两个有序数组的中位数
- php json注释,【部分解决】Json中添加注释
- inline-block空白间隙
- 数组字典_VBA数组与字典解决方案第34讲:数组的传递
- 怎么让模糊的数字变清楚_一键模糊图像变清晰,好家伙!这款神器插件你值得拥有...
- 给自己的网站添加复制提示代码
- Layer1隐私项目BeamX DAO完成200万美元融资,Collider Ventures、AirSpeed18等机构参投
- 14英寸电脑长宽多少_华为MateBook 14 2020款 14英寸轻薄笔记本王者升级
- Ubuntu18.04报错:bin/bash: prebuilts/misc/linux-x86/bison/bison: cannot execute binary file解决
- 查看局域网内的所有IP地址
- python判断工作日,节假日
- 4G模块Air720系列 android RIL驱动源码发布
- centos安装git时出错提示make[1]: *** [perl.mak] Error 2
- Linux故障——开机显示!!!failed to loadSELinux policy,freezing...
- android出生日期计算年龄,Java 通过生日计算宝宝多大了,输出我27岁7月零9天
- 关于右键自定义 vue-contextmenu
- Android Manifest
- myeclipse-添加jar包
- 程序员为什么都容易“喜当爹”
- 面试英语情景对话,求职者必看!