Web服务器收到客户端的http请求,会针对每一次请求,
分别创建一个用于代表请求的request对象、和代表响应的response对象。

下面这两个对象的基本理解:

一、HttpServletRequest

  1、请求行
      Get http://localhost:8080/day09/servlet/req1?username=zs http/1.1
        getMethod(); 获得请求方式
        * getRequestURL(); 返回客户端发出请求时的完整URL。
        * getRequestURI(); 返回请求行中的资源名部分。
        **getContextPath(); 当前应用的虚拟目录 /day09_01_request
        getQueryString() ; 返回请求行中的参数部分。

  2、请求消息头
      * String getHeader(String name) 根据头名称得到头信息值
         Enumeration getHeaderNames() 得到所有头信息name
         Enumeration getHeaders(String name) 根据头名称得到相同名称头信息值

  3、请求正文(重要)

    与获取表单数据相关的方法:
      *** getParameter(name) 根据表单中name属性的名,获取value属性的值方法
      *** getParameterValues(String name)专业为复选框取取提供的方法
         getParameterNames() 得到表单提交的所有name的方法
      *** getParameterMap 得到表单提交的所有值的方法 //做框架用,非常实用
         getInputStream 以字节流的方式得到所有表单数据

    与操作非表单数据相关的方法(request也是一个域对象,即内部管理一个Set集合):
      *** void setAttribute(String name, Object value); 向request的Set集合中存入一个键值对
      *** Object getAttribute(String name); 从request集合中取出一个键值对
         Void removeAttribute(String name); 从request集合中移除一个键值对

    与请求转发相关的方法:
         RequestDispatcher getRequestDispatcher(String path) //得到请求转发或请求包含的协助对象
      *** forward(ServletRequest request, ServletResponse response) //转发的方法
         include(ServletRequest request, ServletResponse response) //请求包含

    与请求编码相关的方法:
      (1)解决post方式编码:
        *****request.setCharacterEncoding("UTF-8"); //告诉服务器客户端是什么编码,只能处理post请求方式
        (2)解决get方式编码:
        String name = new String(name.getBytes(“iso-8859-1”),"UTF-8");

