通过前面的学习我们能够创建并运行一个简单的Servlet
程序,完成浏览器和服务器的简单交互,但是我们编写的
Servlet 代码是没有对浏览器的请求进行处理的。现在我们开始学习
如何使用 Servlet 进行浏览器请求的处理。

Request 对象:

问题:
浏览器发起请求到服务器,会遵循HTTP协议将请求数据发送给服务器。
那么服务器接受到请求的数据改怎么存储呢?不但要存,而且要保证完成性。
解决:
使用对象进行存储,服务器每接受一个请求,就创建一个对象专门的存
储此次请求的请求数据。
实现:
request 对象
解释:
服务器接收到浏览器的请求后,会创建一个 Request 对象,对象中
存储了此次请求相关的请求数据。服务器在调用 Servlet 时会将创建的
Request 对象作为实参传递给 Servlet 的方法,比如:service 方法。
使用:
获取请求头数据
获取请求行数据
获取用户数据
Response 对象:
问题:
在使用 Request 对象获取了请求数据并进行处理后,处理的结果如何显
示到浏览器中呢?
解决:
使用 Response 对象
解释:
服务器在调用指定的 Servlet 进行请求处理的时候,会给 Servlet 的方
法传递两个实参 request 和 response。其中 request 中封存了请求相关的
请求数据,而 response 则是用来进行响应的一个对象。
使用:
设置响应头
设置响应编码格式
设置响应实体

请求乱码问题解决:

使用 String 进行重新编码:
uname=new String(uname.getBytes(“iso8859-1”),“utf-8”);
Get 方式请求:
在 service 方法中使用: req.setCharacterEncoding(“utf-8”);
在 tomcat 服务器目录下的 conf 文件下找到 server.xml 文件,打开进
行如下配置:

Post 方式请求:
在 service 方法中使用: req.setCharacterEncoding(“utf-8”);

流程总结:

Servlet 的使用流程:
设置请求编码格式
设置响应编码格式
获取请求信息
处理请求信息
响应处理结果
数据流转流程:
浏览器------>服务器------->数据库
浏览器<------服务器<-------数据库

请求转发:

问题:
服务器在接收到浏览器的请求后,仅仅使用一个Servlet 进行请求处理,会造成不同的 Servlet 逻辑代码冗余,Servlet 的职责不明确。
解决:
使用请求转发。
特点:
一次请求
地址栏信息不改变。

Request 对象作用域

问题:使用请求转发后,不同的 Servlet 之间怎么进行数据的共享
呢?或者说数据怎么从一个 servlet 流转给另外一个 Servlet 呢?
解决:使用 request 对象的作用域
使用:
request.setAttribute(object name,Object value);
request.getAttribute(Object obj)
作用:解决了一次请求内的不同 Servlet 的数据(请求数据+其他数
据)共享问题。
作用域:基于请求转发,一次请求中的所有 Servlet 共享。
注意:
使用 Request 对象进行数据流转,数据只在一次请求内有效。
特点:
服务器创建
每次请求都会创建
生命周期一次请求

重定向

问题:
如果当前的请求,Servlet 无法进行处理怎么办?
如果使用请求转发,造成表单数据重复提交怎么办?
解决:
使用重定向
使用:
response.sendRedirect(“路径”). 本地路径为:uri
网络路径为:定向资源的 URL 信息
特点:
两次请求
浏览器地址栏信息改变
避免表单重复提交

Request 对象、重定向、请求转发相关推荐

  1. Request对象实现请求转发

    一.请求转发 指一个web资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理. 在Servlet中实现请求转发的两种方式: 通过ServletContext的getRequestDisp ...

  2. 重定向 请求转发 与cookie

    什么是cookie cookie可以说是一种缓存,cookie不是jsp内置对象,所以我们在使用的时候需要创建它,而cookie是由服务器创建,然后发送给客户端. 服务器端创建cookie Cooki ...

  3. request域对象和请求转发

    request的其他功能 request是一个域对象 request对象也是一个存储数据的区域对象,所以也具有如下方法: setAttribute(String name, Object o) get ...

  4. Flask框架(flask中的request对象,获取请求参数,保存上传的文件)

    1.request中包含了前端发送过来的所有数据 ,请求的 request 对象中保存了一次HTTP请求的一切信息. 通过request.from可以直接发送提取请求体中的表单格式数据,是一个类字典的 ...

  5. 【Servlet】request对象获取请求头数据和用户数据

    request对象学习 /*** request对象学习:* 作用:request对象中封存了当前请求的所有请求信息* 使用:* 获取请求头数据* req.getMethod();//获取请求方式* ...

  6. Servlet学习笔记(四)之请求转发与重定向(RequestDispatcher与sendRedirect)

    ServletContext可以实现请求转发(ServletContext请求转发相关内容见之前博客:http://blog.csdn.net/megustas_jjc/article/details ...

  7. Request对象接收Form表单提交

    转自:http://www.cnblogs.com/xdp-gacl/p/3798347.html Form表单: <title>HTML的form表单</title> < ...

  8. Request请求转发和重定向

    Request请求转发和重定向 一,Request请求转发 (一),请求转发:在服务器内部的资源跳转的方式 我们在实际开发中,需要写不同的servlet,每个人servlet完成不同的功能,当我们访问 ...

  9. eclipse在网页进入时显示重定向过多_使用eclipse快速开发jsp以及编码问题、jsp页面元素、request对象学习的粗略记录...

    人老了真是什么都会忘记啊orz,早上发现学过去的东西好多都还没记录复盘... ...(懒虫作祟) 在开始之前,俺认为还是很有必要了解一下jsp的执行流程,俺发现CSDN上的"陈小哥cw&qu ...

  10. Request和Response-学习笔记02【请求转发和request共享数据、Request_获取ServletContext、request登录案例】

    Java后端 学习路线 笔记汇总表[黑马程序员] Request和Response-学习笔记01[Request_原理和继承体系.Request_获取请求数据][day01] Request和Resp ...

最新文章

  1. limit是mysql的语法
  2. C#中父子窗口之间实现控件互操作
  3. 计算机函数公式中怎么合并合并,Excel用函数和公式瞬间实现把表格全部合并到一个表中去...
  4. KMP算法中NEXT数组的作用以及代码实现
  5. 我的常用软件大公开!
  6. 构建完整的微服务(三)
  7. HDU-5876 Sparse Graph
  8. Discuz 群组 新加入 活跃成员 成员列表 会员数量问题!
  9. ubuntu11.04下安装TCL及TK
  10. SharePoint 2007和WSS 3.0 SDK 1.2 Release
  11. 【C++】 53_被遗弃的多重继承 (上)
  12. java传智播客答案_传智播客_java基础入门习题答案.docx
  13. 链接脚本在编程中的高级运用之一:可变长数组
  14. IOS10 权限问题
  15. 云生态瞭望 | 腾讯云生态暖伙伴心
  16. GSMA公布2018世界移动大会-上海的最新进展
  17. 28335之GPIO输出
  18. 鼓励参与期货市场套期保值
  19. 《福特自传》读书笔记
  20. 利用poi将Html中table转为Excel

热门文章

  1. nodeJs利用mongoose模块操作数据
  2. DelayQueue实现Java延时任务
  3. Jmeter操作之跨线程组传递参数
  4. tp5 的查询构造器
  5. Qt之QParallelAnimationGroup
  6. Sublime Text 2 快捷键用法大全
  7. C#网络版斗地主——出牌权限的传递
  8. AngularJS学习(二)
  9. 矩阵特征值的物理意义
  10. LeetCode--20. 有效的括号(栈,删除法)