SpringMVC框架入門看這一篇就夠了

Spring MVC體系結構與處理請求控制器

一、基本認識
我們常說的SSM項目,第一個“S”,就是我今天要給大家說的SpringMVC,第二個“S”是什麼呢?是Spring,最後一個“M”就是Mybatis持久層框架,它封裝了JDBC操作,讓我們在對數據庫進行操作的時候可以更加便捷。
SpringMVC它主要是來幹嘛的呢?就像我上文說到的,Mybatis把JDBC封裝了,那SpringMVC又做了什麼呢?核心就是IOC,控制反轉,對所有的對象,比如說Service層,對象的控制交給了Spring,還有一些關於事務的管理,AOP切面編程,公共的一些代碼也可以交由Spring來管理。
Mybatis替代了JDBC,封裝了連接數據庫等的細節,那SpringMVC它替代了什麼呢?他實現了IOC和AOP對對象的控制,其實它代替可以理解爲是替代了Servlet這一層。在用MVC框架之前,用Servlet很麻煩,要繼承一下Servlet,實現doget和dopost等的方法,所有請求過來都會經過doget和dopost等的方法。根據你傳參數的不同來決定訪問哪一個方法。實現請求的區分。但是這個方法太繁瑣了。所以我們要來學習MVC來把Servlet來替換掉,因爲它太繁瑣了,實現一個控制層的反轉。
springMVC流程圖
上圖是一個MVC的架構圖。
實現的是一個Controller到Model,Model就是模型,也就是Dao層,JavaBean,到View視圖層,給用戶看的一個頁面,Jsp等等。這就是MVC,分層的一個框架。請求會經過controller(控制器)-》調Service層-》調Dao層,最後Controller來決定調一個Jsp或一個Html頁面來返回給用戶看。
二、基本使用
SpringMVC如何搭建?也非常簡單
1.下載jar文件並導入工程(jar包)
-spring-web-3.2.13.RELEASE.jar
-spring-webmvc-3.2.13.RELEASE.jar
2.配置文件(配置xml文件)
-在web.xml中配置Servlet
-創建Spring MVC的配置文件
3.創建Controller處理請求的控制器(java的程序調用)
搭建:
第一步:創建一個web的項目,一定要勾選web!下面是流程圖:
創建一個web工程
給項目起名字,以及目錄放置就不贅述了
這是創建完成的樣子,這裏用的IDE是IDEA;
工程創建好的樣子
一定要有一個帶藍點的web文件夾以及下面的WEB-INF和web.xml的文件,纔是一個web工程,當然也有創建失敗的情況,也就是web文件夾不帶小藍點,這個在IDEA中怎麼處理我們以後再講。因爲這裏一定要有web組件。它是一個web項目。爲了真正的讓大家理解,這裏我們不用MAVEN來管理jar包,採用直接添加jar包的方式來講解。
引jar包,我們要在WEB-INF下創建一個lib文件夾,用來存放jar包;
創建jar包文件夾
好了,存放jar包的地方創建完成之後,我們就可以去倉庫找一下對應的jar包添加了。
給工程添加jar包
上圖是給工程添加好jar包的樣子,把jar包放進lib文件夾後一定要記得全部選中你要添加的jar包然後add as libary,這樣jar包纔會生效。
ok,這樣第一步給工程引jar包就完成了
第二步:配置xml文件
1.配置web.xml文件:

