副标题#e#
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内容修改如下:
#p#副标题#e##p#分页标题#e#
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,表明安装成功。