激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 深入理解Spring MVC概要與環境配置

深入理解Spring MVC概要與環境配置

2020-09-02 10:23張果 Java教程

本篇文章主要介紹了深入理解Spring MVC概要與環境配置 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下。

一、mvc概要

mvc是模型(model)、視圖(view)、控制器(controller)的簡寫,是一種軟件設計規范,用一種將業務邏輯、數據、顯示分離的方法組織代碼,mvc主要作用是降低了視圖與業務邏輯間的雙向偶合。mvc不是一種設計模式,mvc是一種架構模式。當然不同的mvc存在差異。

深入理解Spring MVC概要與環境配置

在web早期的開發中,通常采用的都是model1。model1中,如圖所示主要分為兩層,視圖層和模型層。model2把一個項目分成三部分,包括視圖、控制、模型。這樣不僅提高的代碼的復用率與項目的擴展性,且大大降低了項目的維護成本。model 1模式的實現比較簡單,適用于快速開發小規模項目,model1中jsp頁面身兼view和controller兩種角色,將控制邏輯和表現邏輯混雜在一起,從而導致代碼的重用性非常低,增加了應用的擴展性和維護的難度。model2消除了model1的缺點。

深入理解Spring MVC概要與環境配置

model1

深入理解Spring MVC概要與環境配置

model2

常見的服務器端mvc框架有:struts、spring mvc、asp.net mvc、zend framework、jsf;常見前端mvc框架:angularjs、reactjs、backbone;由mvc演化出了另外一些模式如:mvp、mvvm。

二、spring mvc介紹

spring mvc是spring framework的一部分,是基于java實現mvc的輕量級web框架。spring mvc的特點:

1、輕量

2、高效

3、與spring兼容性好

4、功能強大

restful、數據驗證、格式化、綁定機制、本地化、主題等

5、簡潔靈活

spring的web框架圍繞dispatcherservlet設計。 dispatcherservlet的作用是將請求分發到不同的處理器。從spring 2.5開始,使用java 5或者以上版本的用戶可以采用基于注解的controller聲明方式。官網上說spring的web模塊提供了大量獨特的功能,包括:

清晰的角色劃分:控制器(controller)、驗證器(validator)、 命令對象(command object)、表單對象(form object)、模型對象(model object)、 servlet分發器(dispatcherservlet)、 處理器映射(handler mapping)、視圖解析器(view resolver)等等。 每一個角色都可以由一個專門的對象來實現。

強大而直接的配置方式:將框架類和應用程序類都能作為javabean配置,支持跨多個context的引用,例如,在web控制器中對業務對象和驗證器(validator)的引用。

可適配、非侵入:可以根據不同的應用場景,選擇合適的控制器子類 (simple型、command型、form型、wizard型、multi-action型或者自定義),而不是從單一控制器 (比如action/actionform)繼承。

可重用的業務代碼:可以使用現有的業務對象作為命令或表單對象,而不需要去擴展某個特定框架的基類。

可定制的綁定(binding) 和驗證(validation):比如將類型不匹配作為應用級的驗證錯誤, 這可以保存錯誤的值。再比如本地化的日期和數字綁定等等。在其他某些框架中,你只能使用字符串表單對象, 需要手動解析它并轉換到業務對象。

可定制的handler mapping和view resolution:spring提供從最簡單的url映射, 到復雜的、專用的定制策略。與某些web mvc框架強制開發人員使用單一特定技術相比,spring顯得更加靈活。

靈活的model轉換:在springweb框架中,使用基于map的 鍵/值對來達到輕易地與各種視圖技術的集成。

可定制的本地化和主題(theme)解析:支持在jsp中可選擇地使用spring標簽庫、支持jstl、支持velocity(不需要額外的中間層)等等。

簡單而強大的jsp標簽庫(spring tag library):支持包括諸如數據綁定和主題(theme) 之類的許多功能。它提供在標記方面的最大靈活性。

