深入浅出 SpringMVC - 1
原创播客,如需转载请注明出处。原文地址:http://www.cnblogs.com/crawl/p/7690973.html
前言:
本篇笔记是LZ在之前学习 SpringMVC 框架时所的记录,分两篇分享,此篇为基础篇,包括 SpringMVC 环境在 Eclipse 中的搭建,SpringMVC 的 HelloWorld,常用注解:@RequestMapping、@PathVariable、@RequestParam、 @SessionAttributes、@ModelAttribute等,REST 风格的 URL 的使用、使用 POJO 对象绑定请求的参数、在 SpringMVC 的处理器的方法中使用原生的 Servlet 的 API、处理模型数据、@ModelAttribute 的源码分析、SpringMVC 的视图解析器及其流程的分析,最后还有一个 SpringMVC 的 CRUD 小案例。
笔记中提供了大量的代码示例,需要说明的是,大部分代码示例都是以图片的形式展示的,所有的图片都是来自本人所敲代码的截图,不足之处,请大家指正~
一、SpringMVC 的 HelloWorld
1.加入 jar 包 spring-framework-4.0.0.RELEASE\libs 下的 spring 基本 jar 包和 apache-commons\commons-logging-1.1.1 下的日志包
2.配置 web.xml 文件 Alt + / 选择 dispatcherservlet
注:实际上也可以不通过 contextConfigLocation 来配置 SpringMVC 的配置文件,而是使用默认的,默认的配置文件的路径和名字为:/WEB-INF/<servlet-name>-servlet.xml 其中 <servlet-name> 为 web.xml 文件中的配置的 SpringMVC 的 <servlet-name> 属性值
3.类路径下新建 Spring 的配置文件 springmvc.xml 选择 beans context mvc 约束
4.编写请求处理器类,在 springmvc.xml 中配置自动扫描的包,并为处理器类添加处理器标志注解
4.编写视图:index.jsp;在请求处理器类中通过 @RequestMapping(xxx) 的方式来映射请求的 URL;在 springmvc.xml 文件中配置视图解析器
二、@RequestMapping 映射请求
1.@RequestMapping 既可以修饰类又可以修饰方法
若在类上使用了 @RequestMapping("/springmvc"),则对应 view 层的请求为:
2. @RequestMapping 的 value 和 method 属性
① value 属性:指定映射的 URL
② method 属性: 指定映射的请求方式
3. @RequestMapping 的 params 和 headers 属性 (了解即可,不常用)
① params 属性:指定映射的请求参数
② headers 属性: 指定映射的请求头
4. @RequestMapping 的 Ant 风格的路径,即使用通配符 (了解即可)
5. 补充: @PathVariable(xxx) 注解可以来映射 URL 中的占位符到目标方法的参数中
三、REST
1.简介:即Representational State Transfer。(资源)表现层状态转化。是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便, 所以正得到越来越多网站的采用
2.HTTP协议里面,四个表示操作方式的动 词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源,PUT用来更新资源,DELETE用来删除资源
3.以 CRUD 为例,演示 REST 风格 URL 的使用
1)在 web.xml 中配置 HiddenHttpMethodFilter 过滤器,此过滤器可以将 POST 请求转换为 DELETE 或 PUT 请求
2)在 jsp 页面中模拟发送 GET POST DELETE PUT 请求
3) 在请求处理器类中编写 GET POST DELETE PUT 请求各自对应的方法,通过 @PathVariable 注解获取请求的参数,即 id
四、 @RequestParam 注解 (重要,常用)
1.@RequestParam 注解可以在请求方法中获取请求的参数
2.具体获取:
五、@RequestHeader 注解 (了解)
1. 在请求方法中映射(获取)请求头的信息
2. 使用
六、@CookieValue 注解 (了解)
1.根据 Cookie 的 key 获取 Cookie 的 value
2.使用
七、使用 POJO 对象绑定请求的参数 (POJO:普通的 Java 类) (常用)
1.构建 User 类和 Address 类,其中 User 类中包含 Address 对象
2.在 view 层构建表单 (index.jsp 中)
3.在请求控制器类中编写请求方法
八、在处理器的方法中使用原生的 Servlet 的 API (常用)
九、处理模型数据
1. ModelAndView 作为处理器方法的返回值
2. 向目标方法添加 Map 类型的参数
3. @SessionAttributes 注解 (常用) 注:此注解只能放在类上,不能放在方法上
1)作用:① 通过属性名指定需要放到会话中的属性(使用 @SessionAttributes 注解的 value 属性) ② 通过模型属性的对象类型指定哪些模型属性需要放到会话中(使用 @SessionAttributes 的 types 属性)
2)演示;
4. @ModelAttribute 注解 (类似于 Struts2 中的 Preparable)
1)应用场景:只对一个对象的部分属性进行修改,而不需要修改的属性需要保持原样不能为 null
2)具体使用及注意事项:
3)使用 @ModelAttribute 注解在 SpringMVC 中的源码分析 (了解)
4)结论,需要记住
5)补充
十、视图解析器及其流程的分析 (默认使用的是 InternalResourceView 视图解析器)
1、 InternalResourceViewResolver 视图解析流程
2.、 JstlView 视图解析器 (若项目中使用了 JSTL,则 SpringMVC 会自动把视图由 InternalResourceView转为 JstlView)
使用 JSTL 的 fmt 标签模拟国际化:
1)新建三个国际化资源文件
2)在 jsp 页面中引入 jstl,使用 fmt 标签
3)在 SpringMVC 的配置文件中配置国际化资源文件
3、mvc:view-controller 标签:配置直接转发的页面,配置的路径可以直接响转发的页面,而无需再经过 Handler 的目标方法
测试:在 url 中输入:http://localhost:8888/springmvc-1/success (LZ 将 Tomcat 的端口号修改为了 8888)
注:使用此注解必须配置另一个注解:mvc:annotation-driven
4、 自定义视图
1)创建视图类,实现 View 接口,实现两个方法
2)SpringMVC 配置文件中配置 BeanNameViewResolver 视图解析器
3)测试:
5、重定向到目标页面
十一、SpringMVC 的 CRUD 小案例
1.按照之前的步骤搭建 SpringMVC 的环境
2.注意点:
1)在 jsp 页面中使用 SpringMVC 的 form 表单标签:
jsp 页面:
更正:上图中应该是 form:radiobuttons 而不是 form:checkboxes
请求处理器类中:
2)SpringMVC 处理静态资源文件
解决:
3)如何将 GET 请求转换为 POST 请求,再转化为 DELETE 请求
GET 请求:
GET ---> POST:
4)关于 _method ,将 POST 请求转为 PUT 或 DELETE 请求
转载于:https://www.cnblogs.com/crawl/p/7690973.html
深入浅出 SpringMVC - 1相关推荐
- 深入浅出 SpringMVC - 2 提升篇
原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7697738.html 前言: 本篇笔记是继 深入浅出 SpringMVC - 1 后的续篇,主 ...
- springmvc返回html页面_深入浅出SpringMVC系列~
写在前面: 小伙伴儿们,大家好!这次让我们一起来入门学习SpringMVC~ 思维导图: 1,环境配置 我们建一个Maven项目,把我们所需要的依赖引入进去:大概是下面这样: <dependen ...
- springmvc深入浅出(备java基础,javaee课程,struts同类)-任亮-专题视频课程
springmvc深入浅出(备java基础,javaee课程,struts同类)-11045人已学习 课程介绍 Spring web mvc架构.springmvc入门程序.非注解处理 ...
- 【Java Web开发指南】深入浅出Spring和SpringMVC
文章目录 1 spring 2 springmvc 3 AOP与IOC 1 spring spring是一个一站式的框架,提供了表现层(springmvc)到业务层(spring)再到数据层(spri ...
- 深入浅出JMS(四)--Spring和ActiveMQ整合的完整实例
转载:http://blog.csdn.net/jiuqiyuliang/article/details/48758203 第一篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了JMS的两种消息模 ...
- SpringMVC的文件上传和拦截器
目录 一.文件上传 1.概述 2.案例1 3.案例2 二.拦截器 1.HandlerInterceptor接口 2.案例:拦截器实现用户权限验证 一.文件上传 1.概述 SpringMVC会将上传文件 ...
- 深入学习SpringMVC以及学习总结
2019独角兽企业重金招聘Python工程师标准>>> 一.优点: 1.SpringMVC简化web程序开发; 2.SpringMVC效率很好(单例模式): 3.SpringMVC提 ...
- 一篇文章学会springMVC
更多精彩和干货和你分享 说在前面 本文只是入门 为什么用springMVC?springMVC有什么有缺点?springMVC和Struts有什么区别?等等这些问题可以参考网路上资源,本文的重点是快速 ...
- 面试问烂的 Spring AOP 原理、SpringMVC 过程(求求你别问了)
Spring AOP ,SpringMVC ,这两个应该是国内面试必问题,网上有很多答案,其实背背就可以.但今天笔者带大家一起深入浅出源码,看看他的原理.以期让印象更加深刻,面试的时候游刃有余. Sp ...
最新文章
- jquery在ie浏览器下中文乱码的问题
- 小猿圈讲解Java可以做什么?
- 从单纯聊天到在线生活
- Mr.J--学习五子棋的艰苦之路
- 微服务写的最全的一篇文章
- mysql lower_case_table_names 区分表名大小写设置
- 《深入学习 Golang》并发编程
- 《移动App测试实战》——1.4 本章小结
- NodeJs或者命令行爬取网络教程并生成PDF文件,以阮一峰JavaScript教程和ES6教程为例 ...
- JAVA中使用Apache Batik实现SVG文件转PDF文件导出
- BXP无盘Windows XP系统好处(转)
- 在线类图各种UML图分享
- 下一代计算机 激光,《Nature》:仅需一束激光,计算机速度有望能再快100万倍...
- 中英文对照的文档、分离有妙招
- LOVE2D中实现一个简单的摇杆
- 服务器u单核性能排行,CPU单核性能排行[2018年10月更新]
- RFID通信系统框图
- tipask 问答系统 如何设置第三方一键登录
- Java8种Stream流相关操作——集合的筛选、归约、分组、聚合
- 得到《三体》听书笔记
热门文章
- 基于springboot+thymeleaf+mybatis的员工管理系统 —— 增删改查
- DB2 SQL Error: SQLCODE=-668, SQLSTATE=57016,表挂起
- MySQL忘记密码后,修改
- 软件设计师-软件知识产权保护
- 那年学过的web后端笔记
- 解决AS3 Socket编程中最令人头疼的问题
- js 获取html文字颜色,js获得网页背景色和字体色的方法
- vue父子组件搭配(添加数据和删除)
- hnu实验五 排队喝水
- Volatility内存分析工具-某即时通讯软件Windows端数据库密钥的分析