文档章节

(八)改为Spring Boot+enjoy模板的说明

sskicgah
 sskicgah
发布于 2017/11/14 21:03
字数 842
阅读 464
收藏 4
点赞 0
评论 4

Spring Boot很火,于是也这么试试,代码在git的springboot分支

用了Spring Boot,去掉了很多maven依赖的引入。在idea开发,用内置的tomcat,这个依赖会引发servlet找不到的异常,注释掉就可以解决。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
   <!-- <scope>provided</scope>-->
</dependency>

在改造时折腾了几天,就是关于使用默认的jsp,和改成其他模板的问题。Spring Boot不推荐用jsp,参考FreeMarker、Thymeleaf、Enjoy 模板引擎性能测试,决定用jfinal的enjoy模板。实际上也很少用到模板的模块,因为前端代码大部分是用js完成的。

	@Override
	public void addViewControllers(ViewControllerRegistry registry) {
		registry.addViewController("/").setViewName("forward:/index");
		registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
		super.addViewControllers(registry);
	}

过程大概是这样,首先原来的管理后台,默认首页是在web.xml配置的,在继承WebMvcConfigurerAdapter之后,可以设置首页,这里的forward,也可以转发到index.html,但是,网页里面用到了${ctx}的变量,直接访问jsp会被Spring Boot跳转到error页面,而访问html页面,这个变量没有解析,导致页面的样式路径404。最后幡然醒悟,直接访问页面是不会经过ViewResolver处理页面的变量,也就达不到想要的结果。于是访问页面的操作都由Spring做跳转,不是直接访问静态页面的url。

而在用#(ctx)这个变量的时候,一直想要自动获取,试了很久也没弄出来,方法太麻烦,想到application.properties有个地方是配置服务根路径的,直接配置了server.context-path,注入配置文件中的配置到contextPath,于是 jfr.addSharedObject("ctx", contextPath); 就完成设置,也不用去做其他复杂操作。

在页面有个获取js文件时间戳的方法,写到Function的静态方法,之后通过enjoy设置SharedMethod,页面就可以直接用。这个也没有太好的方法去获取静态文件的路径,直接按照约定写死static目录。

//Java中设置
jfr.addSharedMethod(Function.class);

//js中使用
<script type="text/javascript" src="#(ctx)/js/frame/main.js?v=#(getTime('js/frame/main.js'))"></script>

页面还有个地方需要注意的,就是页面用了layui的模板,这里和enjoy有冲突,加个换行稍微改一下就行。

	<script type="text/html" id="nodeTpl">
		{{# if(d.nodetype == '0') {
			return '父节点';
		} else {
			return '子节点';
		} }}
	</script>
    // 改为 -->
    <script type="text/html" id="nodeTpl">
		{{#
		if(d.nodetype == '0') {
			return '父节点';
		} else {
			return '子节点';
		} }}
	</script>

接下来说说mybatis遇到的问题,配置里直接配置,看到有mybatis.type-aliases-package,mybatis.mapper-locations这两个可以配置的参数,想起以前这两个配置是直接写在SqlMapConfig.xml的,这次就一起换掉,配置文件只留下setting的内容。

    sqlSessionFactory.setTypeAliasesPackage(aliasPackage);
    try {
        sqlSessionFactory.setMapperLocations(
            new PathMatchingResourcePatternResolver().getResources(mapperLocations));
    } catch (IOException e) {
        e.printStackTrace();
    }

这里设置别名的时候,遇到找不到别名的问题。1.mybatis默认是用类的短名小写作为别名的key,所以在xml用到类的改成小写。2.typeAliasesPackage是设置别名的基础包名,会扫描指定包及子包的类,自动加载到别名的map中,这里要写具体的包名,不能写正则表达式。p.s.就是因为写了正则表达式导致找不到的,可以考虑把所有用到的类按照业务归类到子包中。

以上就是这次改造的总结,完。

© 著作权归作者所有

共有 人打赏支持
sskicgah
粉丝 7
博文 43
码字总数 32720
作品 0
福州
程序员
加载中

评论(4)

sskicgah
sskicgah

引用来自“小小编辑”的评论

厉害
:relaxed:
小小编辑
小小编辑
厉害
sskicgah
sskicgah

引用来自“等待美丽的花儿”的评论

其实你可以springboot:run运行就不会报那个servlet错误
试了一下,确实不会报错了:+1:最早是直接运行main的,后来用了springboot:run就没去试了,又学到一点:grin:3Q
等待美丽的花儿
等待美丽的花儿
其实你可以springboot:run运行就不会报那个servlet错误
Spring Boot整合 Thymeleaf 模板引擎

什么是Thymeleaf Thymeleaf是一款用于渲染XML、XHTML、HTML5内容的模板引擎。类似Velocity,FreeMaker模板引擎,它也可以轻易的与Spring MVC等Web框架进行集成作为Web应用的模板引擎。 Thym...

Java技术栈 ⋅ 06/08 ⋅ 0

ShenzhenMirren/Spring-generator

基本介绍 官方QQ交流群号:519714660; Spring-generator是基于javafx8开发的图形界面Spring代码生成器,使用 Apache FreeMarker 作为代码文件的模板,用户可以一键将数据库中的表生成为任意风格...

