基于SpringMVC簡介及入門小例子(推薦)

一、什么是 Spring MVC

創新互聯建站于2013年成立,是專業互聯網技術服務公司,擁有項目成都網站設計、成都網站制作網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元濟南做網站,已為上家服務,為濟南各地企業和個人服務,聯系電話:18980820575

Spring MVC 屬于 SpringFrameWork 的后續產品,已經融合在 Spring Web Flow 里面,是一個強大靈活的 Web 框架。Spring MVC 提供了一個 DispatcherServlet 作為前端控制器來分配請求。通過策略接口,Spring 框架是高度可配置的。Spring MVC 還包含多種視圖技術,如 Java Server Pages(JSP)、Velocity、Tiles、iText 和 POI 等。Spring MVC 分離了控制器、模型對象、分派器以及處理程序對象的角色,這種分離讓它們更容易進行定制。

Spring MVC 框架主要由 DispatcherServlet、處理器映射器、處理器適配器、處理器(控制器)、視圖解析器、視圖組成。

二、Spring MVC 執行流程

Spring MVC 高層次的請求處理工作流程如下(圖來自 Spring 官網):

 基于Spring MVC 簡介及入門小例子(推薦)

細分后,Spring MVC 執行流程如下,共包括八步:

基于Spring MVC 簡介及入門小例子(推薦) 

Spring MVC 相關接口解釋:

(1)DispatcherServlet

前端控制器,所有的請求都有經過它來統一分發,請求會被分發給對應的 Handler。

(2)HandlerMapping(處理器映射器)

解析請求鏈接,然后根據請求鏈接找到執行這個請求的類(HandlerMapping 所說的 handler)。

(3)HandlerAdapter(處理器適配器)

調用具體的方法對用戶發來的請求來進行處理。

(4)Controller

Controller 將處理用戶請求,Controller 處理完用戶請求,則返回 ModelAndView 對象給 DispatcherServlet 前端控制器。

從宏觀角度考慮,DispatcherServlet 是整個 Web 應用的控制器;從微觀考慮,Controller 是單個 Http 請求處理過程中的控制器。

(5)ViewResolver(視圖解析器)

解析 MdoelAndView,將 MdoelAndView 中的邏輯視圖名變為一個真正的 View 對象,并將 MdoelAndView 中的 Model 取出。

前面簡單的介紹了 Spring MVC ,下面以簡單的用戶注冊為例,來了解 Spring MVC 的一些基本原理和運用。

三、項目文件結構

 基于Spring MVC 簡介及入門小例子(推薦)

 四、開發準備

Spring MVC 的相關文件放在實驗樓的服務器中,請打開實驗環境桌面上的 Xfce ,輸入下面的代碼獲取:

wget http://labfile.oss.aliyuncs.com/courses/810/Spring-jars.zip

輸入下面的命令解壓 .zip 文件:

unzip Spring-jars.zip

五、實驗步驟

1 新建項目工程

在 Eclipse 里新建一個 Web 工程(Dynamic Web Project),命名為 SpringMVCTest 。

注意勾選 “自動生成 web.xml” 這個選項。

將 /home/shiyanlou/Spring-jars/ 路徑下的全部 jar 包拷貝到項目的 WebContent/WEB-INF/lib/ 目錄下。

基于Spring MVC 簡介及入門小例子(推薦)

2 配置 web.xml 文件

修改 web.xml 文件內容如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  id="WebApp_ID" version="3.0">
  <display-name>SpringMVCTest</display-name>

  <!-- 配置 Spring MVC DispatchcerServlet 前端控制器 -->
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <!-- contextConfigLocation 是參數名稱,該參數的值包含 Spring MVC 的配置文件路徑 -->
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/springmvc-config.xml</param-value>
    </init-param>
    <!-- 在 Web 應用啟動時立即加載 Servlet -->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <!-- Servlet 映射聲明 -->
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <!-- 監聽當前域的所有請求 -->
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  <!-- 添加 register.jsp 為首頁 -->
  <welcome-file-list>
    <welcome-file>register.jsp</welcome-file>
  </welcome-file-list>
