一、对原有controller分析
过程:
- 获取请求数据、封装
- 调用service处理业务请求
- 跳转到相应界面
问题:
controller中不止起控制作用,也做业务处理。
当业务复杂、数据多的时候不利于维护和开发、代码复用性不高。
二、解决思想:
抽取出controller过程中跳转到相应界面
部分,封装为核心控制器,将获取请求数据、封装
和具体调用service处理业务请求
交给相应的action处理。
在核心控制器中创建Action对象,调用其方法返回目标URI,然后在核心控制器中进行跳转处理。
三、实现过程中的问题:
核心控制器如何知道要创建哪一个Action对象
- 获取请求路径中的URI
例:http:localhost:8080/test/login.action
,获取到login
- 编写xml将login和LoginAction相对应起来。
- 在核心控制器中使用dom4j对xml解析,使用反射机制,创建LoginAction对象。
Action返回的URI固定,不便于维护修改
- 在Action中返回相应的标记(字符串,如”sucess“)。
- 编写xml将标记和要跳转的页面对应起来,并指定跳转方式。
- 在核心控制器中读取配置文件使用dom4j解析,根据返回值进行跳转。