针对Spring MVC和Maven的入门教程,网上有较多参考资料。这里重点分享一下在Linux系统上,进行安装、部署和示例开发与运行的说明。html
$ cat /etc/centos-release CentOS Linux release 7.4.1708 (Core)
官方下载地址:https://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.htmljava
下载后,解压:linux
$ tar -xzvf ./jdk-8u181-linux-x64.tar.gz
解压后,能够移到你但愿保存的目录。而后经过root权限修改 /etc/profile 文件,追加对JAVA和JRE的配置。例如:nginx
$ sudo vim /etc/profile
追加刚才JDK目录的变量设置JAVA_HOME和JRE_HOME:git
export JAVA_HOME=/path/to/jdk1.8.0_151 export JRE_HOME=/path/to/jdk1.8.0_151/jre
而后,修改PATH变量,追加JDK配置后变成:github
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
保存后,刷新一下系统变量。web
$ source /etc/profile
验证一下Java是否安装成功:spring
$ java -version java version "1.8.0_151" Java(TM) SE Runtime Environment (build 1.8.0_151-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
若是看到相似上面信息,代表Java已安装成功!apache
首先,到官网下载Maven的执行包:apache-maven-3.6.0-bin.tar.gz。vim
官网下载连接:https://maven.apache.org/download.cgi
下载后,一样,进行本地解压:
$ tar -xzvf ./apache-maven-3.6.0-bin.tar.gz
而后,经过root权限修改/etc/profile,追加Maven系统变量。
export MAVEN_HOME=/path/to/apache-maven-3.6.0 export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$MAVEN_HOME/bin
别忘了要载入新的系统变量,使用:source /etc/profile。
测试一下:
$ mvn -v Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00) Maven home: /home/dogstar/env/apache-maven-3.6.0 Java version: 1.8.0_151, vendor: Oracle Corporation, runtime: /home/dogstar/env/jdk1.8.0_151/jre Default locale: zh_CN, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-862.3.3.el7.x86_64", arch: "amd64", family: "unix"
(此部分不是主线,感兴趣能够稍候再体验一下)若是是首次使用Maven,为了加深对Maven的理解,能够参考官网给的例子,一步步学习使用Maven,传送门:https://spring.io/guides/gs/maven/。
到如今,咱们的Java和Maven就已经安装完毕啦!
参考官网的示例:https://spring.io/guides/gs/serving-web-content/
首先,先下载须要的示例代码:
$ git clone https://github.com/spring-guides/gs-serving-web-content.git
进入目录:
$ cd ./gs-serving-web-content/complete
这时,只有Java源代码和一些其余的文件,比较简单(还没生成任何编译的东西):
$ tree . ├── build.gradle ├── gradle │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── mvnw ├── mvnw.cmd ├── pom.xml └── src ├── main │ ├── java │ │ └── hello │ │ ├── Application.java │ │ └── GreetingController.java │ └── resources │ ├── static │ │ └── index.html │ └── templates │ └── greeting.html └── test └── java └── hello └── ApplicationTest.java
重点部分来了,首先,使用maven进行编译。在当前目录(gs-serving-web-content/complete, 有pom.xml的目录),执行如下命令:
$ mvn compile
由于是第一次编译,这时会下载不少东西。会看到有不少相似这样的输出:
Downloaded from central: https://repo.maven.apache.org/maven2/org/iq80/snappy/snappy/0.4/snappy-0.4.pom (15 kB at 42 kB/s) Downloading from central: https://repo.maven.apache.org/maven2/org/tukaani/xz/1.5/xz-1.5.pom Downloaded from central: https://repo.maven.apache.org/maven2/org/tukaani/xz/1.5/xz-1.5.pom (1.9 kB at 5.6 kB/s) Downloading from central: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-archiver/3.4/plexus-archiver-3.4.pom Downloaded from central: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-archiver/3.4/plexus-archiver-3.4.pom (5.3 kB at 16 kB/s) Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/maven-archiver/3.1.1/maven-archiver-3.1.1.jar
稍微等一下,就能编译完成。若是再次编译,而且没有代码修改时就会看到:
编译完成后,会在target目录看到不少编译的class文件,例如(部分生成的class文件):
└── target ├── classes │ ├── application.properties │ ├── hello │ │ ├── Application.class │ │ └── GreetingController.class
这时,还不能直接运行。须要使用maven进行打包,继续执行如下命令:
$ mvn package
等屏幕刷完后,在最后,能够看到【BUILD SUCCESS】字样,例如:
若是有报错,就要根据提示进行修正。
最后,咱们就能够执行示例看到效果啦,想一想都激动!
继续在当前目录,即:/path/to/gs-serving-web-content/complete,执行如下命令:
$ java -jar ./target/gs-serving-web-content-0.1.0.jar
若是正常的话,就能够看到大大的Spring字样,如下相关的输出信息,例如:
打开浏览器,并访问:http://172.16.30.39:8081/greeting?name=dogstar, 就能看到示例网站运行的最终效果啦!
细心的同窗可能已经发现,上面是8081端口,而不是默认的8080端口。这是为何呢?由于极可能8080端口已经被占用,若是补占用,在运行时就会提示这样的错误:
Description: The Tomcat connector configured to listen on port 8080 failed to start. The port may already be in use or the connector may be misconfigured.
解决方案是,新建应用配置文件 ./src/main/resources/application.properties ,而且在里面添加如下配置内容,指定端口。
server.port=8081
搞定!!
补充一点,做为一直喜欢单元测试的我,若是想执行单元测试,能够执行:mvn test,运行后效果以下:
每次都用IP访问,有点不方便,而且不雅观。能够经过Nginx来配置一个域名。
首先,添加配置文件:/etc/nginx/conf.d/springmvc.examples.com.conf ,放置如下信息:
server { listen 80; server_name springmvc.examples.com; location / { proxy_pass http://127.0.0.1:8081; } }
主要是把域名springmvc.examples.com反向代理到本地的8081端口。
而后,重启nginx:
# systemctl reload nginx
最后,在本地客户端的Windows系统,追加如下Host:
172.16.30.39 springmvc.examples.com
这样,就能够把原来的:http://172.16.30.39:8081/greeting?name=dogstar
换成:http://springmvc.examples.com/greeting?name=dogstar