最近準(zhǔn)備簡單學(xué)一下后臺,不懂基本后臺開發(fā)框架感覺很虛,本科時(shí)候?qū)W了一點(diǎn)點(diǎn)SSH框架都已經(jīng)過時(shí)了。
先看一張圖,這個(gè)是Spring MVC的工作流程,最關(guān)機(jī)的是前端控制器,SpringMVC里面實(shí)現(xiàn)就是DispatcherServlet,等下搭建的時(shí)候就能看見。前端控制器攔截請求,是web的集中訪問點(diǎn),進(jìn)行請求的分發(fā),分發(fā)給相應(yīng)的控制器,與Spring IoC容器無縫集成,然后控制器與下面交互返回結(jié)果,前端控制器再根據(jù)結(jié)果去找對應(yīng)的視圖。

1 Create New Project
選擇maven-webapp。

然后依次填寫包名和ArtifactId。

然后一直選擇Next完成項(xiàng)目的創(chuàng)建。
2 Maven配置
spring mvc需要加入三個(gè)maven依賴。在pom.xml中的dependencies之間加入。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
并在properties節(jié)點(diǎn)中聲明屬性,即${spring.version}值。
<properties>
......
<!--spring版本-->
<spring.version>5.0.5.RELEASE</spring.version>
</properties>
這樣項(xiàng)目構(gòu)建就能自動(dòng)下載對應(yīng)spring需要的包了。

3 構(gòu)建java代碼路徑
在src/main下面新建java目錄,并新建包名目錄,這里我們只先新建controller層。如果發(fā)現(xiàn)java文件不是藍(lán)色的而是白色的說明沒有被識別為代碼路徑,需要手動(dòng)設(shè)置。將java目錄設(shè)置為代碼目錄:右鍵 java -> Make Directory as -> Sources Root。
4 新建spring mvc兩個(gè)配置文件。
在src目錄下新建目錄resources,如果發(fā)現(xiàn)resources文件不是藍(lán)色而是白色說明沒有被識別為資源目錄,需要手動(dòng)設(shè)置,右鍵設(shè)置為資源目錄: 右鍵resources-> Make Directory as -> Resources Root。

在resources下面新建一個(gè)xml作為spring servelet的配置文件,名字可以自己命名,我們這里命名mvc-dispatcher.xml。右鍵resources -> new -> XML Configuration File -> Spring Config,(如果Maven已經(jīng)配置了springmvc相關(guān)的包,這里就會有這個(gè)選項(xiàng))。

同時(shí)在resources下面新建一個(gè)全局的spring mvc配置文件applicationContext.xml,新建方法和上面一樣,因?yàn)楸疚哪繕?biāo)是先打通整個(gè)流程,所以具體作用先不闡述,這個(gè)文件在目前在只有一個(gè)servlet的時(shí)候還沒有什么作用,但是在spring mvc框架中還是會用到的。
現(xiàn)在先不修改,先配置web.xml。
5 配置web.xml
打開webapp/WEB-INF/web.xml。
配置如下,主要是配置兩個(gè)配置文件:
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<!--Spring MVC 配置 并添加監(jiān)聽-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- 字符過濾器 傳值亂碼-->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<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>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--配置前端控制器 進(jìn)行請求分發(fā) DispatcherServlet本質(zhì)也是一個(gè)Servlet -->
<servlet>
<!--名字可以自定義-->
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:mvc-dispatcher.xml</param-value>
</init-param>
<!--標(biāo)記容器啟動(dòng)的時(shí)候就啟動(dòng)這個(gè)servlet-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<!--攔截所有-->
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
注意:web-app下面的節(jié)點(diǎn)有順序要求,如果順序錯(cuò)了會報(bào)錯(cuò)(DTD里面要求)。
6 修改spring mvc配置文件內(nèi)容mvc-dispatcher.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:p="http://www.springframework.org/schema/p"
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/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.xsd">
<!-- 配置包掃描器 -->
<context:component-scan base-package="com.cm.controller"/>
<!-- 配置注解驅(qū)動(dòng) -->
<mvc:annotation-driven/>
<!-- 視圖解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--前綴-->
<property name="prefix" value="/WEB-INF/views/"/>
<!--后綴-->
<property name="suffix" value=".jsp"/>
</bean>
</beans>
說一下幾個(gè)含義:
1、<context:component-scan base-package="com.cm.controller"/>
這個(gè)是定義掃描器,會自動(dòng)掃描包下面的所有有@Controller注解的類,注意值是包名
2、<mvc:annotation-driven/>
開啟注解驅(qū)動(dòng),這樣我們就能用注解。
3、<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
定義視圖解析器,其中包括前綴和后綴,這樣到時(shí)候controller返回字符串的時(shí)候,就會去/WEB-INF/views/下面找對應(yīng)字符串名字的jsp文件。所以需要在視圖里面創(chuàng)建views路徑。
6 新建自己的一個(gè)controller
在代碼目錄的com.cm.controller下面新建一個(gè)java類MyController.java。
package com.cm.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("/developer")
public class MyController {
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String hello() {
return "hello";
}
}
有幾個(gè)關(guān)鍵:
1、 @Controller什么這是一個(gè)Controller,在掃描的時(shí)候就會把這個(gè)bean掃描進(jìn)去
2、 @RequestMapping("/developer")是對應(yīng)URL匹配,訪問之后dispatchservlet回去匹配,就是找RequestMapping對應(yīng)的類和方法。即訪問:http://localhost:8080/developer/hello,dispatchservlet就會調(diào)用hello方法。
3、返回值hello,根據(jù)前面的配置文件會去/WEB-INF/views/下面找hello.jsp。所以需要新建這個(gè)jsp。
7 新建對應(yīng)的視圖
因?yàn)榕渲梦募渲玫囊晥D位置是/WEB-INF/views/,所以在WEB-INF下新建views目錄,并在views目錄下新建hello.jsp。
<html>
<body>
<h2>hello</h2>
</body>
</html>
8 運(yùn)行 配置tomcat
右上角Edit Configuration。

添加本地tomcat。

添加項(xiàng)目。

好了,這樣就可以運(yùn)行了。點(diǎn)擊右上角運(yùn)行。在跳出的主頁里面輸入訪問地址:http://localhost:8080/developer/hello,可以看見訪問結(jié)果。

最后再放上整個(gè)項(xiàng)目的結(jié)構(gòu)圖。

最后的最后,其實(shí)還有個(gè)問題,MVC,現(xiàn)在好像只有C和V,M可以自己建對應(yīng)的文件夾model,因?yàn)檫@個(gè)是最簡單的搭建,所以沒有涉及數(shù)據(jù)庫等的交互。
【SSM框架從零開始】系列文章鏈接:
IntelliJ IDEA搭建最簡單的Spring MVC項(xiàng)目
IntelliJ IDEA下Spring MVC數(shù)據(jù)庫配置與增刪改查開發(fā)
使用Mybatis-Generator自動(dòng)生成Dao、Model層相關(guān)代碼
IntelliJ IDEA搭建SSM框架