学习路径:
阿里云上部署tomcat
从0搭建SpringMVC工程
[使用Mybatis链接远程数据库] (https://www.jianshu.com/p/bba31c8fc26d
Demo已经准备好了
https://github.com/Amberllo/SpringMVCExample
搭建环境:Maven + SpringMVC + Tomcat 9.0 + IntelliJ Idea
目标:在远程服务器,跑一个基于SpringMVC的服务
具体步骤:
1.本地安装Tomcat,Maven,配置环境变量(略)
2.使用IntelliJ Idea 创建普通Web工程,并设置工作目录
3.在Web工程上添加Maven环境,添加Spring的相关依赖
4.配置web.xml,以及spring-mvc.xml
5.编写测试用的Controller
6.设置本地调试的tomcat
7.使用maven打war包,并部署到服务器中
1.本地安装Tomcat, Maven
直接到Tomcat官网下载页https://tomcat.apache.org/download-90.cgi
本地下载zip,和服务器下载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也一样,去官网下载,https://maven.apache.org/download.cgi
本地下载zip,并设置环境变量,并在intelliJ Idea上配置Maven
在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 创建普通Web工程,并设置工作目录
创建工程的方法很多,这次我选择了,"裸奔",从0搭建
所以选择了Java + Web Application
选择Project Structure,配置好web.xml路径,src路径,resources路径
建立好webapp目录,并把web文件夹的全部拖进来(WEB-INF/web.xml,index.jsp)最后设置好工程web.xml的路径
3.在Web工程上添加Maven环境,添加Spring的相关依赖
刚刚可以直接用maven创建工程..但苦于maven创建选项太多,还是选择了Web工程从0搭建比较有学习价值
这样,我们的pom.xml 就构建好了,在idea上pom.xml也是蓝色的(个人试验过,直接新建pom.xml文件,最后下载的依赖都关联不到工程上)
添加关于Spring的核心依赖,并在terminal执行 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 版本号-->
<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标注的文件夹下需要新建一个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目录里,后续会一直报错
使用spring-*也是是后续添加别的配置做准备。
<?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.自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->
<context:component-scan base-package="com.example.mvc">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!-- 默认的视图解析器 在上边的解析错误时使用 (默认使用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/"/><!--设置JSP文件的目录位置-->
<property name="suffix" value=".jsp"/>
</bean>
</beans>
这里xsi:schemaLocation要注意,把后面schemaLocation的具体http路径要补全,否则跑起来tomcat会无法解析mvc:annotation-driven, context:component-scan 等。总之就是用一个补一个,一个不能少。
5.编写测试用的Controller
在配置好的目录,新建HomeController,简单写写测试配置就行了。
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.设置本地调试的tomcat
在Tomcat Server 上,配置Local信息,选择本地Tomcat
配置发布信息,选择Deployment下Artifact
最后运行,看看本地效果:
http://localhost:8080/SpringWeb
http://localhost:8080/SpringWeb/home/index
7.使用maven打war包,并部署到服务器中
要注意,在pom.xml上要配置<packaging>war</packaging>,才打出war包
把war包拷贝到远程服务器上,重启Tomcat
具体也很简单,使用scp命令,这里就不多说了。
最后看看效果: