##5.1 请求在SpringMVC组件之间的流转
- 请求发送
- DispatcherServlet查询一个或多个HandlerMapping来确定请求的下一站。
- 按照HM查询结果,将请求转发到指定的Controller。
- Controller返回ModelAndView给DispatcherServlet。
- DispatcherServlet使用视图解析器ViewResolver将逻辑试图名匹配为一个特定的视图实现(一般是JSP)。
- 将Model传出给视图实现,渲染试图。
- 将渲染结果通过响应对象(Response)传递给客户端。
##5.2 使用Java类来搭建SpringMVC
传统配置SpringMVC是用web.xml+Spring配置文件结合的方式。
但是如果你的容器支持Servlet3.0(Tomcat7及以上)
|
|
|
|
|
|
Spring上下文的加载方式有两个,一个是使用SpringMVC的DispatcherServlet去加载(控制器、视图解析器、处理器映射器),另一个是用ContextLoaderListener加载(应用中的其他bean,例如Service、Dao)。
如果上程序所写,我们配置WebConfig类来加载SpringMVC需要的bean。配置RootConfig来加载剩余的bean。
##5.2 编写基本的控制器
@Controller其实是包含@Component注解的,二者的功能是相同的,但是为了更加清晰的区分不同的组件,使用@Controller来标识这是一个SpringMVC的组件。
@RequestMapping可以加载类上,也可以加载在方法上,有一下几种情况:
- 类有注解,方法有注解,那么HTTP访问路径为 http://IP:Port/Project/ControllerMapping/MethodMapping
- 类无注解,方法有注解 http://IP:Port/Project/MethodMapping
- 类有注解,方法无注解,那么只允许该Controller中只有一个Method,否则启动报错
我们一般使用方法1
|
|
创建一个jsp页面
|
|
使用Tomcat启动服务后,项目会根据SpittrWebInitializer配置的信息加载相关的配置文件。
以上构建了一个最简单的一个请求结果展示,那么如果我们需要给前台界面返回一些数据,怎么做?
修改控制器
|
|
创建JSP页面
|
|
##5.3 接受请求的输入
Controller中的方法接收参数的方式有很多
以分页请求为例。
Controller
|
|
JSP
|
|
##5.4 处理表单
我们模拟一个用户注册情景
用户通过浏览器请求得到一个注册页面,通过注册页面完成注册后自动跳转到个人信息页面。
Controller
|
|
注册表单信息
|
|
个人信息
|
|
Model
|
|
Dao
|
|
校验表单
注解 | 描述 |
---|---|
@AssertFalse | 所注解的元素必须是Boolean型,并且值为false |
@AssertTrue | 所注解的元素必须是Boolean型,并且值为true |
@DecimalMax | 必须是数字,且小于指定值 |
@DecimalMin | 必须是数字,且大于指定值 |
@Digits | 必须是数字,并且值必须有指定的位数 |
@Future | 必须是将来的一个日期 |
@Max | 必须是数字,且小于等于指定值 |
@Min | 必须是数字,且大于等于指定值 |
@NotNull | 值不能为null |
@Null | 值必须为null |
@Past | 必须是过去的一个日期 |
@Pattern | 值必须匹配给定的正则表达式 |
@Size | 值必须是String、集合、数组,并且长度必要符合给定的范围 |