第二部分 Web 中的 Spring
构建 Spring Web 应用程序 #
Spring MVC 起步 #
跟踪 Spring MVC 的请求 #
搭建 Spring MVC #
配置 DispatcherServlet #
- 通过 AbstractAnnotationConfigDispatcherServletInitializer 配置 DispatcherServlet 需要Servlet3.0,如Tomcat7或更高版本 (替代了web.xml)
启用 Spring MVC #
- 
配置类 - 配置视图解析器 InternalResourceViewResolver ( 在视图名称上添加前缀后缀)
- 启用组件扫描
 
编写基本的控制器 #
- @Controller
- @RequestMapping(value="/", method=GET)
- 处理器方法上的@RequestMapping注解是对类级别上的@RequestMapping的声明进行补充
- @ResquestMapping("/")
- @ResquestMapping({"/", "/homepage"})
接受请求的输入 #
- 
SpringMVC允许以多种方式将客户端中的数据传送到控制器的处理器方法中 - 查询参数(Query Parameter)
- 表单参数(Form Paramter)
- 路径参数(Path Variable)
 
处理查询参数 #
    @RequestMapping(method = RequestMethod.GET)
    public List spittles(
            @RequestParam(value = "max", defaultValue = MAX_LONG_AS_STRING) long max,
            @RequestParam(value = "count", defaultValue = "20") int count
    ) {
        return spittleRepository.findSpittles(Long.MAX_VALUE, 20);
    } 通过路径参数接收输入 #
    @RequestMapping(value = "/{spittleId}", method = RequestMethod.GET)
    public String spittle(
            @PathVariable("spittleId") long spittleId, Model model
    ) {
        model.addAttribute(spittleRepository, findOne(spittleId));
        return "spittle";
    }
    // 因为方法的参数名与占位符的名称相同,可以去掉@PathVariable中的value属性
    @RequestMapping(value = "/{spittleId}", method = RequestMethod.GET)
    public String spittle(
            @PathVariable long spittleId, Model model
    ) {
        model.addAttribute(spittleRepository, findOne(spittleId));
        return "spittle";
    }处理表单 #
- 
当InternalResourceViewResolver看到的视图格式是: - "Redirect:/spitter/" + spitter.getUsername();
- "forward:/..."
 
- 
校验表单 - 
注解 ( javax.validation.constraints ) - @NotNull
- @Size(min=5, max=25)
 
- 
过滤 public String processRegistration( @Valid Spitter spitter, Errors errors ) { if(errors.hasErrors()) { return ; } }
 
- 
渲染Web视图 #
- Previous: JSP&Servlet 学习笔记
- Next: 第一部分 Spring 的核心