springboot2使用beetl模板,使用maven标准目录结构而不用springboot的目录结构出现的一个问题
时间: 2019-02-22来源:开源中国
前景提要
HDC调试需求开发(15万预算),能者速来!>>>
@闲大赋 看看能不能艾特下大大
这个是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目录吗

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行