[bigdata-042]从头搭建 spring+mvc+boot+tomcat


1. 需求
1.1 在spring.io下载一个spring mvc的demo,能运行成功。
1.2 按照自己的理解,重写这个例子,并做适当修改,运行成功。
1.3 将这个例子打包成war包,放到tomcat运行成功。


2. 在spring.ip下载spring mvc并运行
2.1 spring的例子在 http://spring.io/guides/gs/serving-web-content/
2.2 下载例子
    git clone https://github.com/spring-guides/gs-serving-web-content.git
2.3 将例子编译成可执行jar包
    cd into gs-serving-web-content/initial
    按照这个例子流程,将相关java文件和html模板文件编辑好。然后执行编译。
    ./mvnw clean package
    
2.4 执行
    java -jar target/gs-serving-web-content-0.1.0.jar

2.5 在浏览器地址输入http://localhost:8080/greeting,能看到结果。

2.6 注意观察编译和执行过程,如果发现有报错,检查原因。在编译时发现.m2目录下内嵌的tomcat的jar包出错了,删除这些jar然后重新编译。


3. 修改这个例子
3.1 命令如下:
mkdir myspringweb
mkdir -p src/main/java/hello
vim src/main/java/hello/Application.java
vim src/main/java/hello/GreetingController.java
mkdir -p src/main/resources/templates
vim src/main/resources/templates/greeting.html

3.2 Application.java内容如下

package hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;

@SpringBootApplication
public class Application extends SpringBootServletInitializer{

    public static void main(String[] args){
        SpringApplication.run(Application.class,args);
    }
    
}



3.3 GreetingController.java内容如下

package hello;


import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class GreetingController{
	@RequestMapping("/greeting")
	public String greeting(@RequestParam(value="name",required=false,defaultValue="world") String name,Model model){
		model.addAttribute("name",name);
 		return "greeting";
	}
}




3.4 greeting.html内容如下

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
  <head>
    <title>Greeting started</title>
    <meta http-equiv="Content-Type" content="text/html; chareset=UTF-8"/>
  </head>

  <body>
    <p th:text="'hello,'+${name}+'!'"/>
  </body>
</html>

3.6 pom.xml的内容如下:

<?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>org.springframework</groupId>
    <artifactId>myspringweb</artifactId>
    <version>0.1.0</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.1.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

    <properties>
        <java.version>1.8</java.version>
    </properties>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>



3.5 编译
mvn clean package
提示找不springApplicaiton

mvnw clean pacakge
错误: 找不到或无法加载主类 org.apache.maven.wrapper.MavenWrapperMain
解决方式: 将运行正常的那个项目的root目录下的.mvn目录完整复制到本项目下既可。

3.6 运行
java -jar target/myspringweb-0.1.0.jar

3.7 在浏览器输入localhost:8080/greeting,能看到helloworld,功能ok



4. 将3.的项目打包成war包

4.1 参考文档
http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#build-tool-plugins-maven-packaging
http://blog.csdn.net/javahighness/article/details/52515226

4.2 根据4.1的第二个文档修改,在pom.xml里,增加<packaging>和<dependency>,以及修改Application.java


4.3 pom.xml内容如下

<?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>org.springframework</groupId>
    <artifactId>myspringweb</artifactId>
    <version>0.1.0</version>


    <packaging>war</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.1.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
              <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
              </exclusion>
            </exclusions>
        </dependency>

        <dependency>
    		<groupId>javax.servlet</groupId>
		    <artifactId>javax.servlet-api</artifactId>
		    <version>3.1.0</version>
		    <scope>provided</scope>
	</dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <properties>
        <java.version>1.8</java.version>
    </properties>


    <!--build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build-->

</project>

4.4 Application.java内容修改如下:

package hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;

@SpringBootApplication
public class Application extends SpringBootServletInitializer{

    /*
    public static void main(String[] args){
        SpringApplication.run(Application.class,args);
    }
    */

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        // 注意这里要指向原先用main方法执行的Application启动类
        return builder.sources(Application.class);
    }
}
4.3 然后执行     ./mvnw clean package   此时,在target目录下会生成一个war文件。 5. 安装tomcat 5.1 tomcat的官网在这里 http://tomcat.apache.org/whichversion.html 5.2 tomcat的版本跟jdk相关。jdk1.8已经广泛使用,选择tomcat 9优先。 5.3 下载 http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.0.M17/bin/apache-tomcat-9.0.0.M17-deployer.tar.gz 将它解压缩到~/usr/tomcat/apache-tomcat-9.0.0.M17 5.4 启动tomcat测试是否成功 cd ~/usr/tomcat/apache-tomcat-9.0.0.M17/bin ./startup.sh 5.5 关闭tomcat ./shutdown.sh 5.6 将 ~/tmp/myspringweb/myspringweb-0.1.0.war复制到~/usr/tomcat/apache-tomcat-9.0.0.M17/webapps 5.7 重启tomcat 5.8 在浏览器访问 http://localhost:8080/myspringweb-0.1.0/greeting 这时候会出来helloworld,表明安装成功。

相关文章

文章浏览阅读5.3k次,点赞10次,收藏39次。本章详细写了mysq...
文章浏览阅读1.8k次,点赞50次,收藏31次。本篇文章讲解Spar...
文章浏览阅读7.8k次,点赞9次,收藏34次。ES查询常用语法目录...
文章浏览阅读928次,点赞27次,收藏18次。
文章浏览阅读1.1k次,点赞24次,收藏24次。作用描述分布式协...
文章浏览阅读1.5k次,点赞26次,收藏29次。为贯彻执行集团数...