</web-app>

在 web.xml 中配置了 DispatchcerServlet,DispatchcerServlet 加載時需要一個 Spring MVC 的配置文件,默認會去 WEB-INF 下查找對應的 [servlet-name]-servlet.xml 文件,如本例中默認查找的是 springmvc-servlet.xml。

Spring MVC 的配置文件可以放在任何地方,用 servlet 的子元素 init-param 描述即可,見上述示例代碼,這時 DispatchcerServlet 就會去查找 /WEB-INF/springmvc-config.xml。

3 springmvc-config.xml 文件

在 WebContent/WEB-INF/ 目錄下新建 Spring MVC 配置文件 springmvc-config.xml,配置 Spring MVC 的 Controller,添加如下代碼:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
  xmlns:mvc="http://www.springframework.org/schema/mvc"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">

  <context:annotation-config />
  <!-- 配置自動掃描的包,完成 Bean 的創建和自動依賴注入的功能 -->
  <context:component-scan base-package="com.shiyanlou.springmvc.controller" />
   <!-- 這兩個類用來配置 annotation 類型的處理器映射器和處理器適配器 -->
  <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
  <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />

  <!-- 配置視圖解析器 -->
  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/"></property>
    <property name="suffix" value=".jsp"></property>
  </bean>

</beans> 

上述配置文件中, Spring 使用了掃描機制查找應用程序所有基于注解的控制器類,在本例中,掃描的是 com.shiyanlou.springmvc.controller 包及其子包下的所有 Java 文件。

同時配置了 annatation 類型的處理器映射器 DefaultAnnotationHandlerMapping 和處理器適配器 AnnotationMethodHandlerAdapter,DefaultAnnotationHandlerMapping 根據請求查找映射,AnnotationMethodHandlerAdapter 完成對控制器類的 @RequestMapping 標注方法(下面會介紹)的調用。

最后配置的視圖解析器 InternalResourceViewResolver 用來解析視圖,將 View 呈現給用戶。視圖解析器中配置的 prefix表示視圖的前綴, suffix表示視圖的后綴。

注:在 Spring4.0 之后,如果不配置處理映射器、處理器適配器和視圖解析器,會使用默認的。

4 實體類 User

在項目目錄 /Java Resources/src 的包 com.shiyanlou.springmvc.entity 下新建類 User.java,包含 id、username、password 和 age 屬性,代碼如下:

package com.shiyanlou.springmvc.entity;

import java.io.Serializable;

public class User implements Serializable {

  private static final long serialVersionUID = 1L;
  private Integer id;
  private String username;
  private String password;
  private Integer age;

  public Integer getId() {
    return id;
  }

  public void setId(Integer id) {
    this.id = id;
  }

  public String getUsername() {
    return username;
  }

  public void setUsername(String username) {
    this.username = username;
  }

  public String getPassword() {
    return password;
  }

  public void setPassword(String password) {
    this.password = password;
  }

  public Integer getAge() {
    return age;
  }

  public void setAge(Integer age) {
    this.age = age;
  }

}

5 Controller 類的實現

在包 com.shiyanlou.springmvc.controller 下新建 Controller 類 UserController.java,具體解釋注釋已經給出,代碼如下:

package com.shiyanlou.springmvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

import com.shiyanlou.springmvc.entity.User;

/**
 * UserController 是一個基于注解的控制器
 * 可以同時處理多個請求動作
 */
@Controller
public class UserController {
  
  /**
  * RequestMapping 用來映射一個請求和請求的方法
  * value="/register" 表示請求由 register 方法進行處理
  */
  @RequestMapping(value="/register")
  public String Register(@ModelAttribute("form") User user, Model model) { // user:視圖層傳給控制層的表單對象;model:控制層返回給視圖層的對象
    // 在 model 中添加一個名為 "user" 的 user 對象
    model.addAttribute("user", user);
    // 返回一個字符串 " success" 作為視圖名稱
    return "success";
  }
}

