1、Spring MVC基础
1.1 请求追踪
- 用户点击链接或提交表单:请求开始
- step1:Spring的DispatcherServlet前端控制器,将请求发送给spring mvc控制器(controller)【通过处理器映射
handler mapping
确定走向哪个控制器】 - step2:控制器处理请求,请求卸下负载并等待返回信息
- step3:控制器对model加工打包,返回模型和视图名给dispatcherservlet
- step4:dispatcherservlet使用视图解析器
view resolver
根据视图名匹配视图实现 - step5:视图使用模型数据渲染输出并传递给客户端
1.2 配置dispatcherservlet
继承 AbstractAnnotationConfigDispatcherServletInitializer getServletMappings() //映射 getServletConfigClasses() //指定配置类
1.3 测试
- 将controller忽略注解,当成pojo来测试
- 按照控制器的方法测试:
TestController controller = new TestController(); MockMvc mockMvc = standaloneSetup(controller).build(); mockMvc.perform(get("/")).addExpect(view().name("home"));//对“/”进行get请求并预期的home视图
1.4 查询参数
/spittles/show?spittle_id=12345
从面向资源的角度来看这并不理想,在理想的情况下,要识别的资源应该通过URL路径进行标示,而不是通过查询参数,相比来说少了参数解析,性能要高
@RequestMapping(value="/{spittleId}", method=RequestMethod.GET) public String spittle(@PathVariable("spittleId") long spittleId, Model model) { //**** }
2
2.1 导向
- redirect:重定向规则
- forward:前往指定URL,而不是重定向
2.2 校验
Spring对java的校验支持:Java Validation API, JSR-303
- javax.validation.constraints
@AssertFalse:必须是Boolean:false @AssertTrue:Boolean:true @DecimalMax:数字,小于等于给定BigDecimalString @DecimalMin:数字,大于等于给定的BigDecimalString值 @Digits:数字,指定的位数 @Futrue:将来的日期 @Max:数字,小于等于该值 @Min:数字,大于等于该值 @NotNull:不能为null @Null:必须为null @Past:已过去的日期 @Pattern:正则表达 @Size:String/集合/数组:长度符合范围
- 应用校验:
public String processRegist(@Valid User user,Errors errors){ //errors.hasErrors()判读是否出错 }
errors参数紧跟@Valid注解的参数后面
网友评论