Spring MVC
DispatcherServlet(控制器的核心调度器)
- dispatcher(调度员)是Spring MVC的入口,任何请求都要通过这个Servlet
发送到相应的处理器中处理,携带的信息叫Model,返回的视图叫View。返回的视图会通过视图解析器匹配一个完整的视图。
Servlet3.0
/**
*
* {@link javax.servlet.ServletContainerInitializer} 代替web.xml
* {@link javax.servlet.annotation.HandlesTypes} 在 {@link org.springframework.web.SpringServletContainerInitializer}中
* 注解了{@link org.springframework.web.WebApplicationInitializer}
* AbstractAnnotationConfigDispatcherServletInitializer 继承 {@link org.springframework.web.WebApplicationInitializer}
* @author wuzhe1159@163.com
* @date 2018/11/11 10:29
*/
public class SpitterWebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{RootConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{WebConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
}
Spring MVC 请求参数
- 查询参数
- 表单参数
- 路径变量 @PathVariable(‘param’) 当方法的参数与占位符的名称相同,可以去掉@PathVariable的value属性
Spring MVC 校验表单
- 现在基本都是传入Json字符串来解析得到相应的对象,很少在实体上直接校验数据,但是在使用这个校验的时候,必须引入hibernate的实现,javax中的只是规定了校验的接口,并没有实际的实现
graph LR
javax.validation.constraints-->|实现|hibernate.validator.constraints
//需要校验的实体类
@Data
public class Spitter {
private Long id;
@NotNull
@Size(min=5, max=16)
private String username;
@NotNull
@Size(min=5, max=25)
private String password;
@NotNull
@Size(min=2, max=30)
private String firstName;
}
/**
*添加注释@Valid 和参数Errors,可以捕捉到参数错误
*<sf:error>可以在页面上显示
*/
@RequestMapping(value = "/register",method = RequestMethod.POST)
public String processRegistration(@Valid Spitter spitter, Errors errors){
if (errors.hasErrors()){
return "registerForm";
}
spitterRepository.save(spitter);
return "redirect:/spitter/"+spitter.getUsername();
}
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="sf" %>