zoukankan      html  css  js  c++  java
  • request

    request:
      处理客户端的请求协议

      获取请求行的相关信息:
        getMethod(); //方法
        getRequestURI(); //URI路径
        getContextPath(); //项目
        getScheme(); //协议约束
        getRequestURL(); //URL路径

      获取请求头的相关信息:(请求头是键值对形式,所以遍历迭代器)
        Enumeration<String> names = request.getHeaderNames() //返回请求头的所有键的信息
        while(names.hasMoreElements()){
          String name = names.nextElement();
          String value = request.getHeader(name);
          System.out.println(name + " == " + value);
        }

      获取请求体的相关信息:(直接通过提交时的name键得到值)
        getParameter(name) //根据键获取值(多个值得到第一个)
        getParameterValues(name) //根据键获取值组织成的数组
        getParameterMap() //返回键值组织成Map集合,值是一个数组的形式

    BeanUtils:(面向对象的思想:将提交的数据封装为一个javaBean对象,BeanUtils自动封装JavaBean)
      BeanUtils.populate(JavaBean对象,Map集合)
        注意:
          1:BeanUtils会自动进行数据类型转化
            但是只能进行简单的数据类型转换 int double boolean String
          2:Map的键和JavaBean的字段名以及对应的setXxx方法名必须保持一致
          3:如果字段名不一致,不会正常赋值
      BeanUtils自定义转换器:
        1.创建一个时间转换器
         DateConverter dc = new DateConverter();
        2.声明当前时间转换器可以转换的字符串的格式
         dc.setPattern("yyyy-MM-dd");
        3.在BeanUtils中注册时间转换器
         ConvertUtils.register(dc, Date.class);
        /*作用,直接将一个1990-10-01格式的字符串转换成一个java.util.Date对象*/

    使用请求转发:(解耦合)
        request.getRequestDispatcher("/servlet的路径").forward(ruquest,response);
      携带数据:
        request.setAttribute("键","值");
        这时不能用servletContext存储数据,因为并发访问时可能会出问题
      新页面获取值:
        request.getAttribute("键");
      在请求转发的时候因为用的是同一个response对象,所以一定要在开流之前定义响应的编码集
        response.setContentType("text/html;charset=utf-8");
      数据输出理论上只能由最后一个Servlet发出,不然会被覆盖

    重新定向:
      A:调用response.sendRedirect("带/项目名称的URL");
      B:A的数据设置进响应头,被浏览器解析,浏览器访问该URL
        相当于:response.setStatus(302); //设置状态码告诉客户端需要重定向
            response.setHeader("Location","/day36demo/路径")

      请求转发与重定向区别
        A:本质区别:发生跳转这个动作产生的场合不同
           请求转发在服务器端发生跳转,而重定向发生在浏览器
        B:请求转发只有一次请求,只有一次响应
          重定向重定向一次,请求两次,响应了两次
        C:重定向地址栏会发生改变
          请求转发不会
          原因:最后访问的资源的URL当前浏览器是否可以获得
        D:路径项目名:
            重定向必须有
            请求转发没有
        E:请求转发的路径只能是项目内资源
          而重定向可以定位到网络上的任意资源,不单只是项目内的
          定时刷新页面也是一种特殊的重定向

  • 相关阅读:
    mass Framework event模块 v9
    关于开源的网络爬虫/网络蜘蛛larbin结构分析
    socketaddr和socketaddr_in的区别于联系
    C语言中.h和.c文件解析
    [原]变参函数原理详解
    fopen和open有什么区别?
    C语言的那些小秘密之变参函数的实现
    c语言中逗号运算符和逗号表达式
    关于REST API设计的一些小经验
    Linux信号说明列表
  • 原文地址:https://www.cnblogs.com/chonglchong/p/6847662.html
Copyright © 2011-2022 走看看