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. Nginx介绍与反向代理

    Nginx的产生 没有听过Nginx?那么一定听过它的"同行"Apache吧!Nginx同Apache一样都是一种WEB服务器.基于REST架构风格,以统一资源描述符(Unifor ...

  2. .NET CORE下最快比较两个文件内容是否相同的方法 - 续

    .NET CORE下最快比较两个文件内容是否相同的方法 - 续 在上一篇博文中, 我使用了几种方法试图找到哪个是.NET CORE下最快比较两个文件的方法.文章发布后,引起了很多博友的讨论, 在此我对 ...

  3. 简明Python教程-函数联系笔记

    1.实参与形参 在定义函数时给定的名称称作"形参",再调用函数时你所提供给函数的值称作“实参” 2.局部变量 所有变量的作用域是它们被定义的块,从定义它们的名字的定义点开始. 3. ...

  4. 【StyleCop】StyleCop规则汇总

    所有规则的翻译(基于版本4.7.44.0): 文档规则 1.SA1600:ElementsMustBeDocumented元素必须添加注释 2.SA1601: PartialElementsMustB ...

  5. [翻译] .NET Core 3.0 Preview 9 发布

    原文: Announcing .NET Core 3.0 Preview 9 今天,我们宣布推出 .NET Core 3.0 Preview 9.就像 Preview 8 一样,我们专注于打磨 .NE ...

  6. P1640 [SCOI2010]连续攻击游戏 二分图构造

    https://www.luogu.org/problemnew/show/P1640 题意 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10 ...

  7. Atcoder/Topcoder 口胡记录

    Atcoder/Topcoder 理论 AC Atcoder的❌游戏示范 兴致勃勃地打开一场 AGC 看 A 题,先 WA 一发,然后花了一年时间 Fix. 看 B 题,啥玩意?这能求? 睡觉觉. e ...

  8. Codeforces 734D. Anton and Chess(模拟)

    Anton likes to play chess. Also, he likes to do programming. That is why he decided to write the pro ...

  9. 通过对微信pc hook实现微信助手

    本软件主要通过对pc端微信hook来实现的,微信版本2.6.8.52. 软件下载地址: http://blog.yshizi.cn/104.html 软件实现功能: 支持爆粉 支持文本消息群发 支持自 ...

  10. 除了FastJson,你还有选择: Gson简易指南

    前言 这个周末被几个技术博主的同一篇公众号文章 fastjson又被发现漏洞,这次危害可导致服务瘫痪! 刷屏,离之前漏洞事件没多久,fastjson 又出现严重 Bug.目前项目中不少使用了 fast ...