控制器的三大任务:
1.获得和处理请求参数
2.调用模型
3.分派到视图
通用的控制器通常把这三个任务糅合在一起,使得servlet过于繁重。改进后的控制器对于这三大任务,分别有如下解决方案:
1.把获得和处理请求参数的任务交给另外一个单独的表单验证组件,由它获得表单参数,完成验证,处理错误模型,并创建一个对象标存参数值。
2.唔。。。我们不想把模型硬编码到控制器里,所以可以用声明的方式来完成,在我们自己的定制部署描述文件中列出一些模型,控制器可以读取这些模型,并且根据请求来决定要使用哪些模型。
3.以声明的方式,控制器就能从DD中区分要分派到哪个视图
以上其实就是Struts的解决方案,它的结构如下:
关键组件:
1.action servlet :又称为前端控制器,sturts会给你提供。每个应用只需要一个前端控制器。
2.action 对象:可以把他看作轻量级的servlet。一般地,用例中的一个活动对应一个动作。
3.表单bean : 对于应用中需要处理的任何HTML表单,都要为他写一个表单BEAN。他们都是java bean,有一个validate方法,容器会调用该方法,去处理验证和数据转换等。
4.struts-config。xml :需要在该文件中定义:
- 请求URL到action的映射
- action到表单bean的映射
- action到视图的映射
----------------------------------------------------------------------------------------------------------------------------------------------
*前端控制器简介:
front controller 是J2EE的一种模式,它的基本思想是:一个组件(通常是一个servlet,也可能是JSP)作为WEB应用表示层的控制点,所有的请求都通过该控制点,经过处理并分派到适当的地方。