公司用了许久的struts2+hibernate,前两年时间SpringMvic+Shiro也有做过,大多都是基于JSP实现的界面展示层,最近一段使用使用SpringBoot+JPA采用的是thymeleaf,当然这都是工具,实现功能的一种手段而已。
最近新项目,接触并尝试了一点新的东西Vue+Velocity,有没有混搭的感觉,其实也是为了以后前后端分离项目做铺垫,具体见前两篇文章。
##配置 项目进行中,觉得还是有必要记录一下,省的被忘却。
项目其他相关的不再描述,这里只引入velocity
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-tools</artifactId>
<version>2.0</version>
</dependency>
spring-mvc.xml部分配置,其实springMvc4貌似已经放弃了支持velocity,相关API已经过时,但是并不影响使用。
<!-- Velocity视图解析器 默认视图 --> <bean id="velocityViewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver"> <property name="contentType" value="text/html;charset=UTF-8" /> <!-- 这里说明一下 系统会自动匹配路径下的html页面 不需要经过controller 前台使用 vue渲染数据 --> <property name="viewNames" value="*.html" /> <property name="toolboxConfigLocation" value="/WEB-INF/tools.xml" /> <property name="dateToolAttribute" value="date" /><!--日期函数名称--> <property name="numberToolAttribute" value="number" /><!--数字函数名称--> <property name="requestContextAttribute" value="rc" /><!-- 获取系统路径 --> </bean> <bean id="velocityConfigurer" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"> <property name="resourceLoaderPath" value="/WEB-INF/view" /> <property name="velocityProperties"> <props> <prop key="input.encoding">UTF-8</prop> <prop key="output.encoding">UTF-8</prop> <prop key="contentType">text/html;charset=UTF-8</prop> </props> </property> </bean>
配置tools.xml以及相关自定义标签
<?xml version="1.0" encoding="UTF-8" ?>
<toolbox>
<!-- 自定义标签 -->
<tool>
<key>shiro</key>
<class>com.itstyle.shiro.security.VelocityShiro</class>
<scope>application</scope>
</tool>
<!--
原生标签
DateTool: 对Date操作:格式化、比较等
ListTool:透明地处理array和list
MathTool:数学运算
NumberTool:对数字格式化和convert
SortTool:对collections array iterator进行排序
-->
<tool>
<key>date</key>
<scope>application</scope>
<class>org.apache.velocity.tools.generic.DateTool</class>
</tool>
<tool>
<key>math</key>
<scope>application</scope>
<class>org.apache.velocity.tools.generic.MathTool</class>
</tool>
<tool>
<key>number</key>
<scope>application</scope>
<class>org.apache.velocity.tools.generic.NumberTool</class>
</tool>
<tool>
<key>sort</key>
<scope>application</scope>
<class>org.apache.velocity.tools.generic.SortTool</class>
</tool>
</toolbox>
自定义标签:
/**
* Shiro权限标签(Velocity版)
* 创建者 小柒2012
* 创建时间 2017年11月20日
*/
public class VelocityShiro {
/**
* 是否拥有该权限
* @param permission 权限标识
* @return true:是 false:否
*/
public boolean hasPermission(String permission) {
Subject subject = SecurityUtils.getSubject();
return subject != null && subject.isPermitted(permission);
}
}
标签使用方法:
##页面中
$shiro.hasPermission('sys: area :list')
##JS中(注意一定要加引号)
var flag = '$shiro.hasPermission('sys: area :list')'
作者:小柒
出处: https://blog.52itstyle.com
分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件(345849402@qq.com)咨询。