多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

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

wkspring教程

Spring Web MVC 框架

閱讀 (2175)

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 框架中如何處理異常。

關閉
程序員人生
主站蜘蛛池模板: 桐谷茉莉在线 | 麻豆视传媒一区二区三区 | 欧美婷婷 | 欧美日韩亚洲精品一区二区 | 中文字幕在线视频网 | 五月天婷婷在线视频国产在线 | 亚洲在线高清 | 亚洲免费精品视频 | 中国女人freexxxx性mp4 | 91国语精品3p在线观看 | 尤物视频在线观看网站 | 午夜在线视频免费 | 亚洲欧美日韩精品久久久 | 伊人久久精品亚洲午夜 | 中文字幕系列 | 中文字幕一二三区乱码老 | 亚洲一区二区三区四区 | 精品成人免费自拍视频 | 欧美亚洲国产精品久久久 | 亚洲免费小视频 | 欧美激情在线精品一区二区 | 国产亚洲欧洲精品 | 操你啦网站 | 国内精品欧美久久精品 | 99久久精品一区二区三区 | 天堂在线视频观看 | 欧美一区二区视频在线观看 | 亚欧精品一区二区三区四区 | 中文字幕第4页 | 岛国在线最新 | www日本高清 | 24小时免费观看www日本 | 亚洲一区二区三区四 | 日本欧美一区二区三区不卡视频 | 在线免费观看h视频 | 视频免费观看在线播放高清 | 欧美一级毛片欧美大尺度一级毛片 | 亚洲欧美专区精品久久 | 国产精品免费一区二区三区四区 | 青青草原手机在线视频 | 日韩欧美精品综合一区二区三区 |