springboot2使用beetl模板,使用maven标准目录结构而不用springboot的目录结构出现的一个问题
@闲大赋 看看能不能艾特下大大
这个是maven风格的目录结构
打成war包的目录会是这样
打包出来的 static目录在项目一级目录下,页面文件夹在WEB-INF下,这种目录结构相比较springboot的默认目录结构是我比较喜欢的.
beetl的配置
@Configuration
public class BeetlConf {
@Bean(name = "beetlConfig")
public BeetlGroupUtilConfiguration getBeetlGroupUtilConfiguration() {
BeetlGroupUtilConfiguration beetlGroupUtilConfiguration = new BeetlGroupUtilConfiguration();
beetlGroupUtilConfiguration.setResourceLoader(new ClasspathResourceLoader(BeetlConf.class.getClassLoader(), "/WEB-INF/view"));
beetlGroupUtilConfiguration.init();
return beetlGroupUtilConfiguration;
}
@Bean(name = "beetlViewResolver")
public BeetlSpringViewResolver getBeetlSpringViewResolver(@Qualifier("beetlConfig") BeetlGroupUtilConfiguration beetlGroupUtilConfiguration) {
BeetlSpringViewResolver beetlSpringViewResolver = new BeetlSpringViewResolver();
beetlSpringViewResolver.setContentType("text/html;charset=UTF-8");
beetlSpringViewResolver.setOrder(0);
beetlSpringViewResolver.setConfig(beetlGroupUtilConfiguration);
return beetlSpringViewResolver;
}
}
pom:
<?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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>packagetest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>packagetest</name>
<description>Demo project for Spring Boot</description>
<packaging>war</packaging>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--beetl模板引擎依赖-->
<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetl-framework-starter</artifactId>
<version>1.1.73.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
controller:
@Controller
public class BeetlAction {
@GetMapping({"/","/index","/beetl"})
public String beetl(Model model){
model.addAttribute("beetl","测试一下");
return "/index.html";
}
}
application.yml
server: port: 8089
打开浏览器一瞅,好咧 404
应该是没有找到 项目/WEB-INF/view/index.html这个文件
看了下配置应该没有问题呀,之前springboot也配置过,没出现这个问题.区别就是之前使用的springboot的默认目录,
类似这样的
它把静态文件和页面文件放在了resources中.那就是打包的时候会static templates 这两个文件夹打包到 /项目/WEB-INF/classes下面
好吧,验证一下...
pom中添加
<resources> <resource> <directory>src/main/webapp</directory> </resource> <resource> <directory>src/main/resources</directory> </resource> </resources>
把webapp也当做资源路径打包.
打包结果:
可以看到 static 和 WEB-INF 这两个目录已经在 /项目/WEB-INF/classes 下面了(个人内心是拒绝的啊,不喜欢静态文件和页面文件放在classes目录=.=)
上图红框中也有static 和view两个文件夹.应该是idea默认会给webapp这个名字的文件夹下面这样打包.
修改下webapp文件夹名称 为webwork,再次打包
没有了.然后执行下 看看能不能成功.
OK 可以成功访问
but!!这并不是我想要的结果(上面说了不喜欢这样打包后的结构),或者说没有找到问题出在那儿.
新手三连问=.=
为什么我这样配置 index.html是在 /项目/WEB-INF/classes/WEB-INF/view 下面找 而不是 /项目/WEB-INF/view下面,是beetl配置那儿出了问题?
怎么配置获取到maven这种包结构的 view?
你们习惯把view和静态文件放classes目录吗
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我觉得springboot 默认的目录结果比maven标准目录好,清晰
这样弄可以,但是springboot jar方式运行的时候就不行了,算了 还是老老实实的放在classpath目录好了