Spring框架深入(四)--SpringMVC配置详解
一、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配置详解相关推荐
- Spring Boot 2.0 的配置详解(图文教程)
本文来自作者 泥瓦匠 @ bysocket.com 在 GitChat 上分享 「Spring Boot 2.0 的配置详解(图文教程)」 编辑 | 哈比 Spring Boot 配置,包括自动配置和 ...
- java图片填充父容器_java相关:spring的父子容器及配置详解
java相关:spring的父子容器及配置详解 发布于 2020-5-26| 复制链接 本篇文章主要介绍了spring的父子容器及配置详解,详细的介绍了spring父子容器的概念.使用场景和用法,有兴 ...
- 深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)
上篇文章<深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇)> 介绍了properties与environments, ...
- Spring MVC的web.xml配置详解(转)
出处http://blog.csdn.net/u010796790 1.spring 框架解决字符串编码问题:过滤器 CharacterEncodingFilter(filter-name) 2.在 ...
- Spring框架中常用的设计模式详解
一.浅谈控制反转(IOC)与依赖注入(DI) IOC(Inversion of Control)是Spring中一个非常重要的概念,它不是什么技术,而是一种解耦的设计思想.它主要的额目的是借助于第三方 ...
- php ckeditor 配置,Laravel5.6框架使用CKEditor5相关配置详解
本文实例讲述了Laravel5.6框架使用CKEditor5相关配置.分享给大家供大家参考,具体如下: Laravel 相关配置 文件的上传与存储 参考文档: 创建符号链接 php artisan s ...
- 【Spring】——声明式事务配置详解
事务管理是企业级应用程序开发中必备技术,用来确保数据的完整性和一致性.本文主要讲解事务涉及到一些概念以及spring中事务的使用.如有理解偏颇之处,恳请各位大神指正,小编不胜感激! 1.何为事务? 事 ...
- Spring学习(四)IOC详解
本文借鉴:Spring学习(特此感谢!) 一.简介 概念:控制反转是一种通过描述(在 Java 中可以是 XML 或者注解)并通过第三方(Spring)去产生或获取特定对象的方式.(被动创建) 优势: ...
- Spring配置文件中关于约束配置详解
一.Spring配置文件常见的配置头 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns= ...
最新文章
- 青龙羊毛——新快手极速版(搬运,非原创)
- winform 日期控件放在工具条(先放一个label 占好位置)上。工具条和其他控件都要求有鼠标的精准。...
- 【必懂】C语言水仙花数题解
- C++|Qt工作笔记-杀死进程(Linux与Windows通用)
- Linux Shell脚本入门教程系列之(二)第一个shell脚本
- mysql的一些心得
- DOM节点操作大全(一)
- 算法设计和数据结构学习_2(常见排序算法思想)
- ThinkPHP3.2.3完全开发手册离线手册
- Spring Security配置放行请求,将参数放置于请求体时放行失效
- C++实现播放音频文件
- 苦熬31年终于登陆科创板!WPS如何一步步熬到了今天?
- 秦皇岛自驾三日游攻略
- 分享 |转录组测序那些事儿
- ps切出来的图片导出来只有一张是png格式的其他全是jpg格式,怎么样让所有的切片变成png格式。
- 2011-2019 历届蓝桥杯——本科B组C/C++组别所有试题——详解大全
- 使用Ventoy安装Deepin系统出现Error verification failed 0x1A Security violation错误
- 【知识图谱】——8种Trans模型
- 第四代微型计算机,第四代树莓派微型电脑正式发布 首搭4GB内存,支持USB 3.0和双屏4K输出...
- 全球与中国磨料水射流切割机市场深度研究分析报告
热门文章
- 安装vs 2015 x新建项目 显示(未将对象引用设置到对象实例) 处理方法
- 微信服务号 微信支付开发
- Docker学习与和应用(二)_使用Docker
- Nagios监控之9:利用sendmail使用第三方SMTP服务发送邮件报警
- 三角插值的 Fourier 系数推导
- ASP.NET获得客户端浏览器语言设置(Get the Language setting of browser by ASP.NET)
- java Reference
- 【数据挖掘笔记三】数据预处理
- cad怎么查找未闭合_CAD无法填充的这四种方法肯定能解你燃眉之急
- jQuery 对象和 DOM 对象