亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-10-21 01:13:48 來源:腳本之家 閱讀:294 作者:jingxian 欄目:編程語言

一、什么是 Spring MVC

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 簡介及入門小例子(推薦)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西青区| 石楼县| 增城市| 龙游县| 磐安县| 德江县| 信宜市| 沈阳市| 且末县| 连城县| 和田市| 耿马| 四子王旗| 稻城县| 深州市| 蕉岭县| 永清县| 彰化县| 黔西| 元江| 宜君县| 留坝县| 利川市| 天柱县| 浏阳市| 日照市| 桓台县| 板桥市| 栖霞市| 文水县| 沙坪坝区| 资源县| 沂源县| 凤翔县| 汕头市| 西城区| 株洲县| 华坪县| 濉溪县| 沁阳市| 贞丰县|