request对象和request对象的原理

  1.request和response对象request对象和request对象的原理时由服务器创建的,我们来使用它们

  2.request对象是来获取请求消息,response对象是来设置响应消息

requset对象继承体系结构:
ServletRequest -- 接口
    | 继承
HttpServletRequest -- 接口

request功能:

1.获取请求行数据
*GET /day14/demo1?name=zhangsan HTTP/1.1
*方法
1. 获取请求方式:GET
*String getMethod()

**2.获取虚拟目录:/day14
*String getContextPath()

3.获取Servlet资源路径:/demo1
*String getServletPath()

4.获取get方式的请求参数:name=zhangsan
*String getQueryString()

**5.获取请求URI:/day14/demo1
*String getRequestURI(); /day14/demo1
*StringBuffer getRequestURL(): http://localhost/day14/demo1

例子:
URI:统一资源标识符 共和国
URL:统一资源定位符 中华人民共和国

6.获取协议及版本:HTTP/1.1
*String getProtocol()

7.获取客户机的IP地址:
*String getRemoteAddr()

2.获取请求头数据
*方法:
***String getHeader(String name);通过请求头的名称获取请求头的值
*Enumeration<String> getHeaderNames();获取所有的请求头名称
//Enumeration 枚举的一种,想象成迭代器,可以遍历出数据
3.获取请求体数据
*请求体:只有post请求方式,才有请求体,在请求体中封装了post请求的请求参数
*步骤:
1.获取流对象
* BufferedReader getReader();获取字符输入流,只能操作字符数据
* ServletInputStream getInputStream();获取字节输入流,可以操作所有类型数据
2.再从流对象中拿数据

2:主要功能

1.获取请求参数通用方式(无论get或post请求方式都可以使用下列方法获取请求参数)
1.String getParameter(String name):根据参数名称获取参数值
username=zhangsan&pswd=123
2.String[] getParametervalues(String name):根据参数名称获取参数值的数组
hobby=study&hobby=game
3.Enumeration<String> getParameterNames():获取所有请求的参数名称
4.Map<String,String[]>getParameterMap();获取所有参数的map集合

**中文乱码问题 *

get方式:tomcat8 已结将get方式乱码问题解决了
*post方式:会乱码 request.setCharacterEncoding("utf-8");

2.请求转发(包含):一种在服务器内部的资源跳转方式(例如 servletA 需要用 servletB的资源)
作用:
1.当一个请求需要由多个servlet协作完成时,这时可以使用请求转发(包含)
2.请求转发:由后一个servlet响应数据(体),前一个servlet可以设置响应头(留头不留体)
3.请求包含:有两个servlet共同完成响应体,由前一个servlet设置响应头(留体不留头)
4.无论请求转发或包含,都是使用同一个request和response
1.步骤:
1.通过request对象获取请求转发器对象:RequestDisspatcher getRequestDisspatcher(String path)
2.使用RequestDisspatcher对象来进行转发:forward(ServletRequest request, ServletResponse response)
(RequestDisspatcher对象来进行转发:include 包含的方法)

2.特点:

1.浏览器地址栏路径没有发生变化
2.只能转发到当前服务器内部资源中
3.转发是同一次请求
请求转发:留头不留体
请求包含:留体不留头

请求转发和重定向的区别:

1.请求转发是一个请求一个响应,重定向是两次请求两次响应
2.请求转发地址栏内容不变,重定向显示最后一个请求的地址
3.请求转发只能转发到本项目中的其他servlet,重定向还可以重定向到其他项目的servlet
4.请求转发是服务器内转发,只需写出要转发的servlet路径,重定向要写出项目名

重定向 response:请求给servlet1 servlet1做不了回应给客户端,再请求servlet2,servlet2回应
response.sendRedirect("/webrequest/redirect2"); 重定向要加上项目名

request作为域时的主要功能:

共享数据:
*域对象:一个有作用范围的对象,可以在范围内共享数据
*request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据
*方法:
1.void setAttribute(String name, Object obj);存储数据
2.Object getAttribute(String name);通过键获取值
3.void removeAttribute(String name);通过键移除键值对

了解了request和response的基本用法,并且掌握了请求转发包含与重定向的知识后,就可以明白当请求到来时,servlet是如何处理的。下文将介绍数据转发到页面,呈现给用户是用怎样的方式,jsp与el表达式

