SpringMvc学习笔记(二)
前言
项目最先用到了.Net MVC,其实我的Web开发经历一开始就是MVC模式,学习SpringMvc的过程中,也发现很多类似之处,学习SpringMvc过程中更注重原理,之前更注重使用。下面记录学习的一些体会。
回顾总结
框架相关
- DispatcherServlet前端控制器:接收request,进行response
- HandlerMapping处理器映射器:根据url查找Handler。(可以通过xml配置方式,注解方式)
- HandlerAdapter处理器适配器:根据特定规则去执行Handler,编写Handler时需要按照HandlerAdapter的要求去编写。
- Handler处理器(后端控制器):需要程序员去编写,常用注解开发方式。
Handler处理器执行后结果 是ModelAndView,具体开发时Handler返回方法值类型包括 :ModelAndView、String(逻辑视图名)、void(通过在Handler形参中添加request和response,类似原始 servlet开发方式,注意:可以通过指定response响应的结果类型实现json数据输出) - View resolver视图解析器:根据逻辑视图名生成真正的视图(在springmvc中使用View对象表示)
- View视图:jsp页面,仅是数据展示,没有业务逻辑。
注解开发
使用mvc注解驱动mvc:annotation-driven来进行处理器映射器和适配器的配置。
@controller注解必须要加,作用标识类是一个Handler处理器。
@requestMapping注解必须要加,作用:
1、对url和Handler的方法进行映射。
2、可以窄化请求映射,设置Handler的根路径,url就是根路径+子路径请求方式
3、可以限制http请求的方法。映射成功后,springmvc框架生成一个Handler对象,对象中只包括 一个映射成功的method。
注解开发中的参数绑定,默认支持:
1、默认支持很多类型,HttpServletRequest、response、session、model/modelMap(将模型数据填充到request域)
2、支持简单数据类型,整型、字符串、日期
只要保证request请求的参数名和形参名称一致,自动绑定成功
如果request请求的参数名和形参名称不一致,可以使用@RequestParam(指定request请求的参数名),@RequestParam加在形参的前边。
3、支持pojo类型
只要保证request请求的参数名称和pojo中的属性名一致,自动将request请求的参数设置到pojo的属性中。
注意:形参中即有pojo类型又有简单类型,参数绑定互不影响。
使用技巧
数据校验
springmvc使用的是hibernate的校验框架vaildation,但是和hibernate一点关系都没有。目的是解耦前台数据检验和错误信息返回。参考博文:SpringMVC数据验证.
数据回显
提交数据失败之后,数据在填入表单。SpringMVC学习–数据回显.
统一异常处理
Java异常类层次结构图:

关于异常可参考博文:深入理解java异常处理机制.
springmvc中异常处理思路是:系统的dao、service、controller出现都通过throwsException向上抛出,最后由springmvc的前端控制器交由异常处理器(一个系统只有一个,由框架提供)进行异常处理。
处理的思路是:解析出异常的类型,如果是自定义的直接取出异常信息,在错误页面展示。如果不是系统自定义的,构造一个自定义的异常类型,为未知错误。提供HandlerExceptionResolver接口
RESTful
RESTful架构:是一种设计的风格,并不是标准,只是提供了一组设计原则和约束条件,也是目前比较流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。参考:SPRINGMVC中的RESTFUL架构风格 .
json交互
json格式在接口调用中、html页面中常用,格式比较简单,解析还比较方便。
说明
文中出现的图片,文字描述有些来自互联网,但是出处无法考究,如果侵犯您的相关权益,请联系我,核实后我会马上加上转载说明。谢谢!!!