(三)Controller接口控制器詳解(二)

一、AbstractController(簡單控制器)

AbstractController使用方法:

首先讓我們使用AbstractController來重寫第二章的HelloWorldController:

?

public class HelloWorldController extends AbstractController {@Overrideprotected ModelAndView handleRequestInternal(HttpServletRequest req, HttpServletResponse resp) throws Exception {//1、收集參數//2、綁定參數到命令對象//3、調用業務對象//4、選擇下一個頁面ModelAndView mv = new ModelAndView();//添加模型數據 可以是任意的POJO對象mv.addObject("message", "Hello World!");//設置邏輯視圖名,視圖解析器會根據該名字解析到具體的視圖頁面mv.setViewName("hello");return mv;}
}

?

<!— 在chapter4-servlet.xml配置處理器 -->
<bean name="/hello" class="cn.javass.chapter4.web.controller.HelloWorldController"/>

?

從如上代碼我們可以看出:

1、繼承AbstractController

2、實現handleRequestInternal方法即可。

?

二、ServletForwardingController

將接收到的請求轉發到一個命名的servlet

三、BaseCommandController

命令控制器通用基類,提供了以下功能支持:

1、數據綁定:請求參數綁定到一個command object(命令對象,非GoF里的命令設計模式),這里的命令對象是指綁定請求參數的任何POJO對象;

?? commandClass:表示命令對象實現類,如UserModel;

?? commandName:表示放入請求的命令對象名字(默認command),request.setAttribute(commandName, commandObject);

?

2、驗證功能:提供Validator注冊功能,注冊的驗證器會驗證命令對象屬性數據是否合法;

?? validators:通過該屬性注入驗證器,驗證器用來驗證命令對象屬性是否合法;

?

該抽象類沒有沒有提供流程功能,只是提供了一些公共的功能,實際使用時需要使用它的子類。

四、AbstractCommandController

命令控制器之一,可以實現該控制器來創建命令控制器,該控制器能把自動封裝請求參數到一個命令對象,而且提供了驗證功能。

用于支持帶步驟的表單提交的命令控制器基類,使用該控制器可以完成:

1、定義表單處理(表單的渲染),并從控制器獲取命令對象構建表單;

2、提交表單處理,當用戶提交表單內容后,AbstractFormController可以將用戶請求的數據綁定到命令對象,并可以驗證表單內容、對命令對象進行處理。

?

五、AbstractFormController

用于支持帶步驟的表單提交的命令控制器基類,使用該控制器可以完成:

1、定義表單處理(表單的渲染),并從控制器獲取命令對象構建表單;

2、提交表單處理,當用戶提交表單內容后,AbstractFormController可以將用戶請求的數據綁定到命令對象,并可以驗證表單內容、對命令對象進行處理。

?

六、SimpleFormController

提供了更好的兩步表單支持:

1、準備要展示的數據,并到表單展示頁面;

2、提交數據數據進行處理。

?

七、CancellableFormController

?

?1、表單展示:和SimpleFormController一樣;

2、表單取消:和SimpleFormController一樣;

3、表單成功提交:取消功能處理方法為:onCancel(Object command),而且默認返回cancelView屬性指定的邏輯視圖名。

???那如何判斷是取消呢?如果請求中有參數名為“_cancel”的參數,則表示表單取消。也可以通過cancelParamKey來修改參數名(如“_cancel.x”等)。

?

?

AbstractController

轉載于:https://www.cnblogs.com/yuexiaoyun/p/9461123.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282523.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282523.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282523.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[BZOJ]1095 Hide捉迷藏(ZJOI2007)

一道神題&#xff0c;兩種神做法。 Description 捉迷藏 Jiajia和Wind是一對恩愛的夫妻&#xff0c;并且他們有很多孩子。某天&#xff0c;Jiajia、Wind和孩子們決定在家里玩捉迷藏游戲。他們的家很大且構造很奇特&#xff0c;由N個屋子和N-1條雙向走廊組成&#xff0c;這N-1條走…

Spring4-自動裝配Beans-通過注解@Autowired在構造方法上

1.創建Maven項目,項目名稱springdemo19,如圖所示2.配置Maven,修改項目中的pom.xml文件,修改內容如下<project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://mave…

15個開源的工業軟件

出品 | OSC開源社區&#xff08;ID&#xff1a;oschina2013)不同的工業流程&#xff0c;需要不同的工業軟件。此前&#xff0c;我們已經介紹了面向研發設計環節的開源軟件&#xff08;詳情查看&#xff1a;20 個開源的工業設計軟件&#xff09;&#xff0c;今天就來介紹一下面向…

PHP開發中保證接口安全

模擬客戶端請求:<?php namespace Home\Controller; use Think\Controller;class ClientController extends Controller{const TOKEN API;//模擬前臺請求服務器api接口public function getDataFromServer(){//時間戳$timeStamp time();//隨機字符串$randomStr $this ->…

MySQL遠程訪問報錯解決

2019獨角獸企業重金招聘Python工程師標準>>> 我之前的一篇博客講了MySQL配置遠程訪問的方法&#xff0c;但是可能配置了賬戶以后還是不能訪問&#xff0c;這可能是防火墻的原因&#xff0c;在CentOS里&#xff0c;我們修改一下防火墻設置就可以了 1. 進入防火墻配置…

jssdk.php

/*** Created by PhpStorm.* Date: 17/8/19* Time: 下午2:24*/ class JSSDK {private $appId;private $appSecret;public function __construct($appId, $appSecret) {$this->appId $appId;$this->appSecret $appSecret;}public function getSignPackage() {$jsapiTick…

GNU/Linux與開源文化的那些人和事

一、計算機的發明 世上本無路&#xff0c;走的人多了&#xff0c;就有了路。世上本無計算機&#xff0c;琢磨的人多了……沒有計算機&#xff0c;一切無從談起。 三個人對計算機的發明功不可沒&#xff0c;居功至偉。阿蘭圖靈&#xff08;Alan Mathison Turing&#xff09;、阿…

PHP使用PHPMailer發送郵件

1. 首先下載phpmailer插件,并將插件復制到目錄下 下載地址: http://download.csdn.net/download/m_nanle_xiaobudiu/10261269 2. home/view/user/mail_chck.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><…

python學習記錄2

一、兩個模塊&#xff08;sys和os&#xff09; 1 #!/usr/bin/env python2 # _*_ coding: UTF-8 _*_3 # Author:taoke4 import sys5 print(sys.path)#打印環境變量6 print(sys.argv[0])#當前文件相對路徑,sys.argv是一個列表&#xff0c;第一個元素為程序本身的相對路徑&#xf…

cordova-config.xml配置應用圖標

1. <icon src"res/icon/ios/browser.png"/> 2.規格&#xff1a; iphone平臺一般要求3種規格的圖片&#xff1a;1x、2x、3x&#xff0c;也是就Icon.png、Icon2x.png、Icon3x.png. 注意&#xff1a;iOS所有圖標的圓角效果由系統生成&#xff0c;給到的圖標本身不…

將 Figma 設計轉換為 .NET MAUI Graphics 代碼

原文鏈接&#xff1a;https://github.com/jsuarezruiz/figma-to-maui-graphics原文作者&#xff1a;jsuarezruiz翻譯&#xff1a;沙漠盡頭的狼(谷歌翻譯加持)&#xff0c;翻譯別扭&#xff0c;建議直接閱讀原文使用FigmaSharp.Maui.Graphics將Figma設計轉換為 .NET MAUI Graphi…

Android之上下文context

Context&#xff0c;中文直譯為“上下文”&#xff0c;SDK中對其說明如下&#xff1a; 1、它描述的是一個應用程序環境的信息&#xff0c;即上下文。 2、該類是一個抽象(abstract class)類&#xff0c;Android提供了該抽象類的具體實現類。 3、通過它我們可以獲取應用程序的資…

論壇中,無限分類的原理

1.創建數據表 CREATE TABLE category( cat_id SMALLINT unsigned not null auto_increment comment 類別id, cat_name VARCHAR(30) not null default comment 類別名稱, par_id SMALLINT unsigned not null default 0 comment 類別父id, PRIMARY KEY (cat_id) )enginemyisam …

mooc- 基本程序設計方法week1,week2

學習了第一單元我們幾本可以寫出10行左右的代碼。 week1:python編程之基本方法 1、從計算機到程序設計語言&#xff1a; 理解計算機&#xff1a;計算機是能夠根據一組指令操作數據的機器。 功能性&#xff1a;可以進行數據計算 可編程性&#xff1a;根據一系列指令來執行 計算機…

Windows 11 的 2022 更新為每個人帶來了新的東西

Windows 網站發布博客&#xff0c;宣布今天在 190 多個國家/地區推出 Windows 11 2022 更新。微軟在過去一年中對 Windows 11 進行了非常大的改進&#xff0c;感覺每個月都有一次更新。對于之前的 Windows 11&#xff0c;相信很多人在使用過程中也遇到過或大或小的問題。而一部…

goaccess_nginx日志分析工具

在控制臺分析nginx日志goaccess -f b.log生成html文件分析nginx日志vi ~/.goacce***ctime-format %Tdate-format %d/%b/%Ylog-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"各參數詳解&#xff1a; man goaccess或Nginx Variable …

HTML5 Canvas 繪制六葉草

注意&#xff1a; context.arc(橫坐標,縱坐標,弧半徑,起始角度,終止角度,逆順時針);這個函數挺難用&#xff0c;主要原因是最后參數和角度的關系。不管文檔怎么說&#xff0c;按我的實際經驗&#xff0c;逆順時針false時&#xff0c;是逆時針旋轉&#xff1b;逆順時針true時&am…

tp框架中執行事務

function tran() {//定義事務成功失敗的標志$mark true;//1. 實例化模型$model D(student);//2. 開啟事務處理$model->startTrans();//3. ls減少2000$sql "update student set moneymoney-2000 where unamels";$result $model->execute($sql);//判斷sql執行…

哪些聽起來像段子一樣的故事?

杭州海底世界&#xff0c;一個小走廊兩邊都是各種爬行動物展覽。有兩只蜥蜴當時是這個樣子人還年輕&#xff0c;還比較猥瑣&#xff0c;看到一個趴在另一個身上就覺得在做什么羞羞的事。于是就拍下來&#xff0c;發到群里&#xff0c;然后說了句交配中。然后一天就光拍照&#…

Event 事件 - 基礎

事件驅動三要素 事件源&#xff1a;即觸發事件的元素 事件&#xff1a;被JavaScript檢測到的行為。例如&#xff1a; 鼠標點擊 鍵盤按鍵 選輸入框 事件處理函數&#xff1a;事件發生時要進行的操作&#xff0c;又叫做“事件句柄”或“事件監聽器” 事件分類&#xff1a; 鼠標事…