使用Maven设置Spring Boot服务器应用程序非常简单。但我似乎无法弄清楚为什么我在使用网络应用程序时遇到问题,而且我无法找到有关如何做我想做的事情的明确文档。也许,我试图将一个方形钉固定在一个圆孔中。
通常,人们会构建一个战争并将其部署到一个独立的启动Tomcat实例中。我的理解是,SpringBoot让您拥有一个嵌入式tomcat实例。然后使用java -jar /path/to/target/springbootapp.jar
但是当我添加webapp内容时,我该如何部署它?我是否必须将<packaging>jar</packaging>
更改为<packaging>war</packaging>
?还是我还能用罐子吗?如果我确实改变它的战争,那么我该如何开始呢?
答案 0 :(得分:1)
我猜你已经通过上述评论和自己找到了答案。 这里有一些总结
在pom.xml上打包应该是war,以包含WEB-INF下的静态文件。
以下只是示例
<强>的pom.xml 强>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery-ui-themes</artifactId>
<version>1.11.3</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>datatables</artifactId>
<version>1.10.5</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>datatables-plugins</artifactId>
<version>ca6ec50</version>
</dependency>
您也可以通过指定启动器(JarLauncher / WarLauncher)从命令行运行
命令行
java -cp your-target.war;some-dependency.jar org.springframework.boot.loader.WarLauncher
您也可以通过设置resourceHandlerRegistry来配置像webjars这样的资源路径
<强> WebConfig.java 强>
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.your.spring.controller")
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
if (!registry.hasMappingForPattern("/webjars/**")) {
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
if (!registry.hasMappingForPattern("/images/**")) {
registry.addResourceHandler("/images/**").addResourceLocations("classpath:/images/");
}
if (!registry.hasMappingForPattern("/css/**")) {
registry.addResourceHandler("/css/**").addResourceLocations("classpath:/css/");
}
if (!registry.hasMappingForPattern("/js/**")) {
registry.addResourceHandler("/js/**").addResourceLocations("classpath:/js/");
}
}
@Bean
public InternalResourceViewResolver internalViewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/jsp/");
viewResolver.setSuffix(".jsp");
viewResolver.setOrder(1);
return viewResolver;
}
}
现在你的jsp文件可以拥有webjar中静态内容的路径,如下所示
在jsp文件
<link rel="stylesheet" type="text/css" href="webjars/jquery-ui-themes/1.11.3/smoothness/jquery-ui.css">
<link rel="stylesheet" type="text/css" href="webjars/datatables/1.10.5/css/jquery.dataTables.css">
<link rel="stylesheet" type="text/css" href="webjars/datatables-plugins/ca6ec50/integration/foundation/dataTables.foundation.css">
<script type="text/javascript" src="webjars/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript" src="webjars/jquery-ui/1.11.3/jquery-ui.js"></script>
<script type="text/javascript" src="webjars/datatables/1.10.5/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="webjars/datatables-plugins/ca6ec50/integration/foundation/dataTables.foundation.js"></script>