icql

web集成spring容器

//web.xml配置 spring监听器,初始化spring容器
<context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>classpath:spring/applicationContext-*.xml</param-value>
</context-param>
<listener>
	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

springmvc执行原理

使用细节

//bean
@Controller

//url映射
@RequestMapping
@GetMaping
@PostMaping
@PutMapping
@DeleteMapping

//参数
@PathVariable 路径
@RequestParam 单个参数application/x-www-form-urlencoded
@RequestBody 对象application/json / application/xml / application/x-www-form-urlencoded

@RequestHeader
@CookieValue
//@ModelAttribute 不常用

//参数没有注解时,
若要绑定的对象是简单类型 调用@RequestParam来处理的
若要绑定的对象是复杂类型 调用@ModelAttribute来处理的

//文件上传
<!-- 定义文件上传解析器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	<!-- 设定默认编码 -->
	<property name="defaultEncoding" value="UTF-8"></property>
	<!-- 设定文件上传的最大值500MB,500*1024*1024 -->
	<property name="maxUploadSize" value="524288000"></property>
</bean>
//方法参数
MultipartFile file

//转发和重定向
return "forward/user/list";
return "redirect/user/list";

//Hibernate Validator
//Hibernate Validator 是 Bean Validation 的参考实现,提供了JSR 303规范中所有内置constraint的实现,除此之外还有一些附加的constraint。在日常开发中,Hibernate Validator经常用来验证bean的字段,基于注解,方便快捷高效。

//Bean Validation 中内置的 constraint
@Null	被注释的元素必须为 null
@NotNull	被注释的元素必须不为 null
@AssertTrue	被注释的元素必须为 true
@AssertFalse	被注释的元素必须为 false
@Min(value)	被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value)	被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value)	被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value)	被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max, min)	被注释的元素的大小必须在指定的范围内
@Digits (integer, fraction)	被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past	被注释的元素必须是一个过去的日期
@Future	被注释的元素必须是一个将来的日期
@Pattern(value)	被注释的元素必须符合指定的正则表达式

//Hibernate Validator 附加的 constraint
@Email	被注释的元素必须是电子邮箱地址
@Length(min=, max=)	被注释的字符串的大小必须在指定的范围内
@NotEmpty	被注释的字符串的必须非空
@Range(min=, max=)	被注释的元素必须在合适的范围内


//springmvc中如何使用
//校验单个参数
注意:一定要在Controller上加注解 @Validated,方法的参数直接使用上述注解匹配
@GetMapping("/test")
public void test(@Length(max = 5, message = "参数值长度最大为5") String test1, @Length(max = 4, message = "参数值长度最大为4") String test2) {}

//校验对象
@PostMapping("/test")
public String test(@Validated @RequestBody User user) {}

springmvc源码分析

参考