二、HttpServletResponse
  1、响应行 HTTP/1.1 200 OK
     setStatus(int sc) 设置响应状态码
  2、响应头
    ***** sendRedirect(String location) 请求重定向(是两行代码的结合)

              (response.setStatus(302);//告诉客户端要重新定向新的资源

               response.setHeader("location", "URL地址");//告诉浏览器要去访问哪个URL

           setHeader(String name, String value) 设置响应头信息

        response.setHeader("content-type", "text/html;charset=UTF-8");
          告知浏览器使用什么码表

    //告知客户端不缓存
        response.setHeader("pragma", "no-cache");
        response.setHeader("cache-control", "no-cache");
        response.setDateHeader("expires", 0);

    Referesh刷新

        response.setIntHeader("refresh", 1);

  3、响应正文(主体)
    *** getWrite(); 字符输出流
       getOutputStream(); 字节输出流
       setCharacterEncoding(String charset) 告知服务器使用什么编码
    ***** setContentType(String type) 告之服务器和客户端使用什么编码

  4, 设置服务器和浏览器 的编码方式

      

//设置浏览器和服务器的编码方式(两种方法)
    response.setHeader("content-type", "text/html;charset=UTF-8");
    response.setCharacterEncoding("UTF-8");
    //response.setContentType("text/html;charset=UTF-8");

Serlect的笔记二(request 、 ersponse)的更多相关文章

  1. webpy使用笔记(二) session/sessionid的使用

    webpy使用笔记(二) session的使用 webpy使用系列之session的使用,虽然工作中使用的是django,但是自己并不喜欢那种大而全的东西~什么都给你准备好了,自己好像一个机器人一样赶 ...

  2. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  3. Learning ROS for Robotics Programming Second Edition学习笔记(二) indigo tools

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  4. Django开发笔记二

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.xadmin添加主题.修改标题页脚和收起左侧菜单 # ...

  5. amazeui学习笔记二(进阶开发2)--Web组件简介Web Component

    amazeui学习笔记二(进阶开发2)--Web组件简介Web Component 一.总结 1.amaze ui:amaze ui是一个web 组件, 由模板(hbs).样式(LESS).交互(JS ...

  6. 运维开发笔记整理-Request对象与Response对象

    运维开发笔记整理-Request对象与HttpResponse对象 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.request对象 1>.什么是request 首先,我 ...

  7. 《CMake实践》笔记二:INSTALL/CMAKE_INSTALL_PREFIX

    <CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX &l ...

  8. jQuery源码笔记(二):定义了一些变量和函数 jQuery = function(){}

    笔记(二)也分为三部分: 一. 介绍: 注释说明:v2.0.3版本.Sizzle选择器.MIT软件许可注释中的#的信息索引.查询地址(英文版)匿名函数自执行:window参数及undefined参数意 ...

  9. Mastering Web Application Development with AngularJS 读书笔记(二)

    第一章笔记 (二) 一.scopes的层级和事件系统(the eventing system) 在层级中管理的scopes可以被用做事件总线.AngularJS 允许我们去传播已经命名的事件用一种有效 ...

随机推荐

  1. 搞了一下午时间全浪费在这了,其实是自己拷贝了patch文件,导致tab变成了空格的错

    很老实的基于最新的kernel,源文件,修改了代码.通过diff -uNr --show-c-function dir1 dir2 > ipv6.patch制作了patch文件,准备代码上库构建 ...

  2. javascript中 json数据的解析与序列化

    首先明确一下概念: json格式数据本质上就是字符串: js对象:JavaScript 中的几乎所有事务都是对象:字符串.数字.数组.日期.函数,等等. json数据的解析: 就是把后端传来的json ...

  3. css多列居中

    https://jingyan.baidu.com/article/36d6ed1f67d58f1bcf488393.html

  4. LODOP中预览界面查看打印机的可打区域具体值

    LODOP在打印预览的时候,如果选择的打印机是真实打印机,会发现可能会有虚线,不同打印机虚线的位置不同,这个虚线是打印机的可打区域,Lodop无法控制. 可打区域,顾名思义,就是打印机可以打印的区域, ...

  5. Pulse-per-second (PPS) Signal Interfacing

    Some radio clocks and related timekeeping gear have a pulse-per-second (PPS) signal that can be used ...

  6. 转载:实现MATLAB2016a和M文件关联

    转载自http://blog.csdn.net/qq_22186119 新安装MATLAB2016a之后,发现MATLAB没有和m文件关联 每次打开m文件后都会重新打开一次MATLAB主程序 后来发现 ...

  7. mpi4python

    转载:https://zhuanlan.zhihu.com/p/25332041 前言 在高性能计算的项目中我们通常都会使用效率更高的编译型的语言例如C.C++.Fortran等,但是由于Python ...

  8. Codevs1541[USACO]围墙涂色

    离散加差分有点涨姿势啊 对我这种菜鸡而言还是第一次看到啊qwq 题面 大意 :n次,每次覆盖一个区间,求覆盖过m次的节点个数 sol:大概是差分的思想加上离散,就可以解决普通差分无法解决的问题了,比如 ...

  9. 洛谷 P1160 队列安排

    题目描述 一个学校里老师要将班上 NNN 个同学排成一列,同学被编号为 $1-N$ ,他采取如下的方法: 先将 111 号同学安排进队列,这时队列中只有他一个人: 2−N2-N2−N 号同学依次入列, ...

  10. 本科理工男如何学习Linux

    我是一个本科学电子的理工男,但是一直对计算机感兴趣,所以平时自己在课下喜欢学一些与计算机有关的东西.由于对计算机感兴趣,所以后来我参加了学校的计算机社团,在那里接受一些培训和指导.当时在社团里看到师兄 ...