国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【SpringMVC】工作流程及入門案例

這篇具有很好參考價(jià)值的文章主要介紹了【SpringMVC】工作流程及入門案例。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

? ? 前言? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? 回顧MVC三層架構(gòu)? ? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? 1. SpringMVC簡(jiǎn)介? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? 1.1 SpringMVC的特點(diǎn)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? 1.2 SpringMVC核心組件? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ??

? ? 1.3 SpringMVC工作流程? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? 2. SpringMVC入門案例? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? 2.1 添加pom.xml依賴?

? ? 2.2 創(chuàng)建spring-mvc.xml?

? ? 2.3 配置web.xml?

? ? 2.4 編寫處理器類?

? ? 2.5 編寫hello.jsp?

? ? 2.6 運(yùn)行測(cè)試?

? ? 2.7 靜態(tài)資源處理?


? ? 前言? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

????????Spring MVC(Model-View-Controller)是一個(gè)基于Java的Web應(yīng)用程序框架,它是Spring框架的一部分。主要是用來(lái)進(jìn)行Web開發(fā),是對(duì)Servlet進(jìn)行了封裝,也可以理解為是Servlet的加強(qiáng)版。

? ? 回顧MVC三層架構(gòu)? ? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

學(xué)習(xí)SpringMVC之前我們先來(lái)回顧下自定義MVC框架思想:

【SpringMVC】工作流程及入門案例,SSM,java,spring,mvc,后端

一個(gè)自定義MVC框架的基本工作流程如下:

  1. 用戶通過(guò)視圖與應(yīng)用程序交互,視圖將用戶的請(qǐng)求傳遞給控制器。
  2. 控制器接收用戶請(qǐng)求,根據(jù)請(qǐng)求的類型和內(nèi)容決定調(diào)用哪個(gè)模型處理請(qǐng)求,并根據(jù)處理結(jié)果決定需要更新哪個(gè)視圖。
  3. 模型處理請(qǐng)求的過(guò)程中可能需要與數(shù)據(jù)庫(kù)或其他數(shù)據(jù)源進(jìn)行交互,獲取所需數(shù)據(jù)并進(jìn)行相應(yīng)的處理。處理完成后,將結(jié)果返回給控制器。
  4. 控制器根據(jù)模型的處理結(jié)果,決定更新哪個(gè)視圖以展示結(jié)果給用戶。
  5. 視圖接收到控制器的指令后,根據(jù)要展示的內(nèi)容進(jìn)行相應(yīng)的處理和渲染,最終將結(jié)果呈現(xiàn)給用戶。

?

????????在自定義MVC中每個(gè)請(qǐng)求都需要寫一個(gè)Servlet,顯然是不方便了。SpringMVC的工作流程與此差不多,controller可以處理多個(gè)請(qǐng)求,并對(duì)請(qǐng)求進(jìn)行分發(fā),執(zhí)行不同的業(yè)務(wù)操作,對(duì)它進(jìn)行了加強(qiáng)讓開發(fā)更加便捷。

? ? SpringMVC簡(jiǎn)介? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

????????Spring MVC(Model-View-Controller)是一個(gè)基于Java的Web應(yīng)用程序框架,它是Spring框架的一部分。Spring MVC提供了一個(gè)簡(jiǎn)單、靈活且強(qiáng)大的模型,用于構(gòu)建Web應(yīng)用程序,它遵循MVC設(shè)計(jì)模式。這個(gè)模式有助于將應(yīng)用程序的表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問(wèn)層分離,使得開發(fā)更加模塊化和易于維護(hù)。

? ? SpringMVC的特點(diǎn)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

