1. Spring MVC 允许一下方式将客户端的数据传送到控制器的处理方法中
    1. 查询参数(Query Parameter)
    2. 表单参数(Form  Parameter)
    3. 路径变量(Path  Variable)
  2. 处理查询参数
    1. 不包含默认值
      1. @Controller
        @RequestMapping(value="/FirstControl")
        public class HelloControl {
        @RequestMapping("requestParam")
        public String viewRequestParam(@RequestParam("id") String id,@RequestParam("name") String name,Model model){
        DeptUserDomain dud=new DeptUserDomain();
        dud.setId(id);
        dud.setName(name);
        model.addAttribute("dud",dud);
        return "requestParam";
        }
        }
        <body>
        viewPersonInfo<br>
        ${dud.id}<br>
        ${dud.name}<br>
        ${dud.salary}
        </body>
        浏览器请求URL
        http://localhost:8085/testSpringMVC/FirstControl/requestParam?id=11&name=zs
    2. 包含默认值
      1. @Controller
        @RequestMapping(value = "/FirstControl")
        public class HelloControl {
        @RequestMapping("requestParam2")
        public String viewRequestParam2(@RequestParam(value="id",defaultValue="id2") String id ,@RequestParam(value="name",defaultValue="ls")String name,Model model){
        DeptUserDomain dud = new DeptUserDomain();
        dud.setId(id);
        dud.setName(name);
        model.addAttribute("dud", dud);
        return "requestParam";
        }
        }
        <body>
        viewPersonInfo<br>
        ${dud.id}<br>
        ${dud.name}<br>
        ${dud.salary}
        </body>
        浏览器请求 URL
        
        http://localhost:8085/testSpringMVC/FirstControl/requestParam2
  3. 处理路径变量
    1. 从面向资源的角度,通过URL路径标识  优于 查询参数 的方式;例如 /domain/123   优于  /domain?id=123  ,后则描述的是一个带有参数的一个操作,本质上是通过HTTP发起的RPC
    2. PathVariable参数出现了3次
      @Controller
      @RequestMapping(value = "/FirstControl")
      public class HelloControl {
      @RequestMapping(value="/{id}")
      public String viewPathParam(@PathVariable("id")String id,Model model){
      DeptUserDomain dud = new DeptUserDomain();
      dud.setId(id);
      model.addAttribute("dud", dud);
      return "pathVariable";
      }
      }
      <body>
      viewPersonInfo<br>
      ${dud.id}<br>
      ${dud.name}<br>
      ${dud.salary}
      </body>
       浏览器请求路径
      http://localhost:8085/testSpringMVC/FirstControl/113
  4. 处理表单参数
    1. 一个表单,需要三个RequestMapping:原始输入表单(GET)、提交处理(POST)、结果重定向(Redirect)
    2. 在处理POST类型的请求时,请求处理完后,最好进行一下重定向,这样浏览器的刷新就不会重新提交表单了
    3. post提交对应的控制器方法,可接收POJO类型参数,POJO参数的属性将会使用请求Form中同名的参数进行填充
    4. InternalResourceViewResolver 可以识别前缀格式:  redirect:xxx       forward:xxx
    5. 校验表单:使用Java校验API(JSR,java Validation API)。包含在 javax.validation.constraints 包中
      1. 表单校验需要两步:
        1. 第一步:在POJO类上加上校验注解
        2. 第二步:在控制器方法参数上,添加@Valid,启用校验
      2. 在POJO上添加校验注解,并不能阻止表单提交,,校验失败信息存储在控制方法Errors参数上
      3. @Valid是定义在JSR-303标准中的,我这里使用的是Hibernate Validation对它的实现。这里我们必须使用@Valid标注我们需要校验的参数user,否则Spring不会对它进行校验。另外我们的处理器方法必须给定包含Errors的参数,这可以是Errors本身,也可以是它的子类BindingResult,使用了Errors参数就是告诉Spring关于表单对象数据校验的错误将由我们自己来处理,否则Spring会直接抛出异常,而且这个参数是必须紧挨着@Valid参数的,即必须紧挨着需要校验的参数,这就意味着我们有多少个@Valid参数就需要有多少个对应的Errors参数,它们是一一对应的
      4. 校验注解
        1. 限制

          说明

          @Null

          限制只能为null

          @NotNull

          限制必须不为null

          @AssertFalse

          限制必须为false

          @AssertTrue

          限制必须为true

          @DecimalMax(value)

          限制必须为一个不大于指定值的数字

          @DecimalMin(value)

          限制必须为一个不小于指定值的数字

          @Digits(integer,fraction)

          限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction

          @Future

          限制必须是一个将来的日期

          @Max(value)

          限制必须为一个不大于指定值的数字

          @Min(value)

          限制必须为一个不小于指定值的数字

          @Past

          限制必须是一个过去的日期

          @Pattern(value)

          限制必须符合指定的正则表达式

          @Size(max,min)

          限制字符长度必须在min到max之间

    6. @Controller
      @RequestMapping(value = "/FirstControl")
      public class HelloControl {
      @RequestMapping(value="/registerDeptUser",method=RequestMethod.GET)
      public String register(){ return "registerDeptUser";
      }
      @RequestMapping(value="/registerDeptUser",method=RequestMethod.POST)
      public String register(DeptUserDomain dud){
      System.out.println("id:"+dud.getId());
      System.out.println("name:"+dud.getName());
      return "redirect:default";
      }
      @RequestMapping("/default")
      public String mydefault() {
      System.out.println("my first controller!!!");
      return "default";
      }
      }
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
      <title>Insert title here</title>
      </head>
      <body>
      <form method="post">
      id:<input type="text" name="id" /><br /> name:<input type="text"
      name="name" /><br /> <input type="submit" value="submit" />
      </form>
      </body>
      </html>
      信息: Server startup in  ms
      id:id1id1
      name:name1
      my first controller!!!

