Day04:开始编写Web程序

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注解的参数后面
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容