Request常用方法

  1. 获取请求方式:req.getMethod()
  2. 获取虚拟目录:req.getContextPath()
  3. 获取servlet路径:req.getServletPath()
  4. 获取get请求参数:req.getQueryString()
  5. 获取请求的URI:req.getRequestURI()简化的/StringBuffer request = req.getRequestURL();完整的
  6. 获取协议及版本号:req.getProtocol()
  7. 获取客户机的IP:req.getRemoteAddr()
  8. 获取请求头:req.getHeader("Accept")

获取请求头数据

  1. String getHeader(String name):通过请求头的名称获取请求头的值
  2. Enumeration<String> getHeaderNames():获取所有请求头名称
        Enumeration<String> all = req.getHeaderNames();
        while (all.hasMoreElements())
        {
            String name = all.nextElement();
            String value = req.getHeader(name);
            System.out.println(name+"-----"+value);
        }

Request获取请求体数据:只有POST才有请求体数据

  1. 获取流对象:BufferedReader reader = request.getReader();
  2. 从流中读取数据:如下
        BufferedReader reader = request.getReader();
        String line = null;
        while ((line = reader.readLine()) != null)
        {
            System.out.println(line);
        }

其他功能

  1. 获取请求参数通用方式

    • String getParameter(String name):根据参数名称获取参数值
    • String[] getParameterValues(String name):根据参数名称获取参数值数组
    • Enumeration<String> getParameterNames():获取所有请求的参数集合
    • Map<String,String[]> getParameterMap():获取所有参数的Map集合
    • 中文乱码问题:
      • get方式:不会乱码
      • post方式:会乱码
        • 在获取参数前设置request编码request.setCharacterEncoding("utf-8")
  2. 请求转发:服务器内部的资源跳转方式

    • 步骤:
      1. 通过request对象获取请求转发器对象:RequestDispatcher getRequesDispatcher(String path)
      2. 使用RequestDispatcher对象进行转发:forward(ServletRequest request,ServletResponse response)
    • 特点:
      1. 浏览器地址栏没有发生改变
      2. 只能访问当前服务器内部资源中
      3. 转发是一次请求
  3. 共享数据:

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

  5. 使用Beanutils封装对象:简化数据封装

    • commons-beanutils-1.9.4.jar
         //2.获取所有请求参数
         Map<String,String[]> map = request.getParameterMap();
         //3.创建user对象
         User login = new User();
         //3.1使用beanutils进行封装
         try {
             BeanUtils.populate(login,map);
         } catch (IllegalAccessException e) {
             e.printStackTrace();
         } catch (InvocationTargetException e) {
             e.printStackTrace();
         }

HTTP状态码

  • 1xx:浏览器接收客户端请求,但是接收不完整
  • 2xx:成功,代表:200
  • 3xx:重定向,304访问缓存
  • 4xx:客户端错误,404(请求路径没有对应的资源)
  • 5xx:服务器错误,500(服务器内部错误)
Last modification:August 17th, 2020 at 03:59 pm
如果觉得我的文章对你有用,请随意赞赏