日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

中國最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2

wkspring教程

Spring Web MVC 框架

閱讀 (2178)

MVC 框架教程

Spring web MVC 框架提供了模型-視圖-控制的體系結構和可以用來開發靈活、松散耦合的 web 應用程序的組件。MVC 模式導致了應用程序的不同方面(輸入邏輯、業務邏輯和 UI 邏輯)的分離,同時提供了在這些元素之間的松散耦合。

  • 模型封裝了應用程序數據,并且通常它們由 POJO 組成。

  • 視圖主要用于呈現模型數據,并且通常它生成客戶端的瀏覽器可以解釋的 HTML 輸出。

  • 控制器主要用于處理用戶請求,并且構建合適的模型并將其傳遞到視圖呈現。

DispatcherServlet

Spring Web 模型-視圖-控制(MVC)框架是圍繞 DispatcherServlet 設計的,DispatcherServlet 用來處理所有的 HTTP 請求和響應。Spring Web MVC DispatcherServlet 的請求處理的工作流程如下圖所示:

下面是對應于 DispatcherServlet 傳入 HTTP 請求的事件序列:

  • 收到一個 HTTP 請求后,DispatcherServlet 根據 HandlerMapping 來選擇并且調用適當的控制器。

  • 控制器接受請求,并基于使用的 GET 或 POST 方法來調用適當的 service 方法。Service 方法將設置基于定義的業務邏輯的模型數據,并返回視圖名稱到 DispatcherServlet 中。

  • DispatcherServlet 會從 ViewResolver 獲取幫助,為請求檢取定義視圖。

  • 一旦確定視圖,DispatcherServlet 將把模型數據傳遞給視圖,最后呈現在瀏覽器中。

上面所提到的所有組件,即 HandlerMapping、Controller 和 ViewResolver 是 WebApplicationContext 的一部分,而 WebApplicationContext 是帶有一些對 web 應用程序必要的額外特性的 ApplicationContext 的擴展。

需求的配置

你需要映射你想讓 DispatcherServlet 處理的請求,通過使用在 web.xml 文件中的一個 URL 映射。下面是一個顯示聲明和映射 HelloWeb DispatcherServlet 的示例:

<web-app id="WebApp_ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>Spring MVC Application</display-name>
   <servlet>
      <servlet-name>HelloWeb</servlet-name>
      <servlet-class>
         org.springframework.web.servlet.DispatcherServlet
      </servlet-class>
      <load-on-startup>1</load-on-startup>
   </servlet>
   <servlet-mapping>
      <servlet-name>HelloWeb</servlet-name>
      <url-pattern>*.jsp</url-pattern>
   </servlet-mapping>
</web-app>

web.xml 文件將被保留在你的應用程序的 WebContent/WEB-INF 目錄下。好的,在初始化 HelloWeb DispatcherServlet 時,該框架將嘗試加載位于該應用程序的 WebContent/WEB-INF 目錄中文件名為 [servlet-name]-servlet.xml 的應用程序內容。在這種情況下,我們的文件將是 HelloWeb-servlet.xml。

接下來,<servlet-mapping> 標簽表明哪些 URLs 將被 DispatcherServlet 處理。這里所有以 .jsp 結束的 HTTP 請求將由 HelloWeb DispatcherServle t處理。

如果你不想使用默認文件名 [servlet-name]-servlet.xml 和默認位置 WebContent/WEB-INF,你可以通過在 web.xml 文件中添加 servlet 監聽器 ContextLoaderListener 自定義該文件的名稱和位置,如下所示:

<web-app...>
<!-------- DispatcherServlet definition goes here----->
....
<context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>/WEB-INF/HelloWeb-servlet.xml</param-value>
</context-param>
<listener>
   <listener-class>
      org.springframework.web.context.ContextLoaderListener
   </listener-class>
</listener>
</web-app>

現在,檢查 HelloWeb-servlet.xml 文件的請求配置,該文件位于 web 應用程序的 WebContent/WEB-INF 目錄下:

<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="
   http://www.springframework.org/schema/beans     
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
   http://www.springframework.org/schema/context 
   http://www.springframework.org/schema/context/spring-context-3.0.xsd">

   <context:component-scan base-package="com.tutorialspoint" />

   <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="prefix" value="/WEB-INF/jsp/" />
      <property name="suffix" value=".jsp" />
   </bean>

</beans>

以下是關于 HelloWeb-servlet.xml 文件的一些要點:

  • [servlet-name]-servlet.xml 文件將用于創建 bean 定義,重新定義在全局范圍內具有相同名稱的任何已定義的 bean。

  • <context:component-scan...> 標簽將用于激活 Spring MVC 注釋掃描功能,該功能允許使用注釋,如 @Controller 和 @RequestMapping 等等。

  • InternalResourceViewResolver 將使用定義的規則來解決視圖名稱。按照上述定義的規則,一個名稱為 hello 的邏輯視圖將發送給位于 /WEB-INF/jsp/hello.jsp 中實現的視圖。

