一、SpringMVC web模型

  

二、@RequestMapping参数说明

  1、value:定义处理方法的请求的URL地址;

  2、method:定义处理的方法的http method类型,如GET/POST方法;不指定的时候,可以处理任何方式的http请求;

  3、params:定义请求的URL中必须包含的参数,用于窄化请求;

  4、headers:定义请求的request headers 中必须包含的参数,与params类似;

  5、consums:指定处理请求的提交类型(content-type),application/json,用于窄化请求;

  6、produces:指定返回的内容类型,仅当request请求头中的类型包含指定类型才返回;

  params的使用

  用于前台向后台的参数的传递;通过判断传递的参数中有或者没有“target”,来判断是否进入该方法;

//请求中有target参数时,才能进入
@RequestMapping(value="/find1.action",params="target")
public String find1(String target) {System.out.println("find1");System.out.println(target);return "result";
}//请求中不能有target参数
@RequestMapping(value="/find1.action",params="!target")
public String find2() {System.out.println("find2");return "result";
}//请求中target值等于test时,进入find3
@RequestMapping(value="/find1.action",params="target=test")
public String find3(String target) {System.out.println("find3");System.out.println(target);return "result";
}

  value配置详解

  value支持通配符的使用;

   ?:代表匹配文件名中的一个字符;

   *:代表匹配文件名中的任意字符;

   **:代表匹配多层路径;

  示例:

  有这样几个跳转链接,

<a href="find.action">find.action</a><br>
<a href="find/id.action">find/id.action</a><br>
<a href="find/ida.action">find/ida.action</a><br>
<a href="find/idaa.action">find/idaa.action</a><br>
<a href="find/id/abc.action">find/id/abc.action</a><br>
<a href="find/id/abc/abc.action">find/id/abc/abc.action</a><br>

  分别对应到的controller方法:

@RequestMapping("/find/id?.action")
public String match1() {System.out.println("match1:"+"/find/id?.action");return "result";
}
@RequestMapping("/find/id*.action")
public String match2() {                   System.out.println("match2:"+"/find/id*.action");return "result";
}
@RequestMapping("/find/id/*.action")
public String match3() {System.out.println("match3:"+"/find/id/*.action");return "result";
}
@RequestMapping("/find/id/**/abc.action")
public String match4() {System.out.println("match4:"+"/find/id/**/abc.action");return "result";
}
@RequestMapping("/find.action")
public String match5() {System.out.println("match5:"+"/find.action");return "result";
}

  运行结果:

  

  或关系

  一个value的配置可以支持两个URL路径的映射;通过这两个路径,可以同时访问到这个方法;

@RequestMapping(value= {"/get.action","/fetch.action"})
public String get() {System.out.println("get");return "result";
}

  正则表达式

  页面链接:

<a href="get/2-b.action">reg</a>

  controller代码:

@RequestMapping("get/{\\d+}-{[a-z]}")
public String regularExpression() {System.out.println("regularExpression");return "result";
}

  通过正则表达式还可以实现路径参数的获取;

@RequestMapping("get/{number:\\d+}-{text:[a-z]}")
public String regularExpression2(@PathVariable String number,@PathVariable String text) {System.out.println("regularExpression");System.out.println("number:"+number);System.out.println("text:"+text);return "result";
}

  先在路径中接收正则表达式的值,再通过@PathVariable获取值;

  运行结果:

  

  RESTFUL支持

  1、restful:轻量级的SOA(面向服务)的实现,将一个个的请求做出的相应以资源的形式返回;

  2、请求资源:

   以前:userServlet?type=”add”;

   Restful:URL风格:将参数通过URL传递到服务器端;

  3、SpringMVC支持restful风格,可以通过URL进行参数的传递;

  示例:

<a href="user/add.action">add</a>

@RequestMapping(value="/user/{type}.action")
public String userMgr(@PathVariable("type") String initParam) {System.out.println("userMgr:"+initParam);return "result";
}

  路径中的值add,就会作为参数被type接收;  

  先使用@PathVariable(“type”)中的type来接收通过URL路径传递的type值,再给InitParam初始化参数;

三、基于注解的参数绑定

  1、@RequestParam:设置绑定的参数名和传入的参数名的值;

<a href="param.action?param=paramTest">测试</a><br>

@RequestMapping("/param.action")
public String param(@RequestParam("param")String value) {System.out.println("param:"+value);return "result";
}

  2、@ PathVariable

四、数据回显深入理解

  数据回显的方法:

   (1)、原生servlet的方式:

   (2)、ModelAndView

   (3)、Model/ModelMap:默认在request作用域实现数据传递

@RequestMapping("/back.action")
public String back(Model model) {String msg="this is msg;";model.addAttribute("msg", msg);//默认的作用域范围是requestreturn "result";
}

    在前台页面可直接通过EL表达式获取值;

   (4)、ModeAtrribute

    可以用于方法的返回值:用来在处理@RequestMapping之前,为请求绑定需要从后台查询到的model;

    将数据绑定到request作用域,每个请求都可以从作用域中拿出数据;

    当前@RequestMapping的每一个返回都可以携带ModelAttribute中的属性和属性值;

