1. 程式人生 > >java web的介紹

java web的介紹

一.java web發展過程

1.servlet 2.jsp 3.jsp model1(model和view混用) 4.jsp model2
5.spring 6.springmvc/struts2/webx 7.hibernate/mybatis

二 servlet

如圖:
servlet

1.HttpServlet繼承自GenericServlet,GenericServlet實現了Servlet.
tomcat 容器接收到請求後,呼叫Servet.servce()->GenericServlet.service()->HttpServlet.service(ServletRequest, ServletResponse)->
HttpServlet.service(HttpServletRequest, HttpServletResponse)->HttpServlet.doGet(HttpServletRequest, HttpServletResponse)
2.springmvc的DispatcherServlet繼承了FrameworkServlet,FrameworkServlet繼承自HttpServletBean,HttpServletBean繼承了HttpServlet.所以1的請求進入org.springframework.web.servlet.FrameworkServlet.doGet(HttpServletRequest, HttpServletResponse)->org.springframework.web.servlet.FrameworkServlet.processRequest(HttpServletRequest, HttpServletResponse)->org.springframework.web.servlet.FrameworkServlet.doService(HttpServletRequest, HttpServletResponse)->
org.springframework.web.servlet.DispatcherServlet.doService(HttpServletRequest, HttpServletResponse)
3.在DispatcherServlet的doService方法中,進入org.springframework.web.servlet.DispatcherServlet.doDispatch(HttpServletRequest, HttpServletResponse).
這個是springmvc的核心方法.

三 jsp

如圖:
jsp

四 jsp model1

使用收集引數,在jsp裡獲取引數,業務及跳轉 .如圖:
jsp model1

五 jsp model2

在bean裡實行獲取引數,跳轉,請求引數到模型沒有封裝,bean內跳轉到”xxx.jsp”,和view層繫結嚴重。如圖:
jsp model2
jsp model2

六 spring

ioc aop
1.id,name,scope 2.property type ref idref list map set property
3.constructor-arg index type 4.autowire by type byname 5.分散xml,property檔案 __
6.連線資料庫jdbc 7.aop MethodBeforeAdvice ProxyFactoryBean AfterReturningAdvice MethodInterceptor
ThrowsAdvice NameMatchMethodPointcut ControlFlowPointcut 7.Timertask SchedualedTimerTask

七 springmvc

(一).springmvc處理過程:
所有的請求轉到DispatcherServlet來處理,先載入Spring 預設配置檔案,路徑為“/WEB-INF/[servlet名字]-servlet.xml”。
HandlerMapping用於從域名到哪個bean來處理,將對應的controller包裝為HandlerExecutionChain
HandlerAdapter用於選擇bean的什麼方法來處理這個請求。將HandlerExecutionChain包裝為SimpleControllerHandlerAdapter,然後呼叫對應bean的handleRequest方法,返回ModelAndView.
InternalResourceViewResolver使用JstlView渲染對應的ModelAndView為jsp檔案顯示.
HandlerExceptionResolver用於處理中間過程產生的異常.

ContextLoaderListener 初始化的上下文載入的Bean所在的xml檔案是對於整個應用程式共享的,不管是使用什麼表現層技術,一般如DAO層、Service層Bean;
DispatcherServlet 初始化的上下文載入的Bean 是隻對Spring Web MVC 有效的Bean,如Controller、
HandlerMapping、HandlerAdapter等等,該初始化上下文應該只加載Web相關元件。
(二).springmvc內容
1. controller型別 MultiActionController,Controller,
2. PropertyEditorSupport型別轉換
3. Validator驗證器
4. springmvc 攔截器 HandlerInterceptor
5. springmvc 註解:url路徑限定對映(@RequestMapping,@Controller),請求方法對映限定(method = RequestMethod.GET),請求引數資料對映限定(params=”submitFlag!=create”),請求頭資料對映限定(headers = “!abc”),功能處理方法格式(ServletRequest/HttpServletRequest,InputStream/OutputStream,命令/表單物件),請求引數繫結(@RequestParam,@PathVariable,@CookieValue,@RequestHeader,@ModelAttribute,@SessionAttributes)
6. springmvc 資料驗證

八 webx

(一).webx處理過程
對應的filter在xxx\src\main\webapp\WEB-INF目錄下的webx**.xml中
1.請求處理過程.當一個HTTP請求到達時,首先由WebxFrameworkFilter接手這個請求.這個類在web.xml中配置.然後呼叫WebxRootController。WebxRootController物件存在於root context中,它被所有子應用所共享,由webx.xml配置。它會建立RequestContext例項,從而增強request、response、session的功能。接下來,WebxController物件會被呼叫。WebxController物件是由每個子應用獨享的,子應用app1和app2可以有不同的WebxController實現。預設的實現,會呼叫pipeline。Pipeline也是由各子應用自己來配置的。假如pipeline碰到無法處理的請求,如靜態頁面、圖片等,pipeline應當執行 valve強制退出。然後WebxRootController就會“放棄控制” —— 這意味著request將被返還給/WEB-INF/web.xml中定義的servlet、filter或者返還給servlet engine本身來處理。
2.pipeline配置.
處理過程見網頁http://www.openwebx.org/docs/turbine.html .
重點:
對應的業務程式碼在main/java裡面。對應的web頁面在main/webapp/xxx/templates/screen/web裡面.
(1)如果是performTemplateScreen.查詢並執行screen這裡要用到一個規則:target對映成screen module類名的規則。假設target為xxx/yyy/zzz,那麼Webx Turbine會依次查詢下面的screen模組:
screen.xxx.yyy.Zzz,
screen.xxx.yyy.Default,
screen.xxx.Default,
screen.Default。
本次請求的target為homepage,因此它會嘗試查詢screen.Homepage和screen.Default這兩個類。
(2).如果是renderTemplate.這裡用到兩個規則:target對映成screen template,以及target對映成layout template。假設target為xxx/yyy/zzz,那麼Webx Turbine會查詢下面的screen模板:/templates/screen/xxx/yyy/zzz。Screen模板如果未找到,就會報404 Not Found錯誤。 找到screen模板以後,Webx Turbine還會試著查詢下面的layout模板:
/templates/layout/xxx/yyy/zzz
/templates/layout/xxx/yyy/default
/templates/layout/xxx/default
/templates/layout/default
Layout模板如果找不到,就直接渲染screen模板;如果存在,則把渲染screen模板後的結果,嵌入到layout模板中。Layout模板和screen模板中,都可以呼叫control。每個頁面只有一個screen,卻可以有任意多個controls。

九 springmvc和webx區別

都是先有bean,再有頁面,但是springmvc的頁面路徑是xml配置,webx的頁面路徑是約定路徑。
webx的web頁面渲染預設執行bean的public void execute(Context context)方法.json請求呼叫doXXX方法.