您的位置:首页 > 编程语言 > Java开发

解决SpringBoot项目打成jar包访问不了jsp模板的问题: SpringBoot项目集成jsp模板打成war包 然后通过java -jar 命令启动访问

2017-10-27 00:00 1286 查看
摘要: 因为jsp需要servlet支持,打成jar当然不行,不过我们可以打成war包 然后通过java -jar 命令启动访问,效果和jar启动一样,至于怎么将打出的war包放入Tomcat中加载启动,此处暂不讨论。

1、首先配置pom文件

<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>

<!-- 注意:此处的parent必须要这样引入,使用其他方式可能会有问题,本地测试不是该方式引入的时候出错找不到启动类-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.ttt</groupId>
<artifactId>web</artifactId>
<version>1.0-TTT-SNAPSHOT</version>
<packaging>war</packaging>
<name>web-ad</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.2</version>
</dependency>
<!-- 添加 JSTL 支持 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<!--作用域必须写provided-->
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!--作用域必须写provided-->
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<!--定义打包的文件名称-->
<finalName>web</finalName>
<plugins>
<!--打包插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--此处作用忽略web.xml文件(不写的话pom文件会报错,不知网上一些文章没写这个怎么会不报错的),因为war项目启动加载会先找web.xml,具体介绍可自行百度-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>

2、配置文件配置jsp文件路径及页面热加载部署开启(建议生产环境去掉此配置)

spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp
#\u5373\u65F6\u7F16\u8BD1jsp\uFF0C \u751F\u4EA7\u73AF\u5883\u4E0D\u5EFA\u8BAE\u4F7F\u7528\uFF0C\u964D\u4F4E\u6027\u80FD
server.jsp-servlet.init-parameters.development=true

3、在webapp下创建WEB-INF目录,创建getDl.jsp文件存放于该目录下

src/main/webapp/WEB-INF/getDl.jsp

4、启动类配置不变

@SpringBootApplication
public class WebAdApplication {

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

5、Controller跳转页面

@RestController
@RequestMapping(value = "/web")
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class AdController extends WebBaseController {
@GetMapping(value = "/getDl")
public ModelAndView getDl() {

return new ModelAndView("getDl", new HashMap<String,String>("qqq","www"));

}
}

6、至此,配置完毕,切记:此种方式只适合java -jar 命令启动,如果将war包放入Tomcat中启动还是会报错的,至于怎么能将打出的war包放入Tomcat中加载启动,且听下回分解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SpringBoot
相关文章推荐