@ModelAttribute("list")
public List<User> findAllUser(){User user1=new User(1,"admin","admin");User user2=new User(2,"test","test");    List<User> list=new ArrayList<User>();list.add(user1);list.add(user2);return list;
}

    在前台页面通过request.getAttribute获取值;

   (5)、@SessionAttributes:用于类和接口

    将与ModelAttribute中的key相同的属性值也放到session作用域中;

@Controller
@SessionAttributes(value= {"list","msg"})
public class ParamController {@RequestMapping("/param.action")public String param(@RequestParam("param")String value) {System.out.println("param:"+value);return "result";}@ModelAttribute("list")public List<User> findAllUser(){User user1=new User(1,"admin","admin");User user2=new User(2,"test","test");List<User> list=new ArrayList<User>();list.add(user1);list.add(user2);return list;}
}

    在前台页面通过session可以同时获取到list和msg;

PS:因作者能力有限,如有误还请谅解;

转载于:https://www.cnblogs.com/WHL5/p/9088009.html

Spring框架深入(四)--SpringMVC配置详解相关推荐

  1. Spring Boot 2.0 的配置详解(图文教程)

    本文来自作者 泥瓦匠 @ bysocket.com 在 GitChat 上分享 「Spring Boot 2.0 的配置详解(图文教程)」 编辑 | 哈比 Spring Boot 配置,包括自动配置和 ...

  2. java图片填充父容器_java相关:spring的父子容器及配置详解

    java相关:spring的父子容器及配置详解 发布于 2020-5-26| 复制链接 本篇文章主要介绍了spring的父子容器及配置详解,详细的介绍了spring父子容器的概念.使用场景和用法,有兴 ...

  3. 深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)

    上篇文章<深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇)> 介绍了properties与environments, ...

  4. Spring MVC的web.xml配置详解(转)

    出处http://blog.csdn.net/u010796790 1.spring 框架解决字符串编码问题:过滤器 CharacterEncodingFilter(filter-name)  2.在 ...

  5. Spring框架中常用的设计模式详解

    一.浅谈控制反转(IOC)与依赖注入(DI) IOC(Inversion of Control)是Spring中一个非常重要的概念,它不是什么技术,而是一种解耦的设计思想.它主要的额目的是借助于第三方 ...

  6. php ckeditor 配置,Laravel5.6框架使用CKEditor5相关配置详解

    本文实例讲述了Laravel5.6框架使用CKEditor5相关配置.分享给大家供大家参考,具体如下: Laravel 相关配置 文件的上传与存储 参考文档: 创建符号链接 php artisan s ...

  7. 【Spring】——声明式事务配置详解

    事务管理是企业级应用程序开发中必备技术,用来确保数据的完整性和一致性.本文主要讲解事务涉及到一些概念以及spring中事务的使用.如有理解偏颇之处,恳请各位大神指正,小编不胜感激! 1.何为事务? 事 ...

  8. Spring学习(四)IOC详解

    本文借鉴:Spring学习(特此感谢!) 一.简介 概念:控制反转是一种通过描述(在 Java 中可以是 XML 或者注解)并通过第三方(Spring)去产生或获取特定对象的方式.(被动创建) 优势: ...

  9. Spring配置文件中关于约束配置详解

    一.Spring配置文件常见的配置头 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns= ...

最新文章

  1. 青龙羊毛——新快手极速版(搬运,非原创)
  2. winform 日期控件放在工具条(先放一个label 占好位置)上。工具条和其他控件都要求有鼠标的精准。...
  3. 【必懂】C语言水仙花数题解
  4. C++|Qt工作笔记-杀死进程(Linux与Windows通用)
  5. Linux Shell脚本入门教程系列之(二)第一个shell脚本
  6. mysql的一些心得
  7. DOM节点操作大全(一)
  8. 算法设计和数据结构学习_2(常见排序算法思想)
  9. ThinkPHP3.2.3完全开发手册离线手册
  10. Spring Security配置放行请求,将参数放置于请求体时放行失效
  11. C++实现播放音频文件
  12. 苦熬31年终于登陆科创板!WPS如何一步步熬到了今天?
  13. 秦皇岛自驾三日游攻略
  14. 分享 |转录组测序那些事儿
  15. ps切出来的图片导出来只有一张是png格式的其他全是jpg格式,怎么样让所有的切片变成png格式。
  16. 2011-2019 历届蓝桥杯——本科B组C/C++组别所有试题——详解大全
  17. 使用Ventoy安装Deepin系统出现Error verification failed 0x1A Security violation错误
  18. 【知识图谱】——8种Trans模型
  19. 第四代微型计算机,第四代树莓派微型电脑正式发布 首搭4GB内存,支持USB 3.0和双屏4K输出...
  20. 全球与中国磨料水射流切割机市场深度研究分析报告

热门文章

  1. 安装vs 2015 x新建项目 显示(未将对象引用设置到对象实例) 处理方法
  2. 微信服务号 微信支付开发
  3. Docker学习与和应用(二)_使用Docker
  4. Nagios监控之9:利用sendmail使用第三方SMTP服务发送邮件报警
  5. 三角插值的 Fourier 系数推导
  6. ASP.NET获得客户端浏览器语言设置(Get the Language setting of browser by ASP.NET)
  7. java Reference
  8. 【数据挖掘笔记三】数据预处理
  9. cad怎么查找未闭合_CAD无法填充的这四种方法肯定能解你燃眉之急
  10. jQuery 对象和 DOM 对象