智能销售系统day4

代码生成器

1.模板技术

方便简单:velocity-1.6.3.jar 默认模板的后缀vm
相对复杂点,但是功能齐全(龙头老大):freemarker-2.2.19.jar 默认模板的后缀ftl

velocity模板技术可以实现的功能:

  1. 动态页面静态化:在后台准备数据,在前台准备模板,通过IO把数据与模板合并,真正的生成一个html页面出来
  2. 发送邮件、发送短信模板
  3. 代码生成器

velocity测试:

  1. 导包


   org.apache.velocity
   velocity
   1.6

  1. 代码实现
    首先需要准备模板,模板后缀名建议为.vm

数据+模板=文本(输出)

  1. 创建模板引擎
    VelocityEngine vel = new VelocityEngine();
  2. 通过模板引擎获取准备的模板(模板的地址,设置字符编码)
    Template template = vel.getTemplate(“temptest/hello.vm”,“UTF-8”);
  3. 创建模板应用上下文
    VelocityContext context = new VelocityContext();
  4. 添加数据(“msg”设置的属性,在模板中调用)还可以添加对象
    context.put(“msg”,“要添加的数据” );
  5. 准备输出流(可以使用文件流,生成一个文件)
    StringWriter writer = new StringWriter();
  6. 将模板与数据结合起来输出
    template.merge(context, writer);
  7. 关流
    writer.close();

使用(在模板中):
${msg}:显示的就是添加进去的数据,当添加数据

! m s g : ! 的 作 业 是 当 添 加 的 数 据 为 空 时 就 不 显 示 如 果 m s g 是 一 个 对 象 : !{msg}:!的作业是当添加的数据为空时就不显示 如果msg是一个对象: !msg:msg!{msg.name}
不加{}也可以显示,建议加上

##:注释

#set($person = “Tom”):设置一个变量,person为变量,Tom为变量的值

模板中的if判断:
#if($a > 0)

bigger than 0

#elseif($a > 5) 17 #else

others

#end 模板中的foreach遍历: #foreach($l in $list)
  • $l
  • #end 设置一个数组,集合: #set($list = ["a", "b", "c"]) #set($map = {"a":"aaa", "b":"bbb", "c":"ccc"})

    2.代码生成器

    EasyCode
    概述:
    是一个idea的插件,EasyCode是基于IntelliJ IDEA开发的代码生成插件,支持自定义任意模板(Java,html,js,xml),只要是与数据库相关的代码都可以通过自定义模板来生成。支持数据库类型与java类型映射关系配置。支持同时生成生成多张表的代码。每张表有独立的配置信息。完全的个性化定义,规则由你设置。

    作用:
    EasyCode是基于IntelliJ IDEA Ultimate版开发的一个代码生成插件,主要通过自定义模板(基于velocity)来生成各种你想要的代码。通常用于生成Entity(domain)、Dao、Service、Controller。如果你动手能力强还可以用于生成HTML、JS、PHP等代码。理论上来说只要是与数据有关的代码都是可以生成的。

    模板的使用就是velocity在模板中的操作

    代码生成器模板:
    代码生成器中常用工具:
    $!{tableInfo.name}:获取表名(这里表名的首字母是大写的)
    $tool.firstLowerCase():首字母小写方法
    $tool.firstUpperCase():首字母大写方法
    $!define:引入宏定义,抽取公共代码
    #save(“保存路径”,”文件后缀名”)
    #setPackageSuffix(“包的后缀名”)
    $!autoImport:导包
    消除父类字段(“id”):实现例排除

    3.权限:

    开发:登陆&授权
    	1.登陆:(1)登陆后将用户存入session中
    	       (2)密码安全性
    		Shiro(权限框架):
    			内置session,在系统中任何地方可以使用
    			使用Hash(散列)算法:加密并不可解密
    	2.权限与资源:
    		(1)一对一
    		(2)多对一
    		(3)多对多
    

    你可能感兴趣的:(智能销售系统day4)