<?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_4_0.xsd"
         version="4.0">
    <display-name></display-name>
    <!--SpringMVC-Servlet配置-->
    <servlet>
        <servlet-name>springmvc</servlet-name><!--首先是起個名字,這裏我叫springmvc,叫什麼無所謂-->
    <!--這裏是用mvc框架與Servlet最大的不同,以前用Servlet的時候,起完名字要給一個class,也就是這個變量名到底是哪個類
    即是自己寫的一個Servlet,但是這裏不同了,這裏用的是框架,也就是SpringMVC寫的Servlet:把包名.類名直接帶進來就ok
    "org.springframework.web.servlet.DispatcherServlet"-->
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--配置找springmvc的配置文件路徑,不配置的話,他默認會去WEB-INF的目錄下找-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
    </servlet>
    <!--以前指向的是自己寫的Servlet,現在指向的是SpringMVC的Servlet-->

    <!--聲明完Servlet之後,緊接着就要聲明一下哪一些映射能過去,也就是路徑,這裏配/user-->
    <!--這個是什麼意思呢?這個就是如果請求到這個項目,如果請求的路徑中包含/user就會去找springmvc,找到它就會去找servlet-name
    的springmvc,找到它的話,就找到了servlet-class中我們配置的SpringMVC的Servlet,找到"org.springframework.web.servlet.DispatcherServlet"
    請求就進去了,只不過這個Servlet不是我們自己寫的,而是框架中帶的-->
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/user/*</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>
ok,配置web.xml文件的詳細內容和講解我都放在註釋中去講解了,下面我們還需要配一個文件,springmvc.xml;

首先新建一個名字爲resources的文件夾,將他標記爲資源文件夾,怎麼標記呢?創建完文件夾之後,右鍵Mark Directory as,將這個文件夾標記爲資源文件夾:
標記資源文件夾
可能有人想問,xml不是配好了嗎?這裏要注意,web.xml中配置的只是,請求來了以後要去找Servlet,去找SpringMVC的DispatcherServlet。
springmvc.xml的詳細配置與講解:

<?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.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<!--請求到了SpringMVC的Servlet之後,我們這裏要接受請求之後對請求做一個處理-->
 <!--既然我們這裏用了框架,就要將Controller控制器交給Spring去管理,怎麼就交給Spring去管理了呢?
 存到Spring容器裏就好了嘛,所以下面我們要加這麼一個東西:-->
    <!--掃描controller包,既然交給Spring管理就要讓Spring去掃描,發現這些控制器-->
    <context:component-scan base-package="com.csdn.controller"/>

    <!--做完上面的事情之後,就要開啓MVC註解,這裏不開註解會很麻煩,開了之後只需要去掃描你加的註解就可以做很多事情-->
    <mvc:annotation-driven/>

    <!--視圖解析器,這個是用來幹嘛的呢?爲了把所有的控制器交給Spring去管理,簡單來講,就是controller控制器
    一會兒會返回一個字符串,這個字符串會解析爲一個路徑來給到前端-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--給controller控制器加一個前綴加一個後綴,就會定位到一個詳細的路徑中去了,定位到了一個詳細的頁面路徑
        不就給到前端去了嗎?-->
        <!--前綴:在方法返回的字符串前面拼接上-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--後綴:在方法返回的字符串後面拼接上-->
        <property name="suffix" value=".jsp"/>

    </bean>

</beans>

下面就可以寫代碼了(一個小栗子):
先寫一個controller(UserController)下面是代碼和詳解:

package com.csdn.controller;

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

//首先加一個註解@Controller,將這個對象new出來,將當前的類實例化,並存入Spring容器,
// 標記爲他是一個控制器,這就是爲什麼我們要在web.xml中配置掃描controller包的意義
@Controller
public class UserController {
    //這個註解意思是如果訪問到了這個項目,進入了我的Servlet,帶一個/user就進來了,
    //然後就去@RequestMapping上去找,去匹配,如果跟這個路徑匹配到了,就會進去這個對應的方法
    @RequestMapping("/hello")
    public String hello(){
        System.out.println("走這個方法了嗎?");
        return "helloWorld";
        //ok,它返回一個字符串,那還記得我們在web.xml中配置什麼了嗎?對,前綴和後綴
        //返回一個字符串之後,他會變成什麼樣子呢?會變成下面這個樣子:
        //WEB-INF/jsp/helloWorld.jsp  也就是說他會去找這個地址,把這個文件響應給用戶
        //那我們就去對應路徑下創建一個helloWorld.jsp,讓他能訪問到
    }
}

去對應的路徑下創建helloWorld.jsp
返回前端的頁面
ok,將項目部署到tomcat中的過程我就不贅述了,下面跑起來看一下效果
頁面效果
效果很完美,再來看一下控制檯:
控制檯打印效果
效果一樣很完美。
OK這就是SpringMVC的入門配置與使用,後續的高階講解慢慢我會寫給大家。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章