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(日期对应毫秒)

 /*
* 获取请求头信息
*/
//获取一个头的value
String value = request.getHeader("Accept"); //获取多个头信息User-Agent的值
Enumeration values = request.getHeaders("User-Agent");
while (values.hasMoreElements()) {
//取得其中的一个值
String val = (String) values.nextElement();
System.out.println("**"+val);
}
//枚举出请求头信息的所有信息。
Enumeration headerNames = request.getHeaderNames(); //获取到头信息的所有键名
while (headerNames.hasMoreElements()) {
String headerName = (String) headerNames.nextElement();
String header = request.getHeader(headerName); //根据键名获取对应的值
System.out.println("-:"+headerName+":"+header); }

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的三个部分进行整合的效果)

Request 部分功能的更多相关文章

  1. NodeJS系列~第一个小例子,实现了request.querystring功能

    返回目录 百度百科上: Node.js是一套用来编写高性能网络服务器的JavaScript工具包,一系列的变化由此开始,在Node中,Http是首要的.Node为创建http服务器作了优化,所以在网上 ...

  2. Git工作流指南:Pull Request工作流

    参考地址:http://blog.jobbole.com/76854/ Pull Requests是Bitbucket上方便开发者之间协作的功能.提供了一个用户友好的Web界面,在集成提交的变更到正式 ...

  3. [AX 2012] Woker user request

    在HR模块和System administrator模块下都能找到Woker user request这个功能,它的作用是为员工创建一个AX账号.比如我们创建一个这样的user request: 注意 ...

  4. response和request

    请求响应流程图 response response是用来向客户端响应的对象! 需要回忆一下http响应内容: l  首行:状态码 l  响应头: 1头1值,1头多值: l  响应体(正文):html ...

  5. response与request回顾学习

    一.response response是servlet.service方法的一个参数,它的类型是javax.servlet.http.HttpServletResponse,在客户端每发出一个请求时, ...

  6. 为SRS流媒体服务器添加HLS加密功能(附源码)

    为SRS流媒体服务器添加HLS加密功能(附源码) 之前测试使用过nginx的HLS加密功能,会使用到一个叫做nginx-rtmp-module的插件,但此插件很久不更新了,网上搜索到一个中国制造的叫做 ...

  7. 创建 Pull Request

    Pull Request 是开发者使用 GitHub 进行协作的利器.这个功能为用户提供了友好的页面,让提议的更改在并入官方项目之前,可以得到充分的讨论. 最简单地来说,Pull Request 是一 ...

  8. Git - Pull Request工作流

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

  9. 超全面的JavaWeb笔记day10<Response&Request&路径&编码>

    1.Response 2.Request 3.路径 4.编码 请求响应流程图 response 1.response概述 response是Servlet.service方法的一个参数,类型为java ...

随机推荐

  1. [剑指Offer] 28.数组中出现次数超过一半的数字

    [思路]将每个数字都存入map中作为key值,将它们出现的次数作为value值,当value超过一半时则返回其key值. class Solution { public: int MoreThanHa ...

  2. DELPHI控件属性事件说明

    常用DELPHI控件属性事件设置说明 常用DELPHI控件属性设置说明目录TForm Class TPanel组件 TToolBar Class TToolButton Class TTimer Cl ...

  3. SpringBoot 入门学习(HelloWord)

    前置知识 1.会利用 maven 构建项目 2.了解 Spring 注解 3.了解 RESTful API 的基本理论 4.SpringBoot 是 SpringMVC 的升级版,但两者没有必然的联系 ...

  4. [洛谷P3919]【模板】可持久化数组

    题目大意:有两个操作,1:在第x次操作后的版本上修改一个值,2:查询在第x次操作后的版本上的一个节点的值 即: 你需要维护这样的一个长度为N的数组,支持如下几种操作 1.在某个历史版本上修改某一个位置 ...

  5. git使用笔记(一)入门

    By francis_hao    Nov 17,2016 本来是想把git的使用笔记写在一个文件里,但是越写越长,最后也不得不分开了.这样也好,每一篇一个侧重,可以写的详细一点.   初学乍练 在l ...

  6. 停止ambari上服务的顺序

    Before performing any upgrades or uninstalling software, stop all of the Hadoop services in the foll ...

  7. docker compose,link,Odoo

    1.报错: /usr/bin/docker-current: Error response from daemon: driver failed programming external connec ...

  8. IDEA 用maven创建web项目编译时不能发布resources中的文件

    1.在pom.xml加入 <build> <resources> <resource> <directory>${basedir}/src/main/j ...

  9. eclipse console输出有长度限制

    抓取一个网页内容,然后打印到控制台,发现内容首部都没有了. String content = getResponseText("http://xxx.html"); System. ...

  10. matlab求最大公约数和最小公倍数

    最大公约数:(函数) function n = zuidagongyueshu(a,b) if(a>b) tem = a; b = a; a = tmp; end for i=1:a c = r ...