????????Spring MVC的核心原則是分離關(guān)注點(diǎn),將應(yīng)用程序的不同方面分離開來(lái),以便更好地管理和維護(hù)代碼。它通過(guò)將應(yīng)用程序分為模型(Model)、視圖(View)和控制器(Controller)三個(gè)部分來(lái)實(shí)現(xiàn)這一目標(biāo)。

  1. 模型(Model):模型代表應(yīng)用程序的數(shù)據(jù)和業(yè)務(wù)邏輯。它可以是一個(gè)POJO(Plain Old Java Object)或一個(gè)持久化實(shí)體類。模型負(fù)責(zé)處理數(shù)據(jù)的讀取、存儲(chǔ)和驗(yàn)證,并提供數(shù)據(jù)給視圖進(jìn)行展示。

  2. 視圖(View):視圖負(fù)責(zé)展示模型中的數(shù)據(jù)給用戶。它可以是一個(gè)JSP(JavaServer Pages)、HTML頁(yè)面或其他模板引擎生成的頁(yè)面。視圖通常是根據(jù)模型的數(shù)據(jù)來(lái)動(dòng)態(tài)生成的,以便將數(shù)據(jù)呈現(xiàn)給用戶。

  3. 控制器(Controller):控制器負(fù)責(zé)處理用戶請(qǐng)求并協(xié)調(diào)模型和視圖之間的交互。它接收用戶的請(qǐng)求,調(diào)用適當(dāng)?shù)哪P吞幚頂?shù)據(jù),并選擇合適的視圖來(lái)展示結(jié)果??刂破鬟€可以處理表單驗(yàn)證、異常處理和其他與請(qǐng)求相關(guān)的邏輯。

? ? SpringMVC核心組件? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ??

Spring MVC框架提供了一組核心組件來(lái)實(shí)現(xiàn)這種模型-視圖-控制器的架構(gòu)。其中包括:

  1. DispatcherServlet:它是Spring MVC的前端控制器,負(fù)責(zé)接收所有的HTTP請(qǐng)求并將其分發(fā)給適當(dāng)?shù)奶幚沓绦颉?/p>

  2. HandlerMapping:它負(fù)責(zé)將請(qǐng)求映射到適當(dāng)?shù)奶幚沓绦颍刂破鳎?/p>

  3. Controller:它是處理程序的接口,負(fù)責(zé)處理用戶請(qǐng)求并返回適當(dāng)?shù)哪P秃鸵晥D。

  4. ViewResolver:它負(fù)責(zé)將邏輯視圖名稱解析為實(shí)際的視圖對(duì)象。

  5. View:它負(fù)責(zé)將模型數(shù)據(jù)渲染為最終的響應(yīng)結(jié)果,可以是JSP、HTML頁(yè)面或其他類型的視圖。

? ? ? ? 除了這些核心組件,Spring MVC還提供了許多其他功能,如數(shù)據(jù)綁定、表單處理、文件上傳、攔截器、國(guó)際化支持等,以幫助開發(fā)人員更輕松地構(gòu)建Web應(yīng)用程序。

?

? ? SpringMVC工作流程? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

【SpringMVC】工作流程及入門案例,SSM,java,spring,mvc,后端

  1. 用戶發(fā)來(lái)一個(gè)請(qǐng)求,首先進(jìn)入的是前端控制器DispatcherServlet
  2. 前端控制器(DispacherServlet)將用戶發(fā)來(lái)的請(qǐng)求發(fā)送給處理器映射器(HandlerMapping)
  3. 處理器映射器根據(jù)前端控制器發(fā)來(lái)的用戶的請(qǐng)求找到對(duì)應(yīng)符合的控制器(Handler),并且將其封裝成處理器執(zhí)行鏈,返回給前端控制器。
  4. 處理器適配器接收到來(lái)自前端控制器的執(zhí)行鏈后,找到對(duì)應(yīng)執(zhí)行此執(zhí)行鏈的處理器適配器(HandlerAdapter)來(lái)調(diào)用的具體的控制器(就是說(shuō)其對(duì)應(yīng)的方法或者邏輯)
  5. 處理器適配器 (HandlerAdaptoer) 會(huì)調(diào)用對(duì)應(yīng)的具體的 Controller(處理業(yè)務(wù)邏輯)
  6. 控制器執(zhí)行完成后,會(huì)返回一個(gè)ModelAndView對(duì)象給處理器適配器
  7. 處理器適配器將返回來(lái)的ModelAndView對(duì)象返回給前端控制器(到這里所有的業(yè)務(wù)處理過(guò)程就要完了,接下就是將結(jié)果以頁(yè)面的的形式響應(yīng)給用戶)
  8. 前端控制器將返回回來(lái)的ModelAndView對(duì)象交給視圖解析器(ViewResolver),視圖解析器根據(jù)傳過(guò)來(lái)的View對(duì)象解析成對(duì)應(yīng)的頁(yè)面對(duì)象
  9. ViewResolver 將封裝好的將頁(yè)面對(duì)象和Model對(duì)象返回給 DIspatcherServlet
  10. 前端控制器再將返回回來(lái)的對(duì)象交給視圖(View)
  11. 視圖根據(jù)傳過(guò)來(lái)的Model對(duì)象再一次的對(duì)頁(yè)面進(jìn)行渲染(將模型數(shù)據(jù)填充至視圖中),然后在返回給前端控制器。
  12. 前端控制器將完成的結(jié)果響應(yīng)給瀏覽器,然后瀏覽器在展現(xiàn)給用戶。

