Spring Boot配置外置Tomcat和JSP视图教程(IntelliJ IDEA + Maven)
2017-09-21 10:47
961 查看
相信有不少同学跟我一样:
1、相中了Spring Boot强大快捷的配置;
2、项目组及个人的开发习惯选择JSP视图引擎;
3、生产环境基本通过WAR包发布工程(如果使用JSP视图,也只能做成WAR包,Spring Boot内置Tomcat且打成JAR不支持JSP);
4、使用JSP视图,自然,做开发的时候只能使用外置Tomcat了。(如果使用内置Tomcat,就得打JAR包,可JAR包又不支持JSP!)
基于以上几点需求,我们就搭建一个支持外置Tomcat和JSP视图的Spring Boot项目,具体步骤如下。
步骤一:工具及开发环境
1、IntelliJ IDEA(Eclipse类似);
2、构建工具:Maven3(Gradle类似);
3、JDK8
4、Tomcat8
5、Spring Boot 1.5.7.RELEASE
步骤二:搭建Maven WEB工程(如果你熟悉这步,就直接到步骤三)
1、新建工程
2、选择Maven工程,JDK8,通过maven-archetype-webapp创建
3、maven坐标
4、一路next,最后finish
5、finish后,maven就开始帮我们构建工程,直到控制台打印出“BUILD SUCCESS”字样
6、验证Maven是否将工程构建好,如下图所示,打开项目结构对话框,主要验证Artifacts是否生成,
通常都不会生成,如果没生成,不要手工生成,看下一步:(Artifacts就是部署包或者打成部署包包之前的一个目录文件结构)
7、如果Artifacts没生成,打开pom.xml文件,在文件上右键,然后“Maven->Reimport”,
之后再回到项目结构对话框,就能看到Artifacts已经生成了
8、接着,我们按照Maven标准完善一下工程结构,然后在项目结构对话框中配置一下
9、配置tomcat
10、测试Maven
web项目
步骤三(重点):集成Spring
Boot
1、配置pom.xml文件:其实这个文件中最重要的就是红色标注的地方,
防止外置tomcat和spring
boot内置tomcat的jar包冲突。配置好以后,
再在pom.xml文件上右键“Maven->Reimport”一下。
3、编写Spring
Boot启动类
5、从第4步的结果中,你会发现sayHello.jsp中的EL表达式没有被解释:这主要是由于maven帮我们生成的web.xml的版本是2.3,
2.3默认情况下,jsp中的el表达式会被禁用,2.3以后的版本是默认开启的。如果你依然使用2.3,需要在JSP中做如下设置:
不过,我推荐使用Servlet3.1,所以,你的web.xml需要长下面这种样子:
如果你能在你的机器上看到类似上面那个页面,说明你已经搭建好一个外置tomcat和支持JSP视图的maven spring boot项目。
现在,开始你自己的项目吧,maven中添加jstl依赖等其他依赖。
1、相中了Spring Boot强大快捷的配置;
2、项目组及个人的开发习惯选择JSP视图引擎;
3、生产环境基本通过WAR包发布工程(如果使用JSP视图,也只能做成WAR包,Spring Boot内置Tomcat且打成JAR不支持JSP);
4、使用JSP视图,自然,做开发的时候只能使用外置Tomcat了。(如果使用内置Tomcat,就得打JAR包,可JAR包又不支持JSP!)
基于以上几点需求,我们就搭建一个支持外置Tomcat和JSP视图的Spring Boot项目,具体步骤如下。
步骤一:工具及开发环境
1、IntelliJ IDEA(Eclipse类似);
2、构建工具:Maven3(Gradle类似);
3、JDK8
4、Tomcat8
5、Spring Boot 1.5.7.RELEASE
步骤二:搭建Maven WEB工程(如果你熟悉这步,就直接到步骤三)
1、新建工程
2、选择Maven工程,JDK8,通过maven-archetype-webapp创建
3、maven坐标
4、一路next,最后finish
5、finish后,maven就开始帮我们构建工程,直到控制台打印出“BUILD SUCCESS”字样
6、验证Maven是否将工程构建好,如下图所示,打开项目结构对话框,主要验证Artifacts是否生成,
通常都不会生成,如果没生成,不要手工生成,看下一步:(Artifacts就是部署包或者打成部署包包之前的一个目录文件结构)
7、如果Artifacts没生成,打开pom.xml文件,在文件上右键,然后“Maven->Reimport”,
之后再回到项目结构对话框,就能看到Artifacts已经生成了
8、接着,我们按照Maven标准完善一下工程结构,然后在项目结构对话框中配置一下
9、配置tomcat
10、测试Maven
web项目
步骤三(重点):集成Spring
Boot
1、配置pom.xml文件:其实这个文件中最重要的就是红色标注的地方,
防止外置tomcat和spring
boot内置tomcat的jar包冲突。配置好以后,
再在pom.xml文件上右键“Maven->Reimport”一下。
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example.test</groupId> <artifactId>helloworld</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>helloworld Maven Webapp</name> <url>http://maven.apache.org</url> <!-- 继承Spring Boot --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.7.RELEASE</version> <relativePath/> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <druid.version>1.1.3</druid.version> </properties> <dependencies> <!-- Spring Boot web依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 运行外部tomcat,打包的时候排除starter-web中依赖的embed tomcat,预防JAR包冲突 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <!-- 运行外部tomcat,打包的时候排除EL表达式依赖,预防JAR包冲突 --> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-el</artifactId> <scope>provided</scope> </dependency> <!-- 运行外部tomcat,打包的时候排除tomcat-jdbc依赖,预防JAR包冲突 --> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jdbc</artifactId> <scope>provided</scope> </dependency> <!-- 运行外部tomcat,打包的时候排除tomcat-juli依赖,预防JAR包冲突 --> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-juli</artifactId> <scope>provided</scope> </dependency> </dependencies> <build> <finalName>helloworld</finalName> <plugins> <!-- spring boot maven打包插件 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>2、创建并配置Spring Boot的配置文件,配置JSP视图路径及后缀
3、编写Spring
Boot启动类
package com.example.test.helloworld; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.support.SpringBootServletInitializer; /** * 项目启动入口类,由于是外部tomcat运行项目,所以需要集成SpringBootServletInitializer */ @SpringBootApplication public class Application extends SpringBootServletInitializer { /** * 外部tomcat运行项目,启动Spring Boot的钩子 * @param builder * @return */ @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(this.getClass()); } /** * Spring Boot本身的Main启动入口 * @param args */ public static void main(String[] args) { SpringApplication.run(Application.class, args); } }3、编写Controller和对应的jsp
package com.example.test.helloworld.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller public class HelloworldController { @RequestMapping(value = "/sayHello", method = RequestMethod.GET) public String sayHello(Model model) { model.addAttribute("name", "Winter"); return "sayHello"; } }
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h2>你好,${name}!</h2> </body> </html>4、启动项目,并访问SyaHello
5、从第4步的结果中,你会发现sayHello.jsp中的EL表达式没有被解释:这主要是由于maven帮我们生成的web.xml的版本是2.3,
2.3默认情况下,jsp中的el表达式会被禁用,2.3以后的版本是默认开启的。如果你依然使用2.3,需要在JSP中做如下设置:
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
不过,我推荐使用Servlet3.1,所以,你的web.xml需要长下面这种样子:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <display-name></display-name> </web-app>最后再重启项目,刷新一下你的页面:
如果你能在你的机器上看到类似上面那个页面,说明你已经搭建好一个外置tomcat和支持JSP视图的maven spring boot项目。
现在,开始你自己的项目吧,maven中添加jstl依赖等其他依赖。
相关文章推荐
- intellij idea + bitbucket + maven + spring-boot配置记录
- Intellij IDEA springboot maven 配置mybatis-generator,自动从数据库中生成代码
- SpringBoot初始教程之Tomcat、Jetty优化以及Https配置(九)
- IntelliJ IDEA 配置 jdk tomcat maven
- spring boot项目相关配置用war包部署到tomcat下详细教程
- Idea 打包maven项目 以及spring boot 的自动配置
- Idea 打包maven项目 以及spring boot 的自动配置
- Idea Spring boot+Maven 打包war 发布 外部tomcat
- Intellij IDEA新建maven项目和配置tomcat
- idea创建springboot项目图文教程(配置文件)(五)
- intellij idea + spring boot + spring data jpa + druid + maven + mysql + thymeleaf
- IntelliJ IDEA + Spring Boot + maven + (单)多数据源
- springboot 在idea多模块下 子模块的web项目用内置tomcat启动访问jsp报404
- IDEA 配置maven + SpringBoot项目在新电脑上的配置运行
- SpringBoot初始教程之Tomcat、Jetty优化以及Https配置(九)
- Intellij IDEA 搭建Spring Boot项目(二)spring-dao的相关配置
- Intellij环境配置(Java+Tomcat+Maven+Spring)
- [置顶] idea创建springboot项目图文教程(配置文件)(五)
- IntelliJ IDEA Spring Boot(8)使用JSP,打包jar文件运行带有jsp的项目
- IDEA上创建 Maven SpringBoot项目发布到Tomcat