6 JSP 頁面

(1)register.jsp

在 WebContent 目錄下新建一個 JSP 頁面命名為 register.jsp,代碼如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>register page</title>
</head>
<body>
  <form action="register" method="post">
    <h6>User registration</h6>
    <p>
      <label>name </label> <input type="text" id="username" name="username"
        tabindex="1">
    </p>

    <p>
      <label>password </label> <input type="text" id="password" name="password"
        tabindex="2">
    </p>

    <p>
      <label>age </label> <input type="text" id="age" name="age"
        tabindex="3">
    </p>
    <p id="buttons">
      <input id="submit" type="submit" tabindex="4" value="register">
      <input id="reset" type="reset" tabindex="5" value="reset">
    </p>
  </form>
</body>
</html>

(2)success.jsp

在 WebContent/WEB-INF 目錄下新建文件夾 views,并在該路徑下新建一個 JSP 頁面命名為 success.jsp,代碼如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>success page</title>
</head>
<body>
  <h6>login was successful</h6>
  <p>
    name:${requestScope.user.username}<br /> password:${requestScope.user.password}<br /> age:${requestScope.user.age}<br />
  </p>
</body>
</html>

7 運行測試

注:由于在線環境的資源問題,這里啟動 tomcat 比較慢,需要大家耐心等待幾分鐘。如果遇到 Tomcat 啟動超時的問題,請按照下圖的方法延長 Tomcat 的啟動時間。

基于Spring MVC 簡介及入門小例子(推薦)

右擊 SpringMVCTest 工程,Run As->Run on Server,保持默認選項不變,點擊 Finish,一會兒即可看到結果:

基于Spring MVC 簡介及入門小例子(推薦)

輸入注冊信息,點擊注冊按鈕,結果如下:

基于Spring MVC 簡介及入門小例子(推薦)

以上這篇基于Spring MVC 簡介及入門小例子(推薦)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持創新互聯。

新聞名稱:基于SpringMVC簡介及入門小例子(推薦)
URL網址:http://m.kartarina.com/article32/pihspc.html

成都網站建設公司_創新互聯,為您提供品牌網站制作網站設計公司網站策劃面包屑導航企業建站電子商務

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

網站托管運營
主站蜘蛛池模板: 精选观看中文字幕高清无码| 人妻无码人妻有码中文字幕| 国产成人无码免费看片软件| 日韩综合无码一区二区| 日韩精品无码一区二区三区AV | 69堂人成无码免费视频果冻传媒 | 少妇人妻偷人精品无码视频 | 潮喷失禁大喷水无码| 精品无码日韩一区二区三区不卡| 国产精品无码一二区免费| 亚洲AV无码一区二区乱子伦| 亚洲av永久中文无码精品综合| 亚洲自偷自偷偷色无码中文| 亚洲av永久中文无码精品综合| 无码亚洲成a人在线观看| 精品国产性色无码AV网站| 亚洲热妇无码AV在线播放| 久久久久无码精品国产h动漫 | 亚洲av无码av制服另类专区| 无码午夜人妻一区二区不卡视频| 国产品无码一区二区三区在线| 中文字幕无码av激情不卡| 久久久无码精品午夜| 亚洲成a人片在线观看天堂无码| 亚洲AV无码一区二区三区系列| 人妻丰满?V无码久久不卡| 一本大道无码av天堂| 日韩乱码人妻无码中文字幕| 亚洲日韩激情无码一区| 东京热无码av一区二区| 久久无码一区二区三区少妇| 无码国产成人午夜电影在线观看| 内射精品无码中文字幕| 无码一区二区三区AV免费| 成人无码嫩草影院| 免费无遮挡无码视频网站| 日韩专区无码人妻| 免费看无码特级毛片| 中文字幕丰满伦子无码 | 亚洲日韩国产精品无码av| 亚洲AV永久无码精品|