回顾上一章的知识:
请求网络资源HTTP会发出多个请求并得到响应
设置响应状态行关键是设置状态码
在向客户端输出内容之前要设置状态码和响应头
设置响应头让Servlet发挥最大功能
消息体可以用文本或二进制流方式发送
响应重定向把请求转发给另外一个URL,利用302状态码和Locatoin头,让浏览器处理
可以根据时间来控制响应
 
本章目标:
HTTP请求提交的方法
获取HTTP请求行与请求头
获取表单数据
请求派发和请求范围
 
GET/POST提交方法:
浏览器向Web服务器发送HTTP请求
–用户在网页上点击一个超连接
–用户提交在网页上填写好的表单
–用户在浏览器地址栏中输入URL地址并回车 
默认情况下都是使用HTTP协议的GET方法提交请求
 
GET/POST提交方法区别:
 

何时使用GET/POST方法:

1:请求一个静态页面或图形文件时使用GET方法,因为仅仅需要发送文件名;

2:发送大数据的时候,使用POST方法;

3:上传文件时,使用POST方法;

4:发送用户名、密码或其他保密信息的时候使用POST方法;

 
获取HTTP协议请求行:
HttpServletRequest对象的如下方法访问
–getMethod():获取HTTP的请求方法,例如GET、POST等

-getRequestURI():获取请求的URI资源

–getRequestURL():获取请求的URL,包含协议名、服务器名或IP、端口号和请求资源但不包括查询字符串参数
–getQueryString():获取请求URL后面的查询字符串
–getProtocol():获取HTTP的协议名和版本号
–getContextPath():获取请求URI资源的上下文路径
–getServletPath():获取Servlet的映射路径
 
获取HTTP协议请求头:
HTTP请求头用于告诉服务器客户端使用什么软件以及客户端想要服务器如何返回请求的信息
HttpServletRequest对象的如下方法访问
–getHeader(name):返回指定的请求头的值
–getHeaders(name) :返回一个Enumeration(枚举)包含请求头中的所有值
–getHeaderNames():特定请求中接受到的所有请求头的名称
–getIntHeader(name):获取特定请求头的值,并将其转化为int类型
–getDateHeader(name):获取特定请求头的值,并将其转化为Date类型  
 

Enumeration enum = request.getHeaderNames();

while (enum.hasMoreElements()) {

String headerName = (String) enum.nextElement();

String headerValue = request.getHeader(headerName);

out.print("<b>"+headerName + "</b>: ");

out.println(headerValue + "<br>");

}

获取请求消息体:

消息体可以是普通文本也可以是二进制数据 
HttpServletRequest对象可以使用通用的方法来获取表单数据
 
请求转发和请求方法:
重定向和请求转发之间最大的区别在于,重定向让客户端浏览器来完成,而请求转发是在服务器端做工作。
请求转发:
RequestDispatcher对象可以通过调用ServletRequest对象的方法:getRequestDispatcher(String path);
RequestDispatcher对象提供了两种方法来包含资源以及请求转发到不同的资源:
forward(ServletRequest, ServletResponse):派发请求和响应对象到RequestDispatcher 对象所确定的新资源(Servlet、JSP或者HTML等)
include(ServletRequest, ServletResponse):该方法关键是能包含服务器端的资源 
总结:
HttpServletRequest对象主要用于处理分析请求
默认情况下,使用HTTP协议的GET方法提交请求
HTML表单通过“method”属性使浏览器使用HTTP POST方法
GET/POST方法适用于不同场合
HttpServletRequest对象中最常用的方法是获取请求表单参数
HttpServletRequest对象也可以得到请求中参数的原始字节数据
重定向和请求派发之间最大的区别在于,重定向让客户端浏览器来完成,而请求派发是在服务器端做工作
HttpServletRequest可以把一个对象用名字绑定在请求范围内,并且进行访问和删除
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

