面向請求的MVC框架的實現原理

2022-08-12 16:57:14 字數 1942 閱讀 7095

1)簡單過程:web客戶端傳送http請求到web server(tomcat)上,web server分析這個請求,並負責找到請求要找的servlet。在servlet裡處理這個請求。處理請求就是通過http request,獲取表單上的資料,並呼叫業務邏輯,在業務邏輯裡的方法中處理,處理完之後,返回相應的結果到這個servlet上,並把結果設定到request中,servlet還要負責轉向,選擇檢視(jsp),先轉向到web server,web server負責找到相應的檢視。在檢視裡,取得相應的資料,資料已經被放在request中,獲取資料之後,生成response給web server,最中web server把資料給瀏覽器即jsp頁面。

2)分層,最重要的一點就是分離了資料和顯示。mvc就是一種分層思想。m(model,模型):對應著業務邏輯層(action);v(view,檢視):對應著jsp頁面,負責顯示;c(controler,控制器):對應著servlet,負責得到表單資料,呼叫業務邏輯,負責轉向。mvc就是通過乙個類(通常是servlet)統一來截獲所有的請求,再呼叫業務邏輯進行處理,處理結束之後返回結果給這個類,這個類再負責轉向到顯示頁面。mvc有2種實現方式:面向請求驅動(struts,webwork)和面向事件驅動(jsf)。mvc是80年代末提出來的。

3)詳細過程:面向請求的mvc有乙個控制器(servlet),叫**控制器,負責把頁面中提交的請求截到,截獲的方式如下:

servlet的配置是在web.xml中,servlet可以截獲的url請求是通過/servlet/testservlet來配置的,/servlet/testservlet這樣的配置只能截獲這一次的url,要想截獲所有的url,可以修改這裡的匹配模式來實現。例如修改為*.do(這個可以自由選擇,只要匹配就可以),這樣所有.do的請求都可以被截獲到。當我們前台web頁面的form裡action="*.do"樣式的請求,都會被這個servlet截獲。例如我們的action="adduser.do",這個請求會被servlet截獲,截獲的方式如下:

string currenturi=request.getrequesturi();//獲取當前的全部uri

system.out.println(currenturi);//列印當前的uri

string path=currenturi.substring(currenturi.indexof("/", 1));//擷取*.do

system.out.println(path);//列印當前的uri

path=path.substring(0,path.indexof("."));//擷取*

system.out.println(path);//列印當前的uri

輸出的結果為:

/test_servlet/user/adduser.do

/user/adduser.do

/user/adduser

最後得到的「*「是我們需要的。業務邏輯層將根據這個決定呼叫那個函式進行處理。

截獲之後分發到相應的處理類(action)上,處理類是乙個實現了統一介面的類,並重寫他的execute方法,在方法裡根據不通的url分別實現不通的功能。

servlet將根據配置檔案找到相應的處理類,配置方式如下:

//success="/add_success.jsp"表示新增成功了轉向到哪個頁面

這樣當請求被擷取之後,就到這個配置檔案裡找相應的action,並處理。當有新的業務時,只需要寫action,然後在配置檔案裡配置就可以了。

4)struts對mvc的實現:

當乙個請求過來的時候,到達actionservlet,通過struts-config.xml找到相應的action,同時把表單上的所有資料放到actionform裡,呼叫action時,把actionform也傳過去,在action裡呼叫model層進行處理,呼叫完之後,返回乙個actionforward物件,返回給actionservlet,actionservlet解析actionforward,根據actionforward中的資訊完成轉向。

mvc框架 請求到響應的過程。

mvc框架大致開發步驟 1 在web.xml檔案中定義 或者servlet,這一步相當於就是把框架帶進應用來,配置了才能帶她玩。2 定義jsp頁面來搞請求資料,用來傳送請求,post資料的話需要,get的話就不用 3 定義action,這個就是mvc中的c了,相當於php中的controller,可...

MVC框架的運用

mvc全名是model view controller,是模型 model 檢視 view 控制器 controller 的縮寫,一種軟體設計典範,用一種業務邏輯 資料 介面顯示分離的方法組織 將業務邏輯聚集到乙個部件裡面,在改進和個性化定製介面及使用者互動的同時,不需要重新編寫業務邏輯。其中m層處...

實現自己的MVC框架 php 1

從封閉的大學出來,重新接觸到著時時都在變化的社會的時候,不禁流下了眼淚,同時站在原地感嘆著這世界。從哥哥那裡聽說mode2和mvc的概念,到開始看mvc的文章,又到現在的想法,我又感覺到了久違的熱情,呵呵。在了解到mvc模型的可行性後,我打算將mvc應用於自己的畢業設計 web交易平台 這本身就是個...