




已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
MVC三層架構在各框架中的特征(注:為了展示筆記的完整性,建議用web版式打開觀看,效果更佳。)1. 基于web開發(fā)中最原始的jsp+Servlet 圖形化理解jsp+servlet結構: Server Client Web容器請求 Service(impl) 響應view Servlet1 Jsp1 Jsp3DataBase Dao(impl) Servlet2 Servlet3web.xml Jsp21.從結構上分析jsp+servlet圖解原理: 在基于mvc設計模式下的最原始的jsp+Servlet框架,在某種程度上是不能夠達到mvc最直觀的體現(xiàn)。當客戶端發(fā)送請求到服務器時,服務器會將從客戶端接收到的信息通過封裝技術進行解析,在交給web容器,web容器會通過一篇web.xml的配置文件去找與之相匹配的servlet,此時servlet會開啟一個線程,只要是符合web.xml中所配置的某一個servlet時,該servelt就會啟動,然后servlet在去調用service或者service的接口實現(xiàn)類,service(impl)在去調用dao(impl),dao通過從數(shù)據(jù)庫(Database)那獲取到數(shù)據(jù),在封裝到model實體類中去。Servlet在完成這一系類的動作后,最終將為我們返回一個jsp頁面,最后該頁面在返回到客戶端展示給客戶。2. 從web.xml配置上: TextSerevlet com.lh.serivlet.UserSerivlet TextSerevlet /accessServlet 注:需要用到的每一篇servlet都要寫入它的配置文件。Web.xml的配置量大,繁雜。從性能優(yōu)異的角度考慮,它的運行性能是最快的,但是開發(fā)性能就很有難度。3. 控制器:Jsp+servlet的控制器是:工程中的每一個xxxServlet就充當一個控制器,但是必須去extends HttpServlet,并重寫public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException doPost(request, response);public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException 4. 作用域對象ServletContext(上下文),也叫全局的作用域對象。Session(會話)服務器的一次會話中或者服務器超時。Request(請求)在一次請求的過程中。Respones(響應)5. 數(shù)據(jù)綁定:沒有,只能通過數(shù)組去獲取頁面的數(shù)據(jù)。6. 類型轉換:將jsp頁面的數(shù)據(jù)轉換為String類型。也可以是基本數(shù)據(jù)類型。但是要進行強制轉換。7. 有效性驗證:可以在某一個需要用到Servlet的類中用java代碼進行驗證。也可以在jsp頁面書寫ajax代碼進行驗證或者是定義function()函數(shù),在函數(shù)中用正則表達式加以判斷。8. 操作業(yè)務層對象調業(yè)務方法:在某一個XxxServlet中extends HttpServlet并重寫doPost()和doGet()方法,我們只需在doGet()或者doPost()中用request.getParameter()方法來得到頁面的數(shù)據(jù)。如果我們要操作到業(yè)務層我們只需在當前的這個類中實例化出業(yè)務層的類,即XxxService dao = new XxxServiceImpl();然后獲取實體Bean對象中的屬性。最后在我們需要用到數(shù)據(jù)訪問層的哪一個具體的業(yè)務實現(xiàn)方法就用實例化出的dao調用所需方法即可。 9. 返回:可以返回對象,也可以返回具體要跳轉的哪個頁面。10. 在js頁面做顯示:EL表達式,JSP腳本表達式11. 標簽:HTML標簽,JSP自定義標記庫,JST L標準標記庫。12. 文件上傳:頁面需要怎樣獲??? 服務器怎么獲得?1.必須導入文件上傳的jar包。2.13. 過濾器:我們自己定義的一個類XxxFilter 必須implements Filter接口,并實現(xiàn)它的三個方法,destroy(),doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException ,init(FilterConfig arg0)。在doFilter()中調用chain.doFilter(request, response)方法,表示將請求交給下一個組件。2. 基于web開發(fā)中的Struts1框架結構圖 Struts-congif.xml Servlet ActionServlet(中央核心控制器) Action 模型 JavaBean EJBWeb容器 Client Action Action FormBean web.xml Jsp(視圖)1. 從結構上分析Struts1圖解原理: 客戶端發(fā)送請求到服務器,服務器將收到的信息傳給web容器,這時,web容器會通過到web.xml配置文件中去查找那篇符合命名規(guī)范的action屬性中的*.do,在交給ActionServlet(中央核心控制器),通過該配置,web容器將信息傳給具體的某一個XxxAction,該XxxAction會繼承Action,并重寫它的public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception 方法,同時,我們可以在該XxxAction中去調用JavaBean中的實體對象。但是,需要注意的是,在ActionServlet到Action這一過程中,我們是通過Form組件技術來對jsp頁面的信息來進行了一次封裝,達到了前端頁面(jsp)和后臺的實體Bean對象之間的一次數(shù)據(jù)的綁定。最后再是到Struts-config.xml文件中進行進行配置,通過正確的配置找到所需的jsp.2從web.xml配置上: action org.apache.struts.action.ActionServlet config /WEB-INF/struts-lx.xml,/WEB-INF/struts-zh.xml !- 子配置文件,param-name的值只能以config/開頭 config/m1 /WEB-INF/struts-zh.xml - debug 3 detail 3 0 action *.do CharsetFiltercom.lovo.struts.filter.CharsetFilterencodingutf-8ignoretrueCharsetFilter*.doCharsetFilter*.jsp index.jsp 注:從上面的配置中我們可以看出,servlet的配置是必不可少的。3.控制器:ActionServlet是struts1的中央核心控制器,它在web.xml中配置成自動啟動的Servlet,在啟動時中央核心控制器會讀取配置文件(struts-config.xml)的配置信息,為struts中不同的模塊初始化相應的對象。4.作用域對象:5. 數(shù)據(jù)綁定:6. 類型轉換:LoginForm loginF = (LoginForm)form;7. 有效性驗證:驗證框架,不能重寫Validate方法。也可以自定義驗證規(guī)則,但是必須做配置。8. 操作業(yè)務層對象調業(yè)務方法:9. 返回:Action將業(yè)務處理的不同結果返回一個目標響應對象給中央核心控制器,或者返回一個頁面mapping.findForward(success)10. 在js頁面做顯示:EL表達式,自定義標簽庫,直接在jsp頁面上寫java代碼。11. 標簽: Html標簽 Bean標簽 Logic標簽 :生成表單中的文本輸入項:輸出bean的屬性:比較變量是否等于指定的值 :生成表單中的密碼輸入項:得到集合類型對象的元素個數(shù):比較變量是否不等于指定的值 : 生成用戶請求的隱含表單項:創(chuàng)建和復制bean標記為:比較變量是否小于指定的值 : 生成用戶請求的提交按鈕:判斷特定的對象是否等于指定字符串:判斷特定的對象是否不存在:比較變量是否等于指定的值 : 生成用戶請求的重置按鈕 12. 文件上傳:13. 過濾器: Client 3.基于web開發(fā)中Struts2框架的結構圖: HttpServletRequest ActionContextCleanUp Other Filters(Site Meth, etc) FilterDispatcher(Struts2中的中央核心控制器) ActionMapper Interceptor1ActionInvocation ActionPorxy Interceptor2 Tag Subsystem (html) Interceptor3ConfigurationManager Action Template(jsp,freeVarter,etc) Result Interceptor3 Struts.xml Interceptor2 HttpServlerResponse Interceptor31. 從結構上分析Struts2圖解原理: Struts2的思想是基于JOPO(簡單的老的Java對象)的一種新思想而產生的。一度影響了重量級的容器。它的實現(xiàn)是靠用簡單的javabean對象去完成各種復雜的功能。我們也可以把這一實現(xiàn)的過程稱為JOPO。在Struts2中是沒有容器的。當客戶端發(fā)送一個請求時,在服務器上會經(jīng)過層層過濾器,最后到達FilterDispatcher(Struts2中的中央核心控制器),中央核心控制器在通過層層的攔截器去找相應的Action,最后Action返給我們一個所訪問的頁面,由于在Struts2中的攔截器是上下文相互環(huán)繞的,所以,在當Action中的Resulet返給我們一個頁面的同時還會在次進行后期的攔截器處理,就這樣一層層的攔截,直到將最終所取得的信息傳給HttpServletResponse,在接著就是HttpServletResponse會將得到的信息響應給HttpServletRequest.但在這個響應的過程中也再次經(jīng)過了過濾器的過濾。直到信息完整的到達HttpServletRequest。2從web.xml配置上: struts2org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* index.jsp3.控制器:核心控制器:FilterDispatcher,在web應用中負責攔截所有的用戶請求,如果用戶的請求以 .ation結尾,則該請求被傳入到struts2框架處理。業(yè)務控制器: Action(在struts2中起作用的實際上不是用戶自定義的Action,而是系統(tǒng)自動生成的action代理,但該代理是以用戶自定義的action為目標的)4. 作用域對象:有前面的struts1中我們可以從Action的execute方法中將請求和響應當做參數(shù)傳遞給了Action,但是在Struts2中我們會發(fā)現(xiàn)Action的execute方法是沒有任何的參數(shù),所以也就無法得到作用域對象。那么,Struts2又是如何得到作用域對象的呢?分析:當Struts2的過濾器啟動的時候,首先就會初始化一個叫做ServletActionContext的類。它掌管著所有的作用域對象。代碼展示如下:import org.apache.struts2.ServletActionContext;public class ContextAction implements Action public String execute() throws Exception /獲得請求 HttpServletRequest request = ServletActionContext.getRequest(); /獲得會話 HttpSession session = request.getSession(); /獲得上下文對象 ServletContext application = ServletActionContext.getServletContext(); 5. 數(shù)據(jù)綁定:6. 類型轉換:7. 有效性驗證:驗證框架8. 操作業(yè)務層對象調業(yè)務方法:9. 返回:10. 在js頁面做顯示:OGNL11. 標簽:OGNL表達式、EL表達式、Struts2框架自身提供的標簽庫、html標簽。12. 文件上傳:13.過濾器:4. 基于web開發(fā)中springMVC框架的結構圖: HandlerMappingSpring-servlet.xml Browser DispatcherServlet Controller XxxServlet ModelAndView ViewResolver ModelView(jsp,pdf,excel,josn.)1. 從結構上分析springMVC圖解原理: springMVC的出現(xiàn)是在struts2的發(fā)展上而興起的。SpringMVC的設計思想被評委教科書式的框架,它是最能體現(xiàn)出MVC設計模式中的分離與互用的極致。所以,基于springMVC的原理我們是非常有必要進行掌握并深入理解的。我們必須清楚的了解Spring的MVC框架主要由DispatcherServlet、處理器映射、處理器、視圖解析器、視圖組成。瀏覽器發(fā)送請求到spring容器,spring容器通過在web.xml配置文件中找到中央核心控制器(DispatcherServlet)的url配置,并且在web.xml中還必須要配置一個初始化的加載參數(shù)(詳見下面2),當DispatcherServlet接收到一個請求后,它會通過請求的HandlerMapping處理映射路徑去找到在Spring-servlet.xml配置文件中的一個處理器(Controller),該處理器會找到具體的某一個Xxxservlet,Xxxservlet會將所獲取到的信息間接的傳給DispatcherServlet,在這一個過程中會有一個ModelAndView的對象產生(體現(xiàn)出了SpringMVC分離的思想)。當DispatcherServlet得到這個ModelAndView后會將信息傳給ViewResolver,這時ViewResolver會將符合格式的view返回出來,最后再將符合格式的數(shù)據(jù)響應到瀏覽器端。2從web.xml配置上: mySpringorg.springframework.web.servlet.DispatcherServletcontextConfigLocation/WEB-INF/classes/mySpring-servlet.xml1mySpring*.springindex.jsp 注:參數(shù)的配置是必不可少的。必須是在/WEB-INF目錄下的classes子目錄下的我們自己定義的哪一篇xxx-servlet.xml文件。3. 控制器:DispatcherServlet,該控制的作用是將請求轉發(fā)到相應的應用控制器。 4. 作用域對象:在SpringMVC中不推薦使用。5. 數(shù)據(jù)綁定:springMVC支持的數(shù)據(jù)綁定有6種,1.有基本數(shù)據(jù)類型綁定(String和String)。2.簡單對象類型綁定(類似與struts中的ActionForm)。3.List類型綁定(必須創(chuàng)建ArrayList對象來進行綁定)。4.Set類型綁定(必須在Set對象中Add相應的數(shù)量的模型對象)。5.Map類型綁定(必須依靠Bean對象)。6.復合數(shù)據(jù)類型綁定(要求在自己定義的Bean對象上的某個屬性也必須是一個Bean對象)。6. 類型轉換:在SpringMVC中有兩種類型轉換的方式.1.屬性編輯器(propertyEditor),屬性編輯器是我們最傳統(tǒng)的做法。我們只需要通過一個InitBider注解來完成,方法中的參數(shù)是WebRequestDateBinder或者WebDateBinder。在這個方法中,我們可以通過重寫PropertyEditorSupport中的setAsText()來定義自己的轉換規(guī)則。2. 類型轉換器(Converter),相對于第一種屬性編輯器它的功能更大,它可以對任何類型的數(shù)據(jù)進行轉換。我們在編寫一個類型轉換器時,一定要去implements它的Converter接口。7. 有效性驗證:通過注解的形式來注入pattern和valid來進行有效性驗證,這也是我們常用到的驗證注入。8. 操作業(yè)務層對象調業(yè)務方法:9. 返回:10. 在js頁面做顯示:11. 標簽:SpringMVC自身標簽庫,html標簽。12. 文件上傳:(詳細做法如下:)1.導包2.書寫配置springMVC自己提供的文件上傳的配置。 3.寫jsp頁面,注意文件上傳的表單里面的屬性。 . 4.書寫控制器UploadController 在控制器的方法處理中,從作用域中獲取file文件,通過path路徑和文件名將文件存入到當前工程的文件夾下。package com.lh.controller;import java.io.File;import javax.servlet.http.HttpServletRequest;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import mons.CommonsMultipartFile;Controllerpublic class UploadController RequestMapping(/upload)public String upload(HttpServletRequest request,RequestParam(file)CommonsMultipartFile file)/從作用域中獲取文件的path路徑,通過request.getSession().getServletContext().getRealPath(upload)。String path = request.getSession().getServletContext().getRealPath(upload);/通過file來獲取文件名。String name = file.getOriginalFilename();try file.getFileItem().write(new File(path+/+name); catch (Exception e) / TODO Auto-generated catch blocke.printStackTrace();return upload;return success;5.測試文件是否上傳成功。13. 攔截器:在springMVC中實現(xiàn)攔截器,調用它的3個方法。:1.書寫攔截器有兩種方式:1-1繼承HandlerInterceptorAdaptor類,代碼展示如下:package erceptor;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;public class Interceptor1 extends HandlerInterceptorAdapter /在控制器傳遞到攔截器將數(shù)據(jù)交給DisPacheServlet的過程中將資源清理。 public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception System.out.println(The Main of claening.); /在方法之后 public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception System.out.println(The Main of after.); /在方法之前public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 市政工程考試模擬題庫試題及答案
- 2025年經(jīng)濟師考題分析中級經(jīng)濟師試題及答案
- 行政管理與社會責任試題及答案
- 2024年水利水電工程考試內容詳解試題及答案
- 了解工程項目管理考試的內容結構及試題及答案
- 水利水電工程重要理念解讀試題及答案
- 理論與實際結合的2025年工程經(jīng)濟試題及答案
- 公共關系從業(yè)者的素質培養(yǎng)試題及答案
- 2025企業(yè)安全管理人員安全培訓考試試題(考題)
- 2025年企業(yè)級安全培訓考試試題及答案(必刷)
- 安全生產事故調查培訓
- 環(huán)境社會學考試必考點
- 多模態(tài)醫(yī)學影像融合
- 2023發(fā)電企業(yè)運行管理辦法
- 藍藻打撈及資源化利用投標方案(技術方案)
- 清理坡面危石施工方案
- 中醫(yī)外科學周圍血管及淋巴管疾病課件
- 企業(yè)網(wǎng)絡安全咨詢服務項目
- 基于苦味產生機制的掩味策略與評價
- 防火卷簾施工方案
- 2023年廣東深圳市福田街道辦事處招聘高頻考點題庫(共500題含答案解析)模擬練習試卷
評論
0/150
提交評論