Request 六大功能:

1.获取客户端请求信息:

  getRequestURL方法 -- 返回客户端发出请求完整URL
  getRequestURI方法 -- 返回请求行中的资源名部分
  getQueryString方法 -- 返回请求行中的参数部分
  getRemoteAddr方法 -- 返回发出请求的客户机的IP地址
  getMethod -- 得到客户机请求方式
  getContextPath -- 获得当前web应用虚拟目录名称 -- 在写路径时不要将web应用的虚拟路径的名称写死, 应该在需要写web应用的名称的地方通过getContextPath方法动态获取

  

  //将页面重定向--改写法只能是重定向到统一服务器和端口号的资源。若要要重定向到其它服务器的资源需要加上服务器地址和端口号

  response.sendRedirect(request.getContextPath()+"/index.jsp");

2.获取请求头信息(根据请求头的键获取对应的value值)
  getHeader(name)方法 --- String
  getHeaders(String name)方法 --- Enumeration<String>
  getHeaderNames方法 --- Enumeration<String>
  getIntHeader(name)方法  --- int
  getDateHeader(name)方法 --- long(日期对应毫秒)

 1 /*
 2  * 获取请求头信息
 3  */
 4 //获取一个头的value
 5 String value = request.getHeader("Accept");
 6
 7 //获取多个头信息User-Agent的值
 8 Enumeration values = request.getHeaders("User-Agent");
 9 while (values.hasMoreElements()) {
10     //取得其中的一个值
11     String val = (String) values.nextElement();
12     System.out.println("**"+val);
13 }
14 //枚举出请求头信息的所有信息。
15 Enumeration headerNames = request.getHeaderNames(); //获取到头信息的所有键名
16 while (headerNames.hasMoreElements()) {
17     String headerName = (String) headerNames.nextElement();
18     String header = request.getHeader(headerName);  //根据键名获取对应的值
19     System.out.println("-:"+headerName+":"+header);
20
21 }

3.获取请求参数:
  getParameter(String name) --- String 通过name获得值
  getParameterValues(String name)  --- String[ ] 通过name获得多值 checkbox
  getParameterMap()  --- Map<String,String[ ]> key :name value: 多值
  getParameterNames()  --- Enumeration<String> 获得所有name

/** 获取请求参数信息*/
//根据参数名获取请求参数的值(获取传入后台的值)
String username = request.getParameter("username");
String nickname = request.getParameter("nickname");
//反向解码得出username对应的二机制序列
byte[] userbytes = username.getBytes("iso8859-1");
username = new String(userbytes, "utf-8");
byte[] nickbytes = nickname.getBytes("iso8859-1");
nickname = new String(nickbytes, "utf-8");
//打印输出
System.out.println("username: "+username);
System.out.println("nickname: "+nickname);//根据前台相同的name值获取多个对应的值--返回的是一个数组不是个枚举
String[] likes = request.getParameterValues("like");
System.out.println("parameter::"+Arrays.toString(likes));//将前台传入的和表单数据,用map结构来统一获取并分别获取各个键值对的值//注意:Map的泛型结构是键为String 值为String[];为了防止相同name时可以得到多个值
Map<String,String[]> map = request.getParameterMap();
Set<Entry<String, String[]>> set = map.entrySet();
Iterator<Entry<String, String[]>> it = set.iterator();
while (it.hasNext()) {Map.Entry<String,String[]> enIt = (Map.Entry<String, String[]>) it.next();//System.out.println(enIt.getKey());System.out.println(enIt.getKey()+"=="+Arrays.toString(enIt.getValue()));}//返回表单中所有含有name属性的属性名称,包括按钮Enumeration names = request.getParameterNames();while (names.hasMoreElements()) {    String name = (String) names.nextElement();    String[] val = request.getParameterValues(name);    System.out.println(name+" : "+val[0]);  //每个name值所对应的第一个值
  System.out.println(name+" : "+Arrays.toString(val));  //每个name值所对应的每个值
}

4.请求转发:

  在服务器内部进行跳转,浏览器并没有识别。所以浏览器地址栏的值也不会改变,请求的request对象也只有一个。一次请求 一次响应

  request.getRequestDispatcher(" location... ").forward(request,response);

  **在请求转发之前, 如果response缓冲区写入了数据但是还没有打给浏览器, 在请求转发时这些数据将会被清空
      **在请求转发之前, 如果response缓冲区写入了数据并且打给了浏览器, 请求转发失败抛出异常!
      **请求转发就像方法的调用, 在转发代码之后的代码将会在转发结束后继续执行
      **不能多次转发, 但是可以多重转发

5.域对象的使用:

  一个对象具有可以被看见的范围, 利用这个对象身上的map就可以实现资源的共享, 像这样的对象就称之为域对象

  request.setAttribute( String name, Object obj ); ------修改request的 "name" 的值

  request.getAttribute( String name );-------取request对象中的name值

  request.removeAttribute(String name); ---移除

    生命周期: 一次请求开始, 到一次请求结束
            作用范围: 在整个请求链上都可以看见
            主要功能: 在转发时带数据到目的地;