jsp表單標簽庫:在spring2.0中引入的表單標簽庫,使得在jsp中編寫 表單更加容易。

spring bean的生命周期可以被限制在當前的http request或者http session。 準確的說,這并非spring mvc框架本身特性,而應歸屬于sping mvc使用的webapplicationcontext容器。

三、第一個spring mvc 項目:hello world

3.1、通過maven新建一個web項目

在eclipse中新建maven項目,選擇“create a simple project”,創建一個簡單項目,不選擇模板。

深入理解Spring MVC概要與環境配置

修改層面信息,更加詳細的內容請參考前面寫過的文章:

深入理解Spring MVC概要與環境配置

將webcontent中的所有內容復制到webapp目錄下,并刪除webcontent目錄,刪除后的結果如下:

深入理解Spring MVC概要與環境配置

修改項目的部署信息,刪除測試文件夾,添加webapp為項目根目錄:

深入理解Spring MVC概要與環境配置

 如果不打算在pom.xml中添加對server runtime的依賴,則這里必須手動添加依賴,如下圖所示:

深入理解Spring MVC概要與環境配置

另外如果pom.xml報錯,修改任意位置保存。

3.2、添加依賴的jar包

1、修改pom.xml文件、添加jar包的依賴,主要有:spring框架核心庫、spring mvc、jstl等,具體信息如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
  xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelversion>4.0.0</modelversion>
  <groupid>com.zhangguo</groupid>
  <artifactid>springmvc01</artifactid>
  <version>0.0.1</version>
  <packaging>war</packaging>
 
  <properties>
    <project.build.sourceencoding>utf-8</project.build.sourceencoding>
    <spring.version>4.3.0.release</spring.version>
  </properties>
 
  <dependencies>
    <!--spring框架核心庫 -->
    <dependency>
      <groupid>org.springframework</groupid>
      <artifactid>spring-context</artifactid>
      <version>${spring.version}</version>
    </dependency>
    <!-- spring mvc -->
    <dependency>
      <groupid>org.springframework</groupid>
      <artifactid>spring-webmvc</artifactid>
      <version>${spring.version}</version>
    </dependency>
    <!-- jstl -->
    <dependency>
      <groupid>javax.servlet</groupid>
      <artifactid>jstl</artifactid>
      <version>1.2</version>
    </dependency>
</dependencies>
</project>

當依賴成功時,會加載的jar包如下:

深入理解Spring MVC概要與環境配置

3.3、修改web.xml注冊中心控制器dispatcherservlet

spring mvc框架像許多其他mvc框架一樣, 請求驅動,圍繞一個中心servlet分派請求及提供其他功能,dispatcherservlet是一個實際的servlet (它繼承自httpservlet 基類)。如下圖所示當發起請求時被前置的控制器攔截到請求,根據請求參數生成代理請求,找到請求對應的實際控制器,控制器處理請求,創建數據模型,訪問數據庫,將模型響應給中心控制器,控制器使用模型與視圖渲染視圖結果,將結果返回給中心控制器,再將結果返回給請求者。

深入理解Spring MVC概要與環境配置

深入理解Spring MVC概要與環境配置

修改web.xml文件注冊該servlet,修改后的web.xml文件如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?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"
  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">
 
  <servlet>
    <!--名稱 -->
    <servlet-name>springmvc</servlet-name>
    <!-- servlet類 -->
    <servlet-class>org.springframework.web.servlet.dispatcherservlet</servlet-class>
    <!-- 啟動順序,數字越小,啟動越早 -->
    <load-on-startup>1</load-on-startup>
    <init-param>
      <!--springmvc配置參數文件的位置 -->
      <param-name>contextconfiglocation</param-name>
      <!--默認名稱為servletname-servlet.xml -->
      <param-value>classpath*:springmvc-servlet.xml</param-value>
    </init-param>
  </servlet>
 
  <!--所有請求都會被springmvc攔截 -->
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
 
</web-app>

3.4、添加spring mvc配置文件

在src/main/java源代碼目錄下添加springmvc-servlet.xml配置文件,配置的形式與spring容器配置基本類似,為了支持基于注解的ioc,設置了自動掃描包的功能,具體配置信息如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?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.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-4.3.xsd
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">
 
  <!-- 自動掃描包,實現支持注解的ioc -->
  <context:component-scan base-package="com.zhangguo.springmvc01" />
 
  <!-- spring mvc不處理靜態資源 -->
  <mvc:default-servlet-handler />
 
  <!-- 支持mvc注解驅動 -->
  <mvc:annotation-driven />
 
  <!-- 視圖解析器 -->
  <bean
    class="org.springframework.web.servlet.view.internalresourceviewresolver"
    id="internalresourceviewresolver">
    <!-- 前綴 -->
    <property name="prefix" value="/web-inf/view/" />
    <!-- 后綴 -->
    <property name="suffix" value=".jsp" />
  </bean>
</beans>

在視圖解析中我們把所有的視圖都存放在/web-inf/目錄下,這樣是為了視圖安全,因為這個目錄客戶端不能直接訪問。

3.5、創建helloworld控制器

在src/main/java源代碼目錄下創建包com.zhangguo.springmvc01.controller,在包下創建一個普通的類:helloworld,具體代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package com.zhangguo.springmvc01.controller;
import org.springframework.stereotype.controller;
import org.springframework.ui.model;
import org.springframework.web.bind.annotation.requestmapping;
 
@controller
@requestmapping("/hello")
public class helloworld {
  @requestmapping("/sayhi")
  public string sayhi(model model) {
    model.addattribute("message", "hello spring mvc!");
    return "sayhi";
  }
}

注解為@controller是為了讓spring ioc容器初始化時自動掃描到;@requestmapping是為了映射請求路徑,這里因為類與方法上都有映射所以訪問時應該是/hello/sayhi;方法中聲明model類型的參數是為了把action中的數據帶到視圖中;方法返回的結果是視圖的名稱sayhi。

3.6、創建視圖

在web-inf/view目錄中創建視圖,視圖將從action中帶回的信息展示,具體內容如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>hello spring mvc!</title>
</head>
<body>
  <h2>${message}</h2>
</body>
</html>

3.7、測試運行

啟動tomcat運行項目,請注意查看啟動信息,如果有異常應該先解決異常信息,運行成功后的結果如下所示:

深入理解Spring MVC概要與環境配置

3.8、示例下載

項目地址:springmvcdemo.rar

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/best/p/5653916.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久免费视频在线 | 国产女同疯狂激烈互摸 | 亚洲第一色婷婷 | 宅男噜噜噜66国产免费观看 | 国产午夜精品久久久久久久蜜臀 | 青青草好吊色 | 成年人性视频 | h视频在线观看免费 | 亚洲婷婷日日综合婷婷噜噜噜 | 免费毛片在线视频 | 亚洲视频在线免费看 | 国产精品18久久久久久久 | 色中色在线播放 | 午夜亚洲视频 | 九九热精品在线 | 日韩精品二区 | 免费观看一级黄色片 | 美女黄网站免费观看 | 亚洲一区二区在线 | 黄免费在线 | 日本68xxxx | 成人黄色短视频在线观看 | 精品一区免费 | 亚洲精品wwww | 在线播放污 | 男人的天堂色偷偷 | 久久久久久久亚洲视频 | 久久精品国产亚洲7777小说 | 亚洲白嫩在线观看 | 国产成人高清成人av片在线看 | 美女黄污视频 | 精品一区二区三区网站 | 久久久久免费精品 | 91免费高清视频 | 一级做a爰性色毛片免费1 | 好吊色欧美一区二区三区四区 | 色播av在线 | 99精品视频免费 | 欧美一级小视频 | 久久精品一区视频 | 狠狠一区|