顯示具有 DispatcherServlet 標籤的文章。 顯示所有文章
顯示具有 DispatcherServlet 標籤的文章。 顯示所有文章

2017年12月26日 星期二

Java Spring - 使用其他方式設定DispatcherServlet及ContextLoaderListener

  •  透過其他方式set up DispatcherServlet and ContextLoaderListener
    • 可能需要額外的Servlet、filter
    • 需要對DispatcherServlet做額外config
  • 自行定義個DispatcherServlet configuration
    • 除了以下三種必須被override的method以外,其實還有更多可以被override的method
      • getRootConfigClasses
      • getServletConfigClasses
      • getServletMappings

2017年12月25日 星期一

Java Spring - 搭建Spring MVC (1)

  • Spring MVC lifecycle request
  •  
    from Spring in action

      1. request進入1,會帶著URL, form submitted by user,.. 等資訊,此時會進入front controller servlet(DispatcherServlet)。DispatcherServlet任務是將request發送給Spring MVC controller,因此DispatcherServlet需要知道要發給誰。
      2. 所以DispatcherServlet會查詢一個或多個handler mapping來確定request的下一站在哪裡。handler mapping會根據request 所攜帶的URL來決定。
      3. 一但知道要送到哪一個controller,DispatcherServlet就會將request發送。到了controller,request會卸下其request並交給controller處理訊息。(設計良好的controller本身幾乎不處理工作,而是將業務邏輯delegate給一個或多個service objects處理)
      4. controller完成logic後會產生一些結果,這些結果需要返回給使用者在browser上顯示。這些資訊稱為model。這些model還會經過friendly方式格式化,通常是HTML。所以information需要給一個view呈現,通常稱為JSP。controller最後要做的一件事情就是將model data打包,並且知道哪個view需要呈現output。接著會將request連同model及view送回DispatcherServlet
      5. 這樣一來,controller就不會和view coupled,傳給DispatcherServlet的view name也不用特別標示為JSP。這個名字就是用來找產生真正結果的view。DispatcherServlet會使用ViewResolver來將view name mapping為特定一個的view implementation。
      6. 最後一站是view的implementation。在這它交付model data。request的任務也完成了。view使用model data render output。這個output會被帶回給client