springMVC

 

@RequestMapping

除了可以修饰方法,还可以修饰类,修饰方法时是提供详细的映射信息,修饰类时相当于WEB-INF的根目录

1.修饰方法

 

2.修饰类

@RequestMapping请求方式

如果时通过超链接的方式则韦get方式,表单一般为post

 

@RequestMapping请求参数(params),请求头(headers)

@RequestMapping支持通配符

@PathVariable   映射URL 绑定占位符 ,通过URL绑定到控制器@Controller中,@PathVariable在springMVC走向REST风格有里程碑的意义

 

 HiddenHttpMethodFilter过滤器(资源表现层转化)

rest风格的URL

GET  获取资源

POST 新建资源

DELETE  删除资源

PUT 更新资源

@PathVariable 来获取资源

 @RequestParam获取请求参数

 

  @RequestHeaher获取请求头(用得不多),用法同@RequestParam,作用是映射请求头信息

@CookieValue:获取Cookie值(了解,用得不多);

使用POJO对象绑定请求参数

因为在开发中不可能用request.getParameter()一个一个得获取请求参数,那样的话 成本太高,所以springMVC会按照请求参数和POJO对象进行匹配,还支持级联属性,

使用Servlet原生API作为参数

开发中难免会用到Servlet原生API,如HttpServletRequest,HttpServletResponse等

 

 处理模型数据之ModelAndView(no success)

ModelAndView可以包含视图和模型

 springMVC会把ModelAndView 的model放到请求域中

  处理模型数据之Map(no success)

处理模型数据之SessionAttributes注解(把模型放在session中)

当某个属性需要共用时,就使用SessionAttributes,该注解只能放在类上面,不能放在方法上

如图同时放在请求域和session域中

 

@ModelAttribute注解  ***(和struts2的一个拦截器差不多)

有@ModelAttribute标记的方法,会在每个目标方法调用前先调用@ModelAttribute标记的这个方法(每个方法调用前都会

使用情景

  当我们修改某个表的时候,如果其中有一个字段不能修改(入驻时间这类),我们首先想到的是从表单输入这些字段,然后创建对象和这些表单输入的字段匹配,因为对象是新创建的,所以匹配的时候如果表单输入的和对象的属性匹配,则赋值,如果表单没有与对象对应的值,则为空,显然,如果这样的话,不是我们想要的,进行修改的话表单没有的值则为空,所以引入了@ModelAttribute注解,这样的话,当我们在输入表单的时候,如果某些字段不能修改,则使用@ModelAttribute注解,从数据库中获取对象的值(通过id),为空的则赋从数据库查询的值给它,

如下

没有使用@ModelAttribute注解,password为空

 使用@ModelAttribute注解

 @ModelAttribute原理

/*

*

*/

@ModelAttribute运行流程

@SessionAttributes这里有一个坑,会发生500错误**********

原因:

/*

*

*/

SpringMVC_视图解析流程分析

/*

*

*/

 

自定义视图

重定向

annotation-driven配置

 加了这个标签之后,会为我们注册三个bean,

分别是

RequestMappingHandlerMapping,

RequestMappingHandlerAdapter,

ExceptionHandler,

使得我们的@RequestMapping,@RequestParam,@ExceptionHandler,@DateTimeFormat等这些注解生效,在之前这些都得手动配置才行。

如果使用了<mvc:view-controller>标签,必须添加annotation-driven标签

<mvc:view-controller>

一般springmvc都是经过Controller,但是当我们不想经过Controller,而是直接访问视图的时候。就可以通过mvc:view-controller,使用<mvc:view-controller>时必须配置annotation-driven,不然会报404错误,

springMVC数据绑定流程分析

如:当我们从表单输入一个日期,这个日期从白哦但输入时是一个字符串,然而它所对应的实体类类型时date,所以在传输过程中要进行数据转换,流程为:

 

SpringMVC_自定义类型转换器

当我们需要将数据转换成另一种类型的时候,就用到数据转换,但是springMVC给我们封装了很多类型转化,所以这个方法了解了解就行,具体用到再看

SpringMVC_InitBinder注解

/""

"

""/

SpringMVC_数据的格式化

如日期的转化,float转化等,当从表单输入数据时,日期和浮点型是不能被正常转化的(会发生400错误),所以需要在对象的实体类属性上加注解

生命不止,折腾不息
原文地址:https://www.cnblogs.com/steakliu/p/10498926.html