一.@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方法 注册自定义拦截器和拦截路径