擺脫localhost - 從0搭建SpringMVC工程

學(xué)習(xí)路徑:
阿里云上部署tomcat
從0搭建SpringMVC工程
[使用Mybatis鏈接遠(yuǎn)程數(shù)據(jù)庫] (http://www.itdecent.cn/p/bba31c8fc26d

image.png

Demo已經(jīng)準(zhǔn)備好了
https://github.com/Amberllo/SpringMVCExample

搭建環(huán)境:Maven + SpringMVC + Tomcat 9.0 + IntelliJ Idea
目標(biāo):在遠(yuǎn)程服務(wù)器,跑一個(gè)基于SpringMVC的服務(wù)
具體步驟:

1.本地安裝Tomcat,Maven,配置環(huán)境變量(略)
2.使用IntelliJ Idea 創(chuàng)建普通Web工程,并設(shè)置工作目錄
3.在Web工程上添加Maven環(huán)境,添加Spring的相關(guān)依賴
4.配置web.xml,以及spring-mvc.xml
5.編寫測(cè)試用的Controller
6.設(shè)置本地調(diào)試的tomcat
7.使用maven打war包,并部署到服務(wù)器中

1.本地安裝Tomcat, Maven

直接到Tomcat官網(wǎng)下載頁https://tomcat.apache.org/download-90.cgi


本地下載zip,和服務(wù)器下載tar.gz并解壓

wget https://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0.35/bin/apache-tomcat-9.0.35.zip
tar -zxvf apache-tomcat-9.0.35.tar.gz

maven也一樣,去官網(wǎng)下載,https://maven.apache.org/download.cgi

image.png

本地下載zip,并設(shè)置環(huán)境變量,并在intelliJ Idea上配置Maven


image.png

在maven的conf/settings.xml,一定一定要配置阿里云鏡像,不然就慢慢等吧。

  <mirrors>
     <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>*</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
  </mirrors>

2.使用IntelliJ Idea 創(chuàng)建普通Web工程,并設(shè)置工作目錄


創(chuàng)建工程的方法很多,這次我選擇了,"裸奔",從0搭建
所以選擇了Java + Web Application
選擇Project Structure,配置好web.xml路徑,src路徑,resources路徑


image.png

建立好webapp目錄,并把web文件夾的全部拖進(jìn)來(WEB-INF/web.xml,index.jsp)最后設(shè)置好工程web.xml的路徑


image.png

3.在Web工程上添加Maven環(huán)境,添加Spring的相關(guān)依賴

剛剛可以直接用maven創(chuàng)建工程..但苦于maven創(chuàng)建選項(xiàng)太多,還是選擇了Web工程從0搭建比較有學(xué)習(xí)價(jià)值


image.png

image.png

這樣,我們的pom.xml 就構(gòu)建好了,在idea上pom.xml也是藍(lán)色的(個(gè)人試驗(yàn)過,直接新建pom.xml文件,最后下載的依賴都關(guān)聯(lián)不到工程上)
添加關(guān)于Spring的核心依賴,并在terminal執(zhí)行 mvn clean install

<?xml version="1.0" encoding="UTF-8"?>
<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.example</groupId>
    <artifactId>SpringWeb</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>


    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>

        <!--1.定義spring 版本號(hào)-->
        <spring.version>5.1.6.RELEASE</spring.version>

    </properties>


    <dependencies>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</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-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-oxm</artifactId>
            <version>${spring.version}</version>
        </dependency>
    </dependencies>
    
</project>

4.配置web.xml,以及spring-mvc.xml

web.xml上,主要配置welcome-file, DispatcherServlet,以及contextConfigLocation

<?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">
    <!--welcome pages-->
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <!--    配置springmvc DispatcherServlet-->
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <!--Sources標(biāo)注的文件夾下需要新建一個(gè)spring文件夾-->
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/spring-*.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
        <async-supported>true</async-supported>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

這里classpath是指代碼里面的路徑。具體是值工程里src/main/java, src/main/resources
剛開始我把spring-mvc.xml,放在java目錄里,后續(xù)會(huì)一直報(bào)錯(cuò)
使用spring-*也是是后續(xù)添加別的配置做準(zhǔn)備。


<?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.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

    <!-- 1.開啟注解模式!非常重要 -->
    <mvc:annotation-driven/>

    <!-- 2.自動(dòng)掃描該包,使SpringMVC認(rèn)為包下用了@controller注解的類是控制器 -->
    <context:component-scan base-package="com.example.mvc">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

    <!-- 默認(rèn)的視圖解析器 在上邊的解析錯(cuò)誤時(shí)使用 (默認(rèn)使用html)- -->
    <bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/WEB-INF/views/"/><!--設(shè)置JSP文件的目錄位置-->
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

這里xsi:schemaLocation要注意,把后面schemaLocation的具體http路徑要補(bǔ)全,否則跑起來tomcat會(huì)無法解析mvc:annotation-driven, context:component-scan 等??傊褪怯靡粋€(gè)補(bǔ)一個(gè),一個(gè)不能少。

5.編寫測(cè)試用的Controller

在配置好的目錄,新建HomeController,簡(jiǎn)單寫寫測(cè)試配置就行了。

package com.example.mvc.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/home")

public class HomeController {
    @RequestMapping("index")
    public String indexTest(){
        return "Index hello";
    }
}

6.設(shè)置本地調(diào)試的tomcat

在Tomcat Server 上,配置Local信息,選擇本地Tomcat


配置發(fā)布信息,選擇Deployment下Artifact


最后運(yùn)行,看看本地效果:

http://localhost:8080/SpringWeb
http://localhost:8080/SpringWeb/home/index

7.使用maven打war包,并部署到服務(wù)器中

要注意,在pom.xml上要配置<packaging>war</packaging>,才打出war包
把war包拷貝到遠(yuǎn)程服務(wù)器上,重啟Tomcat
具體也很簡(jiǎn)單,使用scp命令,這里就不多說了。
最后看看效果:


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容