springboot2使用beetl模板,使用maven标准目录结构而不用springboot的目录结构出现的一个问题

newsomeone 发布于 02/22 17:06
阅读 105
收藏 1

@闲大赋  看看能不能艾特下大大

这个是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目录吗

加载中
0
n
newsomeone
@Bean(name = "beetlConfig")
public BeetlGroupUtilConfiguration getBeetlGroupUtilConfiguration() {
    BeetlGroupUtilConfiguration beetlGroupUtilConfiguration = new BeetlGroupUtilConfiguration();
    String root = BeetlUtil.getWebRoot() + File.separator+"WEB-INF/view";
    WebAppResourceLoader webAppResourceLoader = new WebAppResourceLoader(root);
    beetlGroupUtilConfiguration.setResourceLoader(webAppResourceLoader);
    beetlGroupUtilConfiguration.init();
    return beetlGroupUtilConfiguration;
}

这样弄可以,但是springboot jar方式运行的时候就不行了,算了 还是老老实实的放在classpath目录好了

0
loyal
loyal

呵呵呵呵...典型的没学好

返回顶部
顶部