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:请求转发的路径只能是项目内资源
      而重定向可以定位到网络上的任意资源,不单只是项目内的
      定时刷新页面也是一种特殊的重定向

时间: 2024-12-29 11:20:02

request的相关文章

HTTP 400 错误 - 请求无效 (Bad request)

在ajax请求后台数据时有时会报 HTTP 400 错误 - 请求无效 (Bad request);出现这个请求无效报错说明请求没有进入到后台服务里: 原因:1)前端提交数据的字段名称或者是字段类型和后台的实体类不一致,导致无法封装: 2)前端提交的到后台的数据应该是json字符串类型,而前端没有将对象转化为字符串类型: 解决方案: 1)对照字段名称,类型保证一致性 2)使用stringify将前端传递的对象转化为字符串    data: JSON.stringify(param)  ;

Spring Cloud ZooKeeper集成Feign的坑2,服务调用了一次后第二次调用就变成了500,错误:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.n

错误如下: 2017-09-19 15:05:24.659 INFO 9986 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.spring[email protected]56528192: startup date [Tue Sep 19 15:05:24 CST 2017]; root of context hierarchy 2017-09-19 15:05:24.858 INFO 9986 --

ASP.NET取得Request URL的各个部分

ASP.NET取得Request URL的各个部分  网址:http://localhost:1897/News/Press/Content.aspx/123?id=1#toc Request.ApplicationPath / Request.PhysicalPath D:\Projects\Solution\web\News\Press\Content.aspx System.IO.Path.GetDirectoryName(Request.PhysicalPath) D:\Projects

Webform 内置对象 Response对象、Request对象,QueryString

Request对象:获取请求Request["key"]来获取传递过来的值 QueryString:地址栏数据传递 ?key=value&key=value注意事项:不需要保密的东西可以传不要传过长东西,因为长度有限,过长会造成数据丢失 Response对象:响应请求Response.Write("<script>alert('添加成功!')</script>");Response.Redirect("Default.asp

译-BMC Remedy Action Request System权限控制概述

原文链接:Access control overview 说明: BMC Remedy Action Request System是BMC ITSM产品平台,简称AR 或者Remedy,可实现基于ITIL标准的整个IT管理流程的实施定制.该平台可实现多种权限级别的管理,包括人员.组.角色,以及表.字段.行级别等.本文可以用作其他对权限要求比较精细的系统参考. 为了便于理解,部分名词翻译如下: Server:服务器Form (or table):表单Field (or column):字段Acti

request.setAttribute(&quot;username&quot;, username);//一定要保存,OGNL才能获取${username}

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); String username= request.getParameter("username"); request.setAttribute("use

AWS CloudFront CDN直接全站加速折腾记The request could not be satisfied. Bad request

ERROR The request could not be satisfied. Bad request. Generated by cloudfront (CloudFront) Request ID: JC3i8piJpjRbuP81MNhSKPxt5KWirIInynZgwFJ9EYKuysjS5A_AnQ== 上面这个问题害我着急的很啊.在这里谢谢远在东京的小伙伴在百忙之中帮我分析解决这个问题. 使用AWS也有段时间了,基本常用的服务都用了,还有很多服务没用上,正在慢慢摸索中..说实话

web初学之request,session与application

request (1)request的setAttribute()与getAttribute()方法一般都是成对出现,首先通过setAttribute()方法设置属性与属性值,然后通过getAttribute()方法根据属性获取到与该属性对应的对象值.setAttribute()与getAttribute()方法都是在服务器端内部执行,客户端并不清楚.(注意:getAttribute()之后需要进行向下类型转换,将属性值转换为真正的对象) (2)request的getParameter()方法是

Request和Response详解

转自:http://zhidao.baidu.com/link?url=8BI0cjlcFdBSJKHTZlpo874eqtbTJoZfrh3miQgM_05RvSER8skPiBc1wSPZtXT8OGGCHfVXFAzAosa6E5HBl_ 内置对象request:请求对象request.getParameter("名字") 获得客户端输入的信息***************request.getParameterValues("名字") 获得客户端输入的一组信

The JSON request was too large to be deserialized

The JSON request was too large to be deserialized 这个问题出现的场景并不是很多,当你向服务端异步(ajax)post数据非常大的情况下(比如做权限管理的时候给某个角色分配权限那么就可能会出现,我所遇到的就是该角色大概200个模块每个模块平均2个功能----那么发送到服务端action的将是一个有着400个对象的数组) 之前我们向服务端异步post数组可能需要使用 1 $.ajax({ 2 type: 'POST', 3 url: '/system