SpringMVC2实现与CRUD整合

一SpringMVC实现与CRUD整合

表单的name要和属性一致,这样SpringMVC才可以完成自动封装(将上传的内容封装成一个对象),public String update(Product product){}表单里的name会对product中对应的属性进行赋值

传递参数有两种:1问号传参:需要使用问号来拼接参数,如果传递多个值,需要使用&来拼接,不会改变路径级别

2路径传参:统配规则(传什么就可以进入什么页面)@GetMapping("/{path}"),如果同时统配和具体的url(@GetMapping("/a"))都满足,则以更精确的url来处理该请求。

可以直接指定变量的数据类型,而无需再做数据类型的转换,也可以实现传入多个参数,/{abc}/{xyz},方法里面可以使用 public String deleteProduct(@PathVariable int abc,@PathVariable String xyz)方式来接收。注意路径传参会多一级目录,要注意访问路径

箭头内容要一致

1    RequestMapping 可以通过method来区分不同的请求方式    

@RequestMapping(value = “/update”, method = RequestMethod.POST)代表处理post请求

@RequestMapping(value = “/update”, method = RequestMethod.GET)代表处理get请求

2   GETMapping,可以简化代码,专门用来处理get请求(4.3以后的Spring版本可用)

3   PostMapping,可以简化代码,专门用来处理post请求(4.3以后的Spring版本可用)可以与GetMapping的参数一样,因为请求方式不一样

4   PathVariable路径传参的注解,可以实现路径传参。

二    MVC校验

1写一个配置文件(前面的message可以变,但后面的zh_CN_properties是固定格式)properties内容格式是key=value,我的idea如果把文件放在WEB-INF下会一直报错,找不到文件,只能把文件放在resources;

messages_zh_CN_properties(中文)

messages_en_US_properties(英文)

2在mvc.xml文件中配置如下,id必须是messageSource,SpringMVC会根据id所对应的bean对象来读取配置文件

property内的name必须是basename,用于读取文件,因为我把properties配置文件放在resources;所以value是messages(文件名)


3实现Validator接口,实现里面的两个方法supports(用来对于哪个类实现校验)和validate(完成真正的校验,一定是满足了supports方法之后才会进入该方法来进行校验),validate有两个参数,前者是需要检验的对象,后者是存储的错误信息,

rejectValue("字段名",properties配置文件的key值)用于合法性检验,两个参数

rejectIfEmpty(errors,"字段名",properties配置文件的key值),用于非空检验,三个参数

4    书写Controller类(校验)

该类return的都代表最终的展示页面,如果带有redirect,则代表重定向

第一个GetMapping("/saveEmp")代表以get方式请求该资源,里面写了一个ModelAndView对象,传了三个参数,第一个是viewname,视图名,拼接上前后缀可以得到真正的物理视图,来打开该物理视图所对应的页面,第二个参数为modelname,模型名,相当于给模型起名字,这里要注意,该模型名意识要被叫做bean对象的小写形式Product(product),第三个参数为modelObject,模型对象,将该对象通过模型名传递给第一个参数viewname所对应的页面,在那个页面中可以渲染该数据

modelName必须是bean对象的小写,commandName的值也必须与其一样

第二个PostMapping("/saveEmp"),该注解的意思是页面上的表单通过post请求将saveEmp的请求来在这里进行处理。该方法包含有三个参数,第一个是Product对象,可以自动封装表单中的属性为Bean对象,第二个参数为BindingResult对象,该对象我们通过源码可以发现是Spring中的Errors的子接口,可以用来接收并存储错误信息,这个对象可以接收从PorductValidate校验类中产生的错误信息,存储以交给错误页面的f:errors标签来展示错误信息,第三个参数是Model对象,可以用来储存对象,目的是可以使的bean对象的错误数据进行回显

addAttribute的第一个参数必须是bean对象的小写,commandName的值也必须与其一样

5    书写页面

1    需要添加Spring MVC的form标签;5.0版本的spring没有使用commandName了,用modelAttribute替代,commandName换成modelAttribute,其他的都不变,值依旧是bean对象的小写;

1    f:input类似于html中的input标签,但是将name换成了path,代表的是属性名

2    f:errors,这个标签可以用来展示如果当前表单有错误信息时,可以在对应的域之上进行回显,一般都被放在对应的f:input标签之后,用来描述该属性的错误信息

你可能感兴趣的:(SpringMVC2实现与CRUD整合)