(三)Controller接口控制器详解(二)
一、AbstractController(簡單控制器)
AbstractController使用方法:
首先讓我們使用AbstractController來重寫第二章的HelloWorldController:
?
public class HelloWorldController extends AbstractController {@Overrideprotected ModelAndView handleRequestInternal(HttpServletRequest req, HttpServletResponse resp) throws Exception {//1、收集參數(shù)//2、綁定參數(shù)到命令對象//3、調(diào)用業(yè)務(wù)對象//4、選擇下一個頁面ModelAndView mv = new ModelAndView();//添加模型數(shù)據(jù) 可以是任意的POJO對象mv.addObject("message", "Hello World!");//設(shè)置邏輯視圖名,視圖解析器會根據(jù)該名字解析到具體的視圖頁面mv.setViewName("hello");return mv;} }?
<!— 在chapter4-servlet.xml配置處理器 --> <bean name="/hello" class="cn.javass.chapter4.web.controller.HelloWorldController"/>?
從如上代碼我們可以看出:
1、繼承AbstractController
2、實(shí)現(xiàn)handleRequestInternal方法即可。
?
二、ServletForwardingController
將接收到的請求轉(zhuǎn)發(fā)到一個命名的servlet
三、BaseCommandController
命令控制器通用基類,提供了以下功能支持:
1、數(shù)據(jù)綁定:請求參數(shù)綁定到一個command object(命令對象,非GoF里的命令設(shè)計(jì)模式),這里的命令對象是指綁定請求參數(shù)的任何POJO對象;
?? commandClass:表示命令對象實(shí)現(xiàn)類,如UserModel;
?? commandName:表示放入請求的命令對象名字(默認(rèn)command),request.setAttribute(commandName, commandObject);
?
2、驗(yàn)證功能:提供Validator注冊功能,注冊的驗(yàn)證器會驗(yàn)證命令對象屬性數(shù)據(jù)是否合法;
?? validators:通過該屬性注入驗(yàn)證器,驗(yàn)證器用來驗(yàn)證命令對象屬性是否合法;
?
該抽象類沒有沒有提供流程功能,只是提供了一些公共的功能,實(shí)際使用時需要使用它的子類。
四、AbstractCommandController
命令控制器之一,可以實(shí)現(xiàn)該控制器來創(chuàng)建命令控制器,該控制器能把自動封裝請求參數(shù)到一個命令對象,而且提供了驗(yàn)證功能。
用于支持帶步驟的表單提交的命令控制器基類,使用該控制器可以完成:
1、定義表單處理(表單的渲染),并從控制器獲取命令對象構(gòu)建表單;
2、提交表單處理,當(dāng)用戶提交表單內(nèi)容后,AbstractFormController可以將用戶請求的數(shù)據(jù)綁定到命令對象,并可以驗(yàn)證表單內(nèi)容、對命令對象進(jìn)行處理。
?
五、AbstractFormController
用于支持帶步驟的表單提交的命令控制器基類,使用該控制器可以完成:
1、定義表單處理(表單的渲染),并從控制器獲取命令對象構(gòu)建表單;
2、提交表單處理,當(dāng)用戶提交表單內(nèi)容后,AbstractFormController可以將用戶請求的數(shù)據(jù)綁定到命令對象,并可以驗(yàn)證表單內(nèi)容、對命令對象進(jìn)行處理。
?
六、SimpleFormController
提供了更好的兩步表單支持:
1、準(zhǔn)備要展示的數(shù)據(jù),并到表單展示頁面;
2、提交數(shù)據(jù)數(shù)據(jù)進(jìn)行處理。
?
七、CancellableFormController
?
?1、表單展示:和SimpleFormController一樣;
2、表單取消:和SimpleFormController一樣;
3、表單成功提交:取消功能處理方法為:onCancel(Object command),而且默認(rèn)返回cancelView屬性指定的邏輯視圖名。
???那如何判斷是取消呢?如果請求中有參數(shù)名為“_cancel”的參數(shù),則表示表單取消。也可以通過cancelParamKey來修改參數(shù)名(如“_cancel.x”等)。
?
?
AbstractController
轉(zhuǎn)載于:https://www.cnblogs.com/yuexiaoyun/p/9461123.html
總結(jié)
以上是生活随笔為你收集整理的(三)Controller接口控制器详解(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript 开发的45个经典技
- 下一篇: cordova-config.xml配置