一.@RequestMapping注解
1.@RequestMapping("/items") 使用在类上,用来窄化请求路径
2.@RequestMapping("/itemsList.html")使用在方法上,表示此方法可以处理的请求地址:
localhost:8899/items/itemsList.html
3.@RequestMapping注解,method属性表示请求方式
例如:当前限制请求只能是post时可以声明@RequestMapping(path="/itemsList.html",method=RequestMethod.POST)
如果在处理此请求时 以地址栏直接访问或者超链接或者get请求会报错:405状态码
以上此注解 等价于 @PostMapping("itemsList.html")
4.推荐使用 @PostMapping 或者 @GetMapping
二.参数绑定
1.默认支持的类型:
HttpServletRequest,
HttpServletResponse,
HttpSession,
Model/ModelMap
2.简单类型
前端界面:input输入框 name="username" 请求路径 xxxx?username=admin
springMVC的方法的形参中,形参名称必须和name属性值 相同 则可以进行自动参数绑定
如果不一致,可以搭配@RequestParam(value = "username",required = true)注解
表示当前参数必须传入若未传入会出现400错误 Required request parameter 'username' for method parameter type String is not present
3.pojo类型
前端界面:input输入框较多时可以使用
springMVC的方法的形参中,形参的类型是pojo类,要求pojo类中的属性名称 必须 和 输入框name属性的值一致,则可以参数绑定
4.文件上传的类型
前端界面:input输入框 file类型 name="photo"属性
springMVC的方法的形参中 形参的类型是MultipartFile,形参名称必须和name属性一致,则可以参数绑定。
若不一致,则可以搭配 @RequestParam("photo")注解
5.自定义类型参数绑定
方式一:可以在pojo类的 Date createtime 属性上
添加注解 @DateTimeFormat(pattern = "yyyy-MM-dd")
方式二: 可以自定义参数绑定器
1.自定义参数绑定器 implements Converter<String, Date>
2.springMVC配置类中,将自定义参数绑定器注入到容器中 @Bean方式
3.springMVC(implements WebMvcConfigurer)配置类中,重写addFormatters方法注入 参数绑定器
6.包装类型pojo参数绑定
前端界面:input输入框name="items.name"
springMVC的方法形参中 形参类型是ItemsQueryVO类型 必须和vo类型的items属性名.name属性名 一致,才可以参数绑定
7.数组绑定
前端界面:多个 input标签 type="checkbox" 的name="id" 收集到多个同名的请求参数
springMVC的方法形参中 形参的类型是数组 形参名字和name属性值 一致 才可以数组绑定
8.List绑定
前端界面: 多个input输入框 name = "itemsList[下标].属性名"
springMVC的方法形参中 形参类型是ItemsQueryVO类型 必须和vo类型的 List<Items>itemsList属性名一致 ,才可以参数绑定
三.自定义校验器
1.引入hibernate validator的校验框架依赖
2.在resources目录下 新建自定义校验提示信息属性文件 例如 CustomValidationMessages.properties
3.在springMVC配置类中:
3.1 配置提示信息属性文件ReloadableResourceBundleMessageSource @Bean
3.2 配置自定义校验器LocalValidatorFactoryBean 指定校验器提供方,指定校验信息文件 @Bean
3.3 重写getValidator方法中,注册校验器到springMVC中
4.在实体类pojo中,使用注解@NotNull等 添加校验规则
5.在controller类的方法形参中,
5.1 需要校验Items属性内容是否合格 形参之前添加注解@Validated
5.2 需要在校验形参后面,必须紧跟BindingResult result参数 可以通过该参数获取校验结果
6.分组校验
6.1 创建校验的分组 是空接口
6.2 在pojo类中 指定校验规则时,划分分组
@NotNull(message = "{items.createtime.msg}",groups = {ValidatorGroup2.class})
6.3 在controller类的方法形参中,通过@Validated(value = {ValidatorGroup1.class}) Items items
确保只生效校验分组1
四.数据回显
数据回显:
1.model中封装数据 model.addAttribute("key",value)
前端界面:使用${key}实现回显
2.springMVC默认回显机制,要求input的value属性的key和 类名首字母小写一致
pojo数据传入controller方法后,springmvc自动将pojo数据放到request域,key等于pojo类型(首字母小写)
前端界面:使用${pojo类型(首字母小写)}实现回显
五.全局异常处理器
1.自定义异常基类 extends Exception LoginException extends 自定义异常基类 2.自定义全局异常处理器 implements HandlerExceptionResolver 2.1 重写resolveException方法,自定义处理异常的逻辑 3.在springMVC配置类: 3.1 ioc容器中注入 自定义全局异常处理器 @Bean 3.2 重写configureHandlerExceptionResolvers方法,springMVC中注册自定义全局异常处理器 4.触发异常,可以在controller,service,dao等throws抛出异常,将来由springMVC前端控制器统一处理
##六.使用restFul风格
1.前提:
1.1 在WebInitializer配置类中,设置请求路径为/
servletRegistration.addMapping("/");
1.2 在SpringMVC配置类中,设置对静态资源放行 重写configureDefaultServletHandling方法
2.若需要支持文件上传功能,在springMVC配置类中 配置多部件解析器支持post put请求
multipartResolver.setSupportedMethods("POST","PUT");
七.mybatis分页插件
1.在pom.xml添加pageHelper依赖 2.在Mybatis配置类中,会话工厂中 加入分页插件 3.在service业务中,真正查询之前,PageHelper.startPage(当前页码,每页展示数量) 4.在controller中,在查询列表之后,封装PageInfo对象 PageInfo<User> pageInfo = new PageInfo<User>(列表数据);
八.thymeleaf整合
1.在pom.xml中添加依赖 2.新建ThymeleafTemplateConfig配置类:配置视图解析器,模板引擎,模板解析器 3.在页面中使用thyemeleaf表达式 ,先导入命名空间,再使用th:text th:if th:each...
九.文件上传
1.在pom.xml中添加依赖 commons-upload commons-io 2.在SpringMVCConfig配置类中,配置多部件解析器CommonsMultipartResolver 支持post put请求 3.在页面中,表单中指定enctype="multipart/form-data",且input输入框类型是type="file" name="file" 4.在controller类中,形参列表MultipartFile file 接受文件的请求参数
十.配置拦截器
1.自定义拦截器 implements HandlerInterceptor 重写preHandle方法 2.在springMVC配置类中,重写addInterceptors方法 注册自定义拦截器和拦截路径
451

被折叠的 条评论
为什么被折叠?