ShenzhenMirren ⋅ 06/19 ⋅ 0

蚂蚁中间件 SOFABoot v2.3.2 和 SOFARPC v5.3.2 发布

SOFABoot v2.3.2 发布 SOFABoot 是蚂蚁金服开源的基于 Spring Boot 的研发框架,它在 Spring Boot 的基础上,提供了诸如 Readiness Check,类隔离,日志空间隔离等等能力。在增强了 Spring B...

章耿 ⋅ 05/04 ⋅ 1

RonCoo/roncoo-adminlte-springmvc

龙果开源-后台管理系统 项目介绍 框架完全是基于Spring IO platform,绝对拥抱Spring,版本的依赖关系再不用担心。 前端基于 龙果开源-后台管理UI Roncoo AdminLTE,高端大气上档次。 代码自...

RonCoo ⋅ 2016/11/09 ⋅ 0

【死磕Sharding-jdbc】—基于 SSM 集成sharding-jdbc2.0.3

原文作者:阿飞Javaer 原文链接:https://www.jianshu.com/p/7b6997c3586d 本篇文章讲解如何在ssm(spring、springmvc、mybatis)结构的程序上集成sharding-jdbc(版本为2.0.3)进行分库分表...

飞哥-Javaer ⋅ 05/27 ⋅ 0

说说 Spring 框架中的 Factory Bean

一般情况下, Spring 通过反射机制利用 的 class 属性指定实现类来实例化 bean。 但在某些情况下,实例化 bean 的过程比较复杂,如果按照传统的方式,则需要在 中提供大量的配置信息,这时如...

deniro ⋅ 05/07 ⋅ 0

spring boot 2.x静态资源会被HandlerInterceptor拦截的原因和解决方法

在spring boot 1.5.x中,resources/static目录下的静态资源可以直接访问,并且访问路径上不用带static,比如静态资源放置位置如下图所示: 那么访问静态资源的路径可以是: http://localhost...

Mr---D ⋅ 04/13 ⋅ 0

Spring Boot干货系列: (四)开发Web应用之Thymeleaf篇

        前言   Web开发是我们平时开发中至关重要的,这里就来介绍一下Spring Boot对Web开发的支持。   正文   Spring Boot提供了spring-boot-starter-web为Web开发予以支持,s...

后端编程嘟 ⋅ 2017/03/13 ⋅ 0

Java开发框架搭建:配置文件

工欲善其事,必先利其器。我们知道,Java开发最难的部分,就是初期框架的搭建工作。本文将记录一个可用的Java开发框架的搭建过程,以期满足大多数Java项目的开发。 本项目采用Maven管理Jar包...

纠结名字 ⋅ 2015/08/13 ⋅ 0

Spring集成Redis方案(spring-data-redis)(基于Jedis的单机模式)(待实践)

说明:请注意Spring Data Redis的版本以及Spring的版本!最新版本的Spring Data Redis已经去除Jedis的依赖包,需要自行引入,这个是个坑点。并且会与一些低版本的Spring有冲突,要看官方文档...

easonjim ⋅ 2017/10/05 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 11分钟前 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 37分钟前 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

Dockerfile基础命令总结

FROM 指定使用的基础base image FROM scratch # 制作base image ,不使用任何基础imageFROM centos # 使用base imageFROM ubuntu:14.04 尽量使用官方的base image,为了安全 LABEL 描述作...

ExtreU ⋅ 昨天 ⋅ 0

存储,对比私有云和公有云的不同

导读 说起公共存储,很难不与后网络公司时代的选择性外包联系起来,但尽管如此,它还是具备着简单和固有的可用性。公共存储的名字听起来也缺乏专有性,很像是把东西直接堆放在那里而不会得到...

问题终结者 ⋅ 昨天 ⋅ 0

C++难点解析之const修饰符

C++难点解析之const修饰符 c++ 相比于其他编程语言,可能是最为难掌握,概念最为复杂的。结合自己平时的C++使用经验,这里将会列举出一些常见的难点并给出相应的解释。 const修饰符 const在c...

jackie8tao ⋅ 昨天 ⋅ 0

聊聊spring cloud netflix的HystrixCommands

序 本文主要研究一下spring cloud netflix的HystrixCommands。 maven <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-clo......

go4it ⋅ 昨天 ⋅ 0

Confluence 6 从其他备份中恢复数据

一般来说,Confluence 数据库可以从 Administration Console 或者 Confluence Setup Wizard 中进行恢复。 如果你在恢复压缩的 XML 备份的时候遇到了问题,你还是可以对整个站点进行恢复的,如...

honeymose ⋅ 昨天 ⋅ 0

myeclipse10 快速搭建spring boot开发环境(入门)

1.创建一个maven的web项目 注意上面标红的部分记得选上 2.创建的maven目录结构,有缺失的目录可以自己建立目录补充 补充后 这时候一个maven的web项目创建完成 3.配置pom.xml配置文件 <proje...

小海bug ⋅ 昨天 ⋅ 0

nginx.conf

=========================================================================== nginx.conf =========================================================================== user nobody; #......

A__17 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部