第四章 使用Servlet处理HTTP请求的更多相关文章

  1. Head First Servlets & JSP 学习笔记 第四章 —— 作为Servlet

    Servlet的任务是得到一个客户的请求,再发回一个响应. 请求: 容器控制着Servlet的一生,它会创建请求和响应对象.为Servlet创建一个新线程或分配一个线程,另外调用Servlet的ser ...

  2. Java Servlet学习笔记(四)Servlet客户端Http请求

    Servlet 客户端 HTTP 请求 当浏览器请求网页时,它会向 Web 服务器发送特定信息,这些信息不能被直接读取,因为这些信息是作为 HTTP 请求的头的一部分进行传输的.您可以查看 HTTP ...

  3. 第四章 Ajax与jQuery

    第四章   Ajax与jQuery 一.Ajax简介 在传统的Web应用中,每次请求服务器都会生成新的页面,用户在提交请求后,总是要等待服务器的响应.如果前一个请求没有响应,则后一个请求就不能发送,在 ...

  4. 第四章 Sentinel--服务容错

    我们接着承接上篇继续讲下去 : 第三章 Nacos Discovery–服务治理,开始第四篇的学习 第四章 Sentinel–服务容错 4.1 高并发带来的问题 在微服务架构中,我们将业务拆分成一个个 ...

  5. 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...

  6. 《Linux内核设计与实现》读书笔记 第四章 进程调度

    第四章进程调度 进程调度程序可看做在可运行太进程之间分配有限的处理器时间资源的内核子系统.调度程序是多任务操作系统的基础.通过调度程序的合理调度,系统资源才能最大限度地发挥作用,多进程才会有并发执行的 ...

  7. 精通Web Analytics 2.0 (6) 第四章:点击流分析的奇妙世界:实际的解决方案

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第四章:点击流分析的奇妙世界:实际的解决方案 到开始实际工作的时候了.哦耶! 在本章中,您将了解到一些最重要的网络分析报告,我将 ...

  8. 《Linux内核设计与实现》课本第四章自学笔记——20135203齐岳

    <Linux内核设计与实现>课本第四章自学笔记 进程调度 By20135203齐岳 4.1 多任务 多任务操作系统就是能同时并发的交互执行多个进程的操作系统.多任务操作系统使多个进程处于堵 ...

  9. servlet和http请求

    1.servlet servlet是和平台无关的服务器组件,可以交互式的来浏览和修改数据,生成动态的web内容.它运行于 servlet容器中2.servlet容器 servlet容器负责servle ...

随机推荐

  1. include require include_once require_once

    include 使用方法: include "test.php"; 一般是放在流程控制的处理部分中使用,将文件内容引入.PHP程序在遇到include语句时,才将它读进来,这种方式 ...

  2. python 的 字节码 导入使用

    1. python 模块文件可以通过编译为字节码的形式: 名字:model.py x = def funt(): import model print(model.x) x = "zhang ...

  3. 基类的析构函数写成virtual虚析构函数

    虚函数作用:动态绑定,实现多态效果. 场景问题: 派生类中有资源需要回收,而在编程中采用多态,由基类的指针指向派生类,则在释放的时候,如果基类的析构函数不是virtual,则派生类的析构函数得不到释放 ...

  4. Swift简单实现一个常规条款、免责声明文字+带有链接的展示形式

    效果:   IMG_F08DABE063A6-1.jpeg class DisclamerView: UIView { //@objc weak var vc:UIViewController? // ...

  5. Android-Java-引用数据类型参数传递内存图

    首先看一个案例: package android.java.oop04; class Person { public String name; public void showName() { Sys ...

  6. SQL Server主要系统视图说明

    SELECT * FROM sys.all_columns --显示属于用户定义对象和系统对象的所有列的联合--https://docs.microsoft.com/zh-cn/sql/relatio ...

  7. 一步步改造wcf,数据加密传输-匿名客户端加密传输(2)

    1         引言 前面的例子中, encodedValue这一串代码是自动生成的,所以在生产环境中,你需要安装一个VS201X,把代码放上去,然后刷新引用!!!就可以了,这么做的话,你可能是只 ...

  8. 迁移桌面程序到MS Store(6)——.NET Portability Analyzer

    上一篇我们简单介绍了.NET Standard,本篇我们来实践.NET Framework 4.5 Class Library到.NET Standard 2.0的转换.        首先让我们来做 ...

  9. 《jQuery基础教程(第四版)》学习笔记

    本书代码参考:Learning jQuery Code Listing Browser 原书: jQuery基础教程 目录: 第2章 选择元素 1. 使用$()函数 2. 选择符 3. DOM遍历方法 ...

  10. Linux Compile Multiple C++ Files

    Compile Two Files: $ CC -c Main.cc Sales_item.cc # by default generates a.exe # some compilers gener ...