javaweb入门-----request与response的作用的更多相关文章

  1. Scrapy爬虫入门Request和Response(请求和响应)

    开发环境:Python 3.6.0 版本 (当前最新)Scrapy 1.3.2 版本 (当前最新) 请求和响应 Scrapy的Request和Response对象用于爬网网站. 通常,Request对 ...

  2. JavaWeb(一)Servlet中的request与response

    一.HttpServletRequest概述 1.1.HttpServletRequest简介 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP ...

  3. javaWeb中request请求转发和response重定向

    1.访问资源 运用forward方法只能重定向到同一个Web应用程序中的一个资源. 而sendRedirect方法可以让你重定向到任何URL.  2.request.get Forward代码中的&q ...

  4. JavaWeb Request和Response

    1. Request与Response 1.1. Web应用运行机制 到目前为止,我们已经掌握了Web应用程序的运行机制,现在学习的就是Web应用程序运行机制中很重要的内容 —— Request与Re ...

  5. JavaWeb核心篇(2)——Request和Response

    JavaWeb核心篇(2)--Request和Response 上篇文章中提及到了Servlet,在Servlet中我们主要继承了HTTPServlet类,在HTTPServlet类中我们会接触到两个 ...

  6. JavaWeb 后端 <三> 之 Response Request 学习笔记

    一.响应对象 Response(重点:HTTP协议响应部分) 查看

  7. JavaWeb 后端 <三> 之 Response Request

    1. 响应对象 Response(重点:HTTP协议响应部分) 查看

  8. javaweb: request.getParameter()、request.setAttribute()与request.getAttribute()的作用 (转)

    出处:https://blog.csdn.net/qq_41937388/article/details/87972914 1.request.getParameter()方法是获取通过类似post, ...

  9. JavaWeb基础:Servlet Response

    ServletResponse简介 ServletResponse代表浏览器输出,它提供所有HttpResponse的设置接口,可以设置HttpResponse的响应状态,响应头和响应内容. 生命周期 ...

随机推荐

  1. 27 background

    先来讲讲颜色表示法 一共有三种:单词.rgb表示法.十六进制表示法 rgb:红色 绿色 蓝色 三原色 光学显示器,每个像素都是由三原色的发光原件组成的,靠明亮度不同调成不同的颜色的. 用逗号隔开,r. ...

  2. OpenStack 通过某类可用域查找相应虚拟机使用的flavor模板

    nova availability-zone-list:列出集群的所有可用域 截取部分结果: 通过可用域上的宿主机找相应的虚拟机 查看命令 通过 nova list  --all-tenant --h ...

  3. Spark学习之路(九)—— Spark SQL 之 Structured API

    一.创建DataFrame和Dataset 1.1 创建DataFrame Spark中所有功能的入口点是SparkSession,可以使用SparkSession.builder()创建.创建后应用 ...

  4. 系统学习 Java IO (八)----装饰流 FilterInputStream/FilterOutputStream

    目录:系统学习 Java IO---- 目录,概览 这两个流的作用是:"封装其它的输入流,并为它们提供额外的功能" 他们的直接子类有: BufferedInputStream 的作 ...

  5. C#—使用InstallerProjects打包桌面应用程序

    前言 打包桌面应用程序实在是一个不常使用的东西,偶尔使用起来经常会忘东忘西的耽误时间,因此,这篇文章多以图片记录过程,也是用于备忘. 下载打包工具 C#打包桌面应用程序有很多种方法,这里介绍一种使用M ...

  6. PATB 1032 挖掘机技术哪家强(20)

    #include <cstdio> #include <vector> using namespace std; const int N = 100001; vector &l ...

  7. PAT L3-016:二叉搜索树的结构(暴力)

    https://www.patest.cn/contests/gplt/L3-016 题意:中文. 思路:暴力构造,暴力查询就好了.只不过操作很多,很麻烦.比赛的时候再给我10分钟就打完了,手速太慢好 ...

  8. POJ 1651:Multiplication Puzzle(区间DP)

    http://poj.org/problem?id=1651 题意:给出n个数字,每取中间一个数,就会使得权值加上中间这个数和两边的乘积,求取剩两个数最少的权值是多少. 思路:区间dp. 一开始想了挺 ...

  9. Jenkins使用总结,2.0 新时代:从 CI 到 CD

    Jenkins近阶段使用的总结篇,只写了个引子,却一直未动手写完,今天补上. 前几篇文章提到在内网jenkins直接构建部署升级线上环境,job都是暴露在外面,很容易被误操作,需要做简单的权限控制,以 ...

  10. C程序中文标点惹的祸,你可长点儿心吧

    想必你在编程时,即使写了一个很小很简短的程序,本以为编译一定不会有问题,自信满满,结果编译完了,编译器 给了几个大大的error,比如:error C2018: unknown character'0 ...