springMVC

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

@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错误),所以需要在对象的实体类属性上加注解


目录
相关文章
|
4月前
|
Java API 网络架构
SpringMVC(一)(2)
SpringMVC(一)(2)
26 1
|
4月前
|
XML 前端开发 JavaScript
SpringMVC(一)(4)
SpringMVC(一)(4)
27 0
SpringMVC(一)(4)
|
5月前
|
前端开发 Java 数据格式
|
4月前
SpringMVC(一)(3)
SpringMVC(一)(3)
27 0
|
5月前
|
JSON 前端开发 JavaScript
|
6月前
|
存储 JSON 安全
SpringMVC 02
SpringMVC 02
28 0
|
6月前
|
JSON 前端开发 Java
SpringMVC
SpringMVC
|
前端开发 应用服务中间件
SpringMVC4
SpringMVC4
43 0
|
前端开发 Java Spring
你真的了解SpringMVC吗?(下)
你真的了解SpringMVC吗?(下)
59 0
|
6月前
|
存储 JSON 前端开发