----配合请求转发使用就可以实现将读取的数据存入当前的request对象中通过转发即可将修改后的request的值带到另一个servlet中----

6.请求包含:

  所谓的请求包含指的是服务器内部实现资源合并的效果
     如果浏览器请求ServletA, 在A的内部可以通过
     request.getRequestDispatcher("B的虚拟路径").include(request, response);将ServletB包含进来, 这时将由A和B共同处理该请求, B处理的结果将会并入A处理的结果, 一起响应给浏览器

  (类似于jsp页面的head、index、foot的三个部分进行整合的效果)

转载于:https://www.cnblogs.com/tongxuping/p/6891222.html

Request 部分功能相关推荐

  1. git实现审核功能_使用 Pull Request 功能进行代码审查

    如果你的团队采用了 Gitee 推荐的"Fork + Pull"协作模式,我们同时推荐通过Pull Request这个功能来进行团队中的代码审查,有如下步骤: 1.仓库管理员 设置 ...

  2. Java-Web Response响应和Request请求

    一.请求响应流程图 二.response概述 response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServletResponse.在客户 ...

  3. JavaWeb(part2)--request

    学习笔记,仅供参考,有错必纠 文章目录 request Request的功能 举个例子 获取请求参数通用方式(get,post都可用) 举个例子 中文乱码问题 请求转发 请求转发的特点 举个例子 re ...

  4. Request请求对象

    一.Request对象由服务器创建,我们使用 浏览器访问服务器资源原理: 二.Request体系结构 其中,servlet 的service()方法参数列表是 servletRequest对象, Ht ...

  5. Git协助方式:Fork项目开发新功能并使用Pull-Request把新特性推送给原项目

    Git协助方式:Fork项目开发新功能并使用Pull-Request把新特性推送给原项目 Pull Request 是开发者使用 GitHub 进行协作的利器.这个功能为用户提供了友好的页面,让提议的 ...

  6. Git - Pull Request工作流

    Pull Requests是Bitbucket上方便开发者之间协作的功能.提供了一个用户友好的Web界面,在集成提交的变更到正式项目前可以对变更进行讨论. 开发者向团队成员通知功能开发已经完成,Pul ...

  7. Java开发心得:HttpServletRequest基本功能

    1 HttpServletRequest的功能 HttpServletRequest在JavaWeb中非常重要的一个类.它是Servlet的service()方法的参数之一!所以你必须必须要掌握它! ...

  8. 前后端整合+Request(请求转发)+respon(重定向)+get+post+Filter过滤器

    一.请求Request 是指 从前端浏览器 到 后端的Servlet程序 的访问过程,叫请求的过程 可以使用Servlet提供的Request对象,来解析请求中的请求参数 1.常用方法 getPara ...

  9. 【JavaWeb】Request对象详解

    HTTP之Request:接上一篇博文HTTP协议详细. 本文目录 一.Request请求 1.Request对象和Response对象的原理 2.Request对象继承体系结构 3.Request功 ...

最新文章

  1. 机器人3D互动展品开发计划——飞拍视觉伺服
  2. session不是线程安全的
  3. android获取自定义属性,android 自定义控件中获取属性的三种方式(转)
  4. 印度市场,圆不了二线国产手机的美梦
  5. 2020年中国服装行业数据中台研究报告
  6. 左神算法:用栈来求解限制后的汉诺塔问题(Java版)
  7. java 不能使用foreach_为什么我不能在Java Enumeration上使用foreach?
  8. java设计模式 观察者模式_JAVA设计模式之观察者模式
  9. 如何从12306网站下载自己喜欢的手机铃声
  10. MATLAB求图像的均值、中值、众数、方差、协方差、相关系数
  11. ss导航java宝典_绅士宝典ss导航
  12. 浅谈敏捷思想-05.精益画布电梯演讲
  13. 北风的年终总结2021
  14. AUTOCAD——倒角命令、圆角命令
  15. 基于stm32的车辆减速灯项目——MPU6050或ADXL345
  16. 快速给图片加水印的方法
  17. [免费]织梦xml地图生成插件
  18. [经验技巧] 路由mini安装OpenWRT源的Transmission插件,实现PT下载(需SSH)
  19. ShareSDK Android SDK API
  20. Python生成信息熵决策树

热门文章

  1. B75经典门户商业版discuz模板
  2. vue amp; nuxt 博客网站
  3. 北漂鱼引导页HTML源码
  4. c#中属性自动完成快捷键
  5. 单链表的创建、插入、删除、倒置操作
  6. Take a Photo and Upload it on Mobile Phones with HTML5
  7. Shell入门教程:命令替换 $() 和 ``
  8. Shell编程:简洁的 Bash Programming 技巧续篇
  9. magento:getChildHtml() 与getChildChildHtml() 的用法,区别
  10. K均值聚类关于初始聚类中心的探讨(matlab程序)