回顾上一章的知识:
请求网络资源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. codeforce864d

    D. Make a Permutation! time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  2. floyd算法之最小环问题

    最小环问题:都比较容易得到从u 到 v 经过中间某一些结点的最短路,但是我们得确保回来的时候,不能经过那些结点,这样我们就需要改一下floyd算法了 进而我们想到用Floyd算法.我们知道,Floyd ...

  3. Opencv打开摄像头,读不到图像,一般来说先读取第一帧,舍弃,然后就正常了

    舍弃第一帧的程序: cap >> img; cv::waitKey(100);  if (cvWaitKey(5) == 27) break; cap >> img;

  4. 数据库中表的位置,在sysdatabases中

    name dbid sid mode status status2 crdate reserved category cmptlevel filename version master :: :: C ...

  5. Android-Kotlin简单计算器功能

    上一篇博客 Android-Kotlin-配置/入门 配置好了 AndroidStudio Kotlin 的环境: 选择包名,然后右键: 选择Class类型,会有class: 创建CounterCla ...

  6. Spring Boot 2 启动时加载properties文件

    每个项目从开发到测试再到上线所需要的各种环境是不同的,这就需要维护相应的配置文件,比如properties或yml文件.有了配置文件后就要考虑如何与应用进行集成. 对于云环境来讲,项目发布需要打成镜像 ...

  7. MVVM Light 新手入门(1):准备阶段

    1.新建WPF空白项目. 2.NuGet 程序包中安装 3.根据MVVM分层结构,建立包含Model.View.ViewModel三层文件夹 如图: 1.View负责前端展示,与ViewModel进行 ...

  8. C# WPF 用MediaElement控件实现视频循环播放

    在WPF里用MediaElement控件,实现一个循环播放单一视频的程序,同时可以控制视频的播放.暂停.停止. 一种方式,使用MediaElement.MediaEnded事件,在视频播放结束后,自动 ...

  9. DOM LEVEL 1 中的那些事儿[总结篇-下]

    本文承接:DOM LEVEL 1 中的那些事儿[上]   2.3 Element类型 Element类型应该是Document类型之外使用的最多的节点类型了,Element代表XML或HTML文档中的 ...

  10. MariaDB 使用正则匹配查询(7)

    MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可MariaDB的目的是完全兼容MySQL,包括API和命令行,MySQL由于现在闭源了,而能轻松成为MySQ ...