下一節將向你展示如何創建實際的組件,例如控制器,模式和視圖。

定義控制器

DispatcherServlet 發送請求到控制器中執行特定的功能。@Controller 注釋表明一個特定類是一個控制器的作用。@RequestMapping 注釋用于映射 URL 到整個類或一個特定的處理方法。

@Controller
@RequestMapping("/hello")
public class HelloController{
   @RequestMapping(method = RequestMethod.GET)
   public String printHello(ModelMap model) {
      model.addAttribute("message", "Hello Spring MVC Framework!");
      return "hello";
   }
}

@Controller 注釋定義該類作為一個 Spring MVC 控制器。在這里,第一次使用的 @RequestMapping 表明在該控制器中處理的所有方法都是相對于 /hello 路徑的。下一個注釋 @RequestMapping(method = RequestMethod.GET) 用于聲明 printHello() 方法作為控制器的默認 service 方法來處理 HTTP GET 請求。你可以在相同的 URL 中定義其他方法來處理任何 POST 請求。

你可以用另一種形式來編寫上面的控制器,你可以在 @RequestMapping 中添加額外的屬性,如下所示:

@Controller
public class HelloController{
   @RequestMapping(value = "/hello", method = RequestMethod.GET)
   public String printHello(ModelMap model) {
      model.addAttribute("message", "Hello Spring MVC Framework!");
      return "hello";
   }
}

屬性表明 URL 映射到哪個處理方法,方法屬性定義了 service 方法來處理 HTTP GET 請求。關于上面定義的控制器,這里有以下幾個要注意的要點:

  • 你將在一個 service 方法中定義需要的業務邏輯。你可以根據每次需求在這個方法中調用其他方法。

  • 基于定義的業務邏輯,你將在這個方法中創建一個模型。你可以設置不同的模型屬性,這些屬性將被視圖訪問并顯示最終的結果。這個示例創建了一個帶有屬性 “message” 的模型。

  • 一個定義的 service 方法可以返回一個包含視圖名稱的字符串用于呈現該模型。這個示例返回 “hello” 作為邏輯視圖的名稱。

創建 JSP 視圖

對于不同的表示技術,Spring MVC 支持許多類型的視圖。這些包括 JSP、HTML、PDF、Excel 工作表、XML、Velocity 模板、XSLT、JSON、Atom 和 RSS 提要、JasperReports 等等。但我們最常使用利用 JSTL 編寫的 JSP 模板。所以讓我們在 /WEB-INF/hello/hello.jsp 中編寫一個簡單的 hello 視圖:

<html>
   <head>
   <title>Hello Spring MVC</title>
   </head>
   <body>
   <h2>${message}</h2>
   </body>
</html>

其中,${message} 是我們在控制器內部設置的屬性。你可以在你的視圖中有多個屬性顯示。

Spring Web MVC 框架例子

基于上述概念,讓我們看看一些重要的例子來幫助你建立 Spring Web 應用程序:

序號例子 & 描述
1Spring MVC Hello World Example

這個例子將解釋如何編寫一個簡單的 Spring Web Hello World 應用程序。

2Spring MVC Form Handling Example

這個例子將解釋如何編寫一個 Spring Web 應用程序,它使用 HTML 表單提交數據到控制器,并且顯示處理結果。

3Spring Page Redirection Example

學習在 Spring MVC 框架中如何使用頁面重定向功能。

4Spring Static Pages Example

學習在 Spring MVC 框架中如何訪問靜態頁面和動態頁面。

5Spring Exception Handling Example

學習在 Spring MVC 框架中如何處理異常。

關閉
程序員人生
主站蜘蛛池模板: 欧美 亚洲 另类 激情 另类 | 成人片免费看 | 欧美aaaa视频 | 久久精品资源 | 国产精品女 | 日本欧美视频 | 久久大陆 | 国产3p视频| 亚洲国产成人精品久久久国产成人一区 | 欧美偷拍一区二区 | 国产一区二区三区精品久久久 | 麻豆免费看 | 日韩欧美国产成人 | 99精品国产热久久91蜜凸 | av午夜在线 | 欧美一区二区三区国产 | 99精品国产九九国产精品 | 羞羞视频在线观看 | 成人在线高清 | 成人一区二区三区四区 | 大黑人交xxxxxhd性爽 | 国产主播精品 | 好吊日精品视频 | 在线天堂网| 91久久久国产精品 | 久久久精品一区二区三区 | 欧洲成人午夜免费大片 | 久久精品电影 | 国产一区二区三区精品在线观看 | 亚洲天堂精品视频 | 国产精品视频一二三四区 | 精品一区二区三区在线视频 | 国产中文区4幕区2021 | 久久99视频 | 久久精品999 | 欧美人xxx | 久久国产精品毛片 | 五月天丁香社区 | 国产精品久久久久9999 | 国产呦精品一区二区三区网站 | 欧美亚洲日本一区 |