Spring 梳理-接收请求的输入(原)的更多相关文章

  1. spring mvc controller接收请求值及controller之间跳转及传值

    spring接收请求参数: 1,使用HttpServletRequest获取 @RequestMapping("/login.do") public String login(Ht ...

  2. springMVC中接收请求参数&&数据转发

    ### 1. 接收请求参数 #### 1.1. [不推荐] 通过HttpServletRequest获取请求参数 假设存在: <form action="handle_login.do ...

  3. 图解 Spring:HTTP 请求的处理流程与机制【2】

    2. HTTP 请求在 Web 容器中的处理流程 Web 容器以进程的方式在计算机上运行,我们知道进程是系统资源分配的最小单元,线程是系统任务执行的最小单元.从这个角度看,Web 容器就像是邮包收件人 ...

  4. 图解 Spring:HTTP 请求的处理流程与机制【3】

    3. HTTP 请求在 Web 应用中的处理流程 在穿越了 Web 容器之后,HTTP 请求将被投送到 Web 应用,我们继续以 Tomcat 为例剖析后续流程.Web 容器与 Web 应用的衔接是通 ...

  5. 图解 Spring:HTTP 请求的处理流程与机制【4】

    4. HTTP 请求在 Spring 框架中的处理流程 在穿越了 Web 容器和 Web 应用之后,HTTP 请求将被投送到 Spring 框架,我们继续剖析后续流程.Web 应用与 Spring M ...

  6. SpringMVC——接收请求参数和页面传参

    Spring接收请求参数: 1.使用HttpServletRequest获取 @RequestMapping("/login.do") public String login(Ht ...

  7. Spring Controller 获取请求参数的几种方法

    1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交.若"Content-Type"="application/ ...

  8. Struts系列笔记(6)---action接收请求参数

    action接收请求参数 在web开发中,去接收请求参数来获得表单信息非常的常见,自己也总结整理了有关Struts2通过action接收请求参数的几种方法. Struts2 提供三种数据封装的方式: ...

  9. spring MVC处理请求过程及配置详解

    本文主要梳理下Spring MVC处理http请求的过程,以及配置servlet及业务application需要的常用标签,及其包含的意义. spring MVC处理请求过程 首先看一个整体图 简单说 ...

随机推荐

  1. 常用Linux备份

    用于备份的Tar 备份工具Tar是以前备份文件的可靠方法,几乎可以工作于任何环境中,Linux老用户一般都信赖它. Linux中以.tar结尾的文件都是用tar创建的.它的使用超出了单纯的备份,可用来 ...

  2. 快速了解会话管理三剑客cookie、session和JWT

    更多内容,欢迎关注微信公众号:全菜工程师小辉.公众号回复关键词,领取免费学习资料. 存储位置 三者都是应用在web中对http无状态协议的补充,达到状态保持的目的 cookie:cookie中的信息是 ...

  3. MySQL IN和EXISTS的效率问题,以及执行优化

    网上可以查到很多这样的说法: 如果查询的两个表大小相当,那么用in和exists差别不大.如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in: 例如:表A(小表),表B ...

  4. 关于web.xml配置

    整理自网上: web应用是一种可以通过Web访问的应用程序.在J2EE领域下,web应用就是遵守基于JAVA技术的一系列标准的应用程序. 最简单的web应用什么样? 2个文件夹.1个xml文件就能成为 ...

  5. HDU - 4305 - Lightning 生成树计数 + 叉积判断三点共线

    HDU - 4305 题意: 比较裸的一道生成树计数问题,构造Krichhoof矩阵,求解行列式即可.但是这道题还有一个限制,就是给定的坐标中,两点连线中不能有其他的点,否则这两点就不能连接.枚举点, ...

  6. POJ-1325 Machine Schedule 二分图匹配 最小点覆盖问题

    POJ-1325 题意: 有两台机器A,B,分别有n,m种模式,初始都在0模式,现在有k项任务,每项任务要求A或者B调到对应的模式才能完成.问最少要给机器A,B调多少次模式可以完成任务. 思路: 相当 ...

  7. HihoCoder - 1617 方格取数

    HihoCoder - 1617 (从群主那里借鉴来的, 群主好强啊) 题意:中文题不解释... 题解: dp[X][i][j] 代表的是X是坐标之和 第一个人 走到位置 dp[i][x-i] 第二个 ...

  8. poj 1797Heavy Transportation(dijkstra变形)

    题目链接:http://poj.org/problem?id=1797 题意:有n个城市,m条道路,在每条道路上有一个承载量,现在要求从1到n城市最大承载量,而最大承载量就是从城市1到城市n所有通路上 ...

  9. CodeForces 779D. String Game(二分答案)

    题目链接:http://codeforces.com/problemset/problem/779/D 题意:有两个字符串一个初始串一个目标串,有t次机会删除初始串的字符问最多操作几次后刚好凑不成目标 ...

  10. pt工具校验主从数据一致性之dsns方式

    mysql主从数据一致性校验,常用的方法是Percona-Toolkit的组件pt-table-checksum,这东西怎么用网上一大堆,就不啰嗦了.主要说一下通过dsns方式发现从库的一种方式. p ...