?

????SpringMVC入門案例? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? 添加pom.xml依賴?

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.example</groupId>
  <artifactId>mybatis_spring</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>mybatis_spring Maven Webapp</name>
  <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.plugin.version>3.7.0</maven.compiler.plugin.version>

        <!--添加jar包依賴-->
        <!--1.spring 5.0.2.RELEASE相關(guān)-->
        <spring.version>5.0.2.RELEASE</spring.version>

        <!-- jstl+standard -->
        <jstl.version>1.2</jstl.version>
        <standard.version>1.1.2</standard.version>
        <!-- spring -->
        <spring.version>5.0.2.RELEASE</spring.version>
    </properties>


    <dependencies>
        <!--1.spring相關(guān)-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>


        <!-- spring mvc相關(guān)依賴 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>${jstl.version}</version>
        </dependency>
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>${standard.version}</version>
        </dependency>
    </dependencies>

  <build>
      <finalName>mybatis_spring</finalName>
  </build>
</project>

缺少jstl+standard的這兩個(gè)jar包會(huì)報(bào)java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config,那是因?yàn)閛rg.springframework.web.servlet.view.JstlView在視圖解析時(shí)需要這二個(gè)jar包。

? ? 創(chuàng)建spring-mvc.xml?

<?xml version="1.0" encoding="UTF-8"?>
<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"
       xmlns="http://www.springframework.org/schema/beans"
       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.xsd">
    <!--1) 掃描com.zking.zf及子子孫孫包下的控制器(掃描范圍過(guò)大,耗時(shí))-->
    <context:component-scan base-package="com.ycxw"/>

    <!--2) 此標(biāo)簽?zāi)J(rèn)注冊(cè)DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter -->
    <mvc:annotation-driven/>

    <!--3) 創(chuàng)建ViewResolver視圖解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- viewClass需要在pom中引入兩個(gè)包:standard.jar and jstl.jar -->
        <property name="viewClass"
                  value="org.springframework.web.servlet.view.JstlView"></property>
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <!--4) 單獨(dú)處理圖片、樣式、js等資源 -->
    <!-- <mvc:resources location="/css/" mapping="/css/**"/>
     <mvc:resources location="/js/" mapping="/js/**"/>
     <mvc:resources location="WEB-INF/images/" mapping="/images/**"/>-->
</beans>

解釋:

這段代碼是一個(gè)Spring MVC應(yīng)用程序的XML配置文件。它用于配置Spring MVC的一些基本設(shè)置,包括組件掃描、注解驅(qū)動(dòng)、視圖解析器和靜態(tài)資源處理。下面是對(duì)這段代碼的逐行解釋:

  1. <context:component-scan base-package="com.ycxw"/>:?jiǎn)⒂媒M件掃描,讓Spring自動(dòng)掃描指定包(在這里是com.ycxw)及其子包中的所有類,識(shí)別并注冊(cè)帶有特定注解(如@Controller@Service等)的類為Spring容器中的bean。

  2. <mvc:annotation-driven/>:?jiǎn)⒂肧pring MVC的注解驅(qū)動(dòng)功能,讓Spring MVC自動(dòng)注冊(cè)默認(rèn)的處理器映射(DefaultAnnotationHandlerMapping)和處理器適配器(AnnotationMethodHandlerAdapter),以支持基于注解的控制器方法。

  3. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">:定義一個(gè)視圖解析器(InternalResourceViewResolver)的bean,用于將控制器返回的邏輯視圖名解析為實(shí)際的視圖資源(如JSP文件)。

  4. <property name="viewClass" value="org.springframework.web.servlet.view.JstlView">:設(shè)置視圖解析器的viewClass屬性,指定使用JstlView類來(lái)處理JSTL標(biāo)簽。

  5. <property name="prefix" value="/WEB-INF/jsp/"/>:設(shè)置視圖解析器的prefix屬性,指定視圖資源(如JSP文件)的前綴路徑。

  6. <property name="suffix" value=".jsp"/>:設(shè)置視圖解析器的suffix屬性,指定視圖資源(如JSP文件)的后綴。

  7. <!--4) 單獨(dú)處理圖片、樣式、js等資源 -->:這是一個(gè)注釋,說(shuō)明接下來(lái)的配置是用于處理靜態(tài)資源。

  8. <!-- <mvc:resources location="/css/" mapping="/css/**"/>:這是一個(gè)注釋掉的配置,如果啟用,它會(huì)將請(qǐng)求路徑以/css/開頭的請(qǐng)求映射到/css/目錄下的靜態(tài)資源(如CSS文件)。

  9. <!-- <mvc:resources location="/js/" mapping="/js/**"/>:這是一個(gè)注釋掉的配置,如果啟用,它會(huì)將請(qǐng)求路徑以/js/開頭的請(qǐng)求映射到/js/目錄下的靜態(tài)資源(如JavaScript文件)。

  10. <!-- <mvc:resources location="WEB-INF/images/" mapping="/images/**"/>:這是一個(gè)注釋掉的配置,如果啟用,它會(huì)將請(qǐng)求路徑以/images/開頭的請(qǐng)求映射到WEB-INF/images/目錄下的靜態(tài)資源(如圖片文件)。

????????總之,這段代碼配置了一個(gè)基本的Spring MVC應(yīng)用程序,包括組件掃描、注解驅(qū)動(dòng)、視圖解析器和靜態(tài)資源處理。

? ? 配置web.xml?

配置步驟:

  1. 配置Spring與Web項(xiàng)目集成
  2. 配置中文亂碼過(guò)濾器
  3. 配置SpringMVC核心控制器DispatcherServlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
  <display-name>Archetype Created Web Application</display-name>
  <!-- Spring和web項(xiàng)目集成start -->
  <!-- spring上下文配置文件 -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring-context.xml</param-value>
  </context-param>
  <!-- 讀取Spring上下文的監(jiān)聽器 -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <!-- Spring和web項(xiàng)目集成end -->

  <!-- 中文亂碼處理 -->
  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <async-supported>true</async-supported>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!-- Spring MVC servlet -->
  <servlet>
    <servlet-name>SpringMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--此參數(shù)可以不配置,默認(rèn)值為:/WEB-INF/springmvc-servlet.xml-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    <!--web.xml 3.0的新特性,是否支持異步-->
    <async-supported>true</async-supported>
  </servlet>
  <servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

? ? 編寫處理器類?

package com.ycxw.web;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @author 云村小威
 * @site blog.csdn.net/Justw320
 * @create 2023-09-04 20:11
 */
@Controller
public class HelloController {
    @RequestMapping(value="/hello")
    public String hello(){
        System.out.println("調(diào)用了hello方法...");
        return null;
    }
}
  1. @Controller使用@Controller注解標(biāo)記這個(gè)類是一個(gè)Spring MVC控制器。這個(gè)注解告訴Spring框架,這個(gè)類將處理HTTP請(qǐng)求。

  2. @RequestMapping(value="/hello")使用@RequestMapping注解映射一個(gè)HTTP請(qǐng)求路徑(在這里是/hello)到控制器的一個(gè)方法(在這里是hello()方法)。當(dāng)用戶訪問(wèn)/hello路徑時(shí),hello()方法將被調(diào)用。

? ? 編寫hello.jsp?

在spring-mvc.xml文件已配置ViewResolver視圖解析器

【SpringMVC】工作流程及入門案例,SSM,java,spring,mvc,后端

? ? 運(yùn)行測(cè)試?

【SpringMVC】工作流程及入門案例,SSM,java,spring,mvc,后端

?【SpringMVC】工作流程及入門案例,SSM,java,spring,mvc,后端

? ? 靜態(tài)資源處理?

所有文件都會(huì)被spring-mvc.xml配置文件進(jìn)行攔截,所以要添加配置,讓處理器掃描掃該資源

<mvc:resources location="/static/" mapping="/static/**"/>

?如路徑:

【SpringMVC】工作流程及入門案例,SSM,java,spring,mvc,后端

運(yùn)行測(cè)試:?

【SpringMVC】工作流程及入門案例,SSM,java,spring,mvc,后端文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-696886.html

到了這里,關(guān)于【SpringMVC】工作流程及入門案例的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包