jeesite 说明文档-3.内置组件的应用

合集下载

JeeSite开发(一)——JeeSite4开发基础实例

JeeSite开发(一)——JeeSite4开发基础实例

JeeSite开发(⼀)——JeeSite4开发基础实例⽬录: 〇、开发环境 ⼀、JeeSite介绍 ⼆、获取JeeSite4 三、运⾏JeeSite后台(部署运⾏) 四、启动并访问 五、增加⼀个功能模块〇、开发环境 JDK1.8、eclipse、maven、MySQL57⼀、JeeSite介绍 JeeSite 基于最主流的 Spring Boot 2 + MyBatis + Shiro + J2Cache/Redis + Beetl 的稳定架构。

前端采⽤了⽬前极为流⾏的扁平化响应式的设计风格,可以完美兼容电脑,平板,⼿机等多个平台。

基于 jQuery + Bootstrap + AdminLTE 实现。

⽤JeeSite可以快速搭建⼀个web⽹站,⽽且可以不写或者只需写很少的业务代码。

⼆、获取JeeSite4 以下为其⽬录:三、运⾏JeeSite后台(部署运⾏)3.1 引⼊项⽬ 1.将以上的web⽬录复制到⾃⼰的⼯作⽬录,并按需重命名(例如:jeesite-demo)。

2.打开其中的poi.xml⽂件,修改其中的第⼗三⾏,改为您刚刚修改的⽂件夹名,例如:<artifactId>jeesite-demo</artifactId> 3.⽽后在eclipse中将其引⼊进来,右键空⽩处->Import->选择Maven下的Existing Maven Projects,点确定,此时Maven会⾃动加载依赖包,效果如下。

3.2 初始化数据库 1.配置my.ini:打开MySQL安装⽂件夹下的my.ini⽂件, 在[mysqld]下增加 sql_mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 2.在MySQL中创建⽤户和数据库set global read_only=0;set global optimizer_switch='derived_merge=off';create user 'jeesite'@'%' identified by 'jeesite';create database jeesite DEFAULT CHARSET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';grant all privileges on jeesite.* to 'jeesite'@'%' identified by 'jeesite';flush privileges; 3.在刚刚引⼊的项⽬中,找到 /src/main/resources/config/application.yml ⽂件,修改MySQL数据库配置:# 数据库连接jdbc:# Mysql 数据库配置type: mysqldriver: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/jeesite?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNullusername: jeesitepassword: jeesitetestSql: SELECT 1 4.双击运⾏项⽬下的 /bin/init-data.bat 脚本,将会⾃动初始化数据库(建表)四、启动并访问 1.可在 /src/main/resources/config/application.yml ⽂件中修改服务器端⼝和部署路径server:port: 8980servlet:context-path: /jeesite-demotomcat:uri-encoding: UTF-8 2.启动:由于JeeSite集成了Spring boot框架,即内部集成了tomcat服务器,所以只需右键点击com.jeesite.modules.config.Application.java⽂件,再点击 Run As -> Java Application 即可启动服务。

JeeSite的Excel导入、导出、支持大数据量,使用annotation最小化配置

JeeSite的Excel导入、导出、支持大数据量,使用annotation最小化配置

JeeSite的Excel导⼊、导出、⽀持⼤数据量,使⽤annotation最⼩化配置介绍:优点:1. 简单易⽤,⽀持⼤数量导出,配置简单,代码量少。

2. ⽀持Excel 2003、2007、2010(xls、xlsx)格式。

3. ⽀持简单格式设置,对齐⽅式,排序等4. 可导出字典类型数据,⾃定义数据字段类型(例如:部门关联对象,部门名称与部门编号互转)。

5. ⽆需建⽴导⼊模板,系统⾃动⽣成。

缺点:1. 格式单⼀,⽆法导出格式⽐较复杂的表格。

2. 不能使⽤模板进⾏导⼊,导出。

使⽤⽰例:1、导出实体对象中的annotation的定义(ExcelField说明见:5、ExcelField定义说明):Java代码1. @Entity2. @Table(name = "sys_user")3. public class User extends BaseEntity {4.5. private Long id; // 编号6. ...7. ...8. ...9. private List<Role> roleList = Lists.newArrayList(); // 拥有⾓⾊列表10.11. @Id12. @ExcelField(title="ID", type=1, align=2, sort=1)13. public Long getId() {14. return id;15. }16. @ManyToOne17. @ExcelField(title="所属区域", align=2, sort=10)18. public Area getArea() {19. return area;20. }21. @ManyToOne22. @ExcelField(title="所属部门", align=2, sort=20)23. public Office getOffice() {24. return office;25. }26. @Length(min=1, max=100)27. @ExcelField(title="姓名", align=2, sort=40)28. public String getName() {29. return name;30. }31. @Length(min=0, max=100)32. @ExcelField(title="⽤户类型", align=2, sort=80, dictType="sys_user_type")33. public String getUserType() {34. return userType;35. }36. @ExcelField(title="创建时间", type=0, align=1, sort=90)37. public Date getCreateDate() {38. return createDate;39. }40. @ExcelField(title="最后登录⽇期", type=1, align=1, sort=110)41. public Date getLoginDate() {42. return loginDate;43. }44. @ManyToMany45. @ExcelField(title="拥有⾓⾊", align=1, sort=800, fieldType=RoleListType.class)46. public List<Role> getRoleList() {47. return roleList;48. }49. }2、Excel导出⽰例:Java代码1. public String exportFile(User user) {2. try {3. String fileName = "⽤户数据"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";4. // 查询数据5. Page<User> page = systemService.findUser(new Page<User>(request, response, -1), user);6. // 1:创建Excel导出对象;2:设置数据;3:写⼊输出流;4:临时数据销毁7. new ExportExcel("⽤户数据", User.class)8. .setDataList(page.getList())9. .write(response, fileName)10. .dispose();11. return null;12. } catch (Exception e) {13. addFlashMessage("导出⽤户失败!失败信息:"+e.getMessage());14. }15. return "redirect:"+BaseController.ADMIN_PATH+"/sys/user/?repage";16. }3、Excel 导⼊⽰例:Java代码1. public String importFile(MultipartFile file) {2. try {3. int successNum = 0;4. int failureNum = 0;5. StringBuilder failureMsg = new StringBuilder();6. // 创建导⼊Excel对象7. ImportExcel ei = new ImportExcel(file, 1, 0);8. // 获取传⼊Excel⽂件的数据,根据传⼊参数类型,⾃动转换为对象9. List<User> list = ei.getDataList(User.class);10. // 遍历数据,保存数据11. for (User user : list){12. try{13. if ("true".equals(checkLoginName("", user.getLoginName()))){14. user.setPassword(SystemService.entryptPassword("123456"));15. BeanValidators.validateWithException(validator, user);16. systemService.saveUser(user);17. successNum++;18. }else{19. failureMsg.append("<br/>登录名 "+user.getLoginName()+" 已存在; ");20. failureNum++;21. }22. }catch(ConstraintViolationException ex){23. failureMsg.append("<br/>登录名 "+user.getLoginName()+" 导⼊失败:");24. List<String> messageList = BeanValidators.extractPropertyAndMessageAsList(ex, ": ");25. for (String message : messageList){26. failureMsg.append(message+"; ");27. failureNum++;28. }29. }catch (Exception ex) {30. failureMsg.append("<br/>登录名 "+user.getLoginName()+" 导⼊失败:"+ex.getMessage());31. }32. }33. if (failureNum>0){34. failureMsg.insert(0, ",失败 "+failureNum+" 条⽤户,导⼊信息如下:");35. }36. addFlashMessage("已成功导⼊ "+successNum+" 条⽤户"+failureMsg);37. } catch (Exception e) {38. addFlashMessage("导⼊⽤户失败!失败信息:"+e.getMessage());39. }40. return "redirect:"+BaseController.ADMIN_PATH+"/sys/user/?repage";41. }4、Excel 导⼊模板下载⽰例Java代码1. public String importFileTemplate() {2. try {3. String fileName = "⽤户数据导⼊模板.xlsx";4. List<User> list = Lists.newArrayList(); list.add(UserUtils.getUser(true));5. // 第三个参数设置为“2”表⽰输出为导⼊模板(1:导出数据;2:导⼊模板)6. new ExportExcel("⽤户数据", User.class, 2).setDataList(list).write(response, fileName).dispose();7. return null;8. } catch (Exception e) {9. addFlashMessage("导出⽤户失败!失败信息:"+e.getMessage());10. }11. return "redirect:"+BaseController.ADMIN_PATH+"/sys/user/?repage";12. }5、ExcelField定义说明:Java代码1. /**2. * Copyright &copy; 2012-2013 <a href="https:///thinkgem/jeesite">JeeSite</a> All rights reserved.3. *4. * Licensed under the Apache License, Version 2.0 (the "License");5. */6. package mon.utils.excel.annotation;7.8. import ng.annotation.ElementType;9. import ng.annotation.Retention;10. import ng.annotation.RetentionPolicy;11. import ng.annotation.Target;12.13. /**14. * Excel注解定义15. * @author ThinkGem16. * @version 2013-03-1017. */18. @Target({ElementType.METHOD, ElementType.FIELD, ElementType.TYPE})19. @Retention(RetentionPolicy.RUNTIME)20. public @interface ExcelField {21.22. /**23. * 导出字段名(默认调⽤当前字段的“get”⽅法,如指定导出字段为对象,请填写“对象名.对象属性”,例:“”、“”)24. */25. String value() default "";26.27. /**28. * 导出字段标题29. */30. String title();31.32. /**33. * 字段类型(0:导出导⼊;1:仅导出;2:仅导⼊)34. */35. int type() default 0;36.37. /**38. * 导出字段对齐⽅式(0:⾃动;1:靠左;2:居中;3:靠右)39. */40. int align() default 0;41.42. /**43. * 导出字段字段排序(升序)44. */45. int sort() default 0;46.47. /**48. * 如果是字典类型,请设置字典的type值49. */50. String dictType() default "";51.52. /**53. * 反射类型54. */55. Class<?> fieldType() default Class.class;56.57. }。

组件库使用说明文档

组件库使用说明文档

组件库使用说明文档哎呀,今天咱们来聊聊组件库这玩意儿,真是个好东西,简直就是开发者的“救命稻草”。

你要问我什么是组件库,简单说就是一堆现成的代码块,能帮你轻松搞定界面设计,省时省力,简直是如虎添翼!别小看这些代码块,个个都是精英,能让你在项目中游刃有余,像在自家厨房里翻炒菜一样顺手。

说到组件库,首先得提提它的优势。

你看啊,开发一个界面可不是轻松活,代码写得跟飞一样,结果一运行就像开了个“黑洞”,整个页面都崩了。

这时候,组件库就像是你的“老朋友”,给你提供了一整套成熟的、可复用的组件,真是省心又省力,心里美滋滋。

就像去饭馆吃饭,老板把菜端上来,你只管享用,不用自己下厨,这种感觉谁不喜欢?组件库的美妙之处在于它的统一性。

想想看,要是每个开发者都随心所欲,界面设计就像“百花齐放”,结果出来的东西,那简直就是“乱七八糟”。

可组件库帮你解决了这个问题,保证了每个组件都能搭配得天衣无缝,整个界面就像一幅和谐美丽的画卷,赏心悦目,别人看了都想夸两句。

用起来也特别方便。

咱们打开组件库,找找看,哎呀,居然有个按钮组件,样式好看又实用,点一下就能用。

再来一段输入框,配上验证功能,用户输入一秒搞定,哎呀,真是给用户一种“宾至如归”的感觉。

这种感觉,嘿,简直就像打开了“新世界的大门”,心里乐开了花。

组件库的灵活性也是不得不提的。

你想要的功能,组件库里几乎都有,随你挑选。

想改变样式?没问题,几行代码搞定。

想加个动画效果?简单,轻轻松松就来。

不像以前,想要改个按钮的颜色,整个人都要崩溃,写一堆冗长的代码,最后还不一定成功,真是让人捶胸顿足。

现在有了组件库,真是事半功倍,太省心了!组件库的更新迭代也很快,像是追星一样,更新一出,大家都争先恐后去体验新的功能。

这些开发者们就像勤劳的小蜜蜂,不断打磨这些组件,给我们带来更好的使用体验。

你会发现,之前用的某个组件,今天突然变得更炫酷了,心里那个美呀,感觉自己就像是站在潮流的前端。

使用组件库也有小细节需要注意。

jeesite说明文档3.内置组件应用

jeesite说明文档3.内置组件应用

第3章内置组件的应用作者:ThinkGem更新日期:2014-01-05 1.经常使用组件1.1.布局组件布局文件配置:/ jeesite/src/main/webapp/WEB-INF/默许布局文件:/ jeesite/src/main/webapp/WEB-INF/views/layouts/非公共,自己成立的布局文件:/ jeesite/src/main/webapp/WEB-INF/views/模块途径/layouts/布局文件.jsp利用布局文件:JSP的head里添加:<meta name="decorator" content="default"/> 1.2.用户工具应用处景:在java文件或jsp页面上,获取当前用户相关信息1.获取当前用户:1)();2)()3)${fns:getUser()}2.获取当前用户部门:1)()2)${fns:getOfficeList()}3.获取当前用户区域:1)()2)${fns:getAreaList()}4.获取当前用户菜单:1)()2)${fns:getMenuList()}5.获取当前用户缓存:1)(key);2)${fns:getCache(cacheName, defaultValue)}6.设置当前用户缓存:1)(key);1.3.全局缓存应用处景:系统字典1.设置应用程序缓存:(key);2.获取应用程序缓存:(key);1.4.字典工具应用处景:系统全局固定的字典数据,java或jsp中获取字典相关数据。

1.依照类型和值获取字典标签(列表取值):a)(String value, String type, String defaultValue)b)${ fns:getDictLabel (value, type, defaultValue)}2.依照类型和标签获取字典值(依照标签取值):a)(String label, String type, String defaultLabel)b)${fns:getDictValue(label, type, defaultValue)}3.依照类型获取字典列表(下拉框,复选框,单项选择框):a)(String type)b)${fns:getDictList(type)}1.5.功能权限操纵应用处景:访问功能授权,查看权限,编辑权限,导入权限,审核权限。

jeesite 页面 formatter 用法 -回复

jeesite 页面 formatter 用法 -回复

jeesite 页面formatter 用法-回复jeesite是一个基于Java的快速开发平台,提供了大量的开发工具和畅捷的开发方式,使开发人员能够快速构建高质量的Web应用程序。

其中,页面formatter是jeesite平台中一个非常重要的组件,它主要用于对页面的数据进行格式化和处理,以达到页面数据展示的规范和美观效果。

在jeesite平台上,我们可以使用页面formatter实现以下几个方面的功能:1. 数据格式化:jeesite的页面formatter可以帮助我们对页面上展示的数据进行格式化处理。

例如,在用户管理模块中,我们可能需要将用户的注册时间以特定的格式展示,使用formatter就可以很方便地实现这一需求。

2. 数据转换:有时候,我们需要将页面上展示的数据进行转换,例如将数字型的数据转换为字符型,或者将日期型的数据转换为特定的显示格式。

在jeesite平台上,我们可以通过定义formatter来实现这些转换功能,使得页面数据的展示更加符合用户的需求。

3. 数据校验:在表单提交的过程中,我们需要对输入的数据进行校验,以保证数据的合法性。

jeesite的formatter组件提供了强大的数据校验功能,可以帮助开发人员快速实现表单校验的需求,提高开发效率和数据安全性。

使用jeesite页面formatter的步骤如下:步骤一:创建formatter类首先,我们需要创建一个类来实现formatter的功能。

这个类通常继承自jeesite中的Formatter类,并实现其中的format和parse方法。

format 方法用于将数据格式化为字符串进行展示,而parse方法则用于将字符串解析为数据类型进行后续处理。

步骤二:注册formatter在jeesite平台上,我们需要将自定义的formatter注册到系统中,以便系统能够识别和使用这个formatter。

注册的方式通常是在系统启动时将formatter添加到FormatterRegistry中。

IDEA部署jeesite3完美运行教程详解

IDEA部署jeesite3完美运行教程详解

IDEA部署jeesite3完美运⾏教程详解
jeesite3的官⽅⽂档⾮常坑爹,按那个部署是不能正常运⾏的,IDEA2018/2019完美运⾏教程如下:
2. 打开IDEA,选择open,导⼊克隆的 jeesite项⽬
3. 修改 jeesite\jeesite\src\main\resources\jeesite.properties 中的数据库⽤户名和密码,改成⾃⼰电脑的即可,如果有提⽰需要MAVEN下载jar包,选择auto那个。

jeesite.properties 配置⽂件最下⾯有个被注释掉的⼯程路径配置,那个不要管,不要按官⽅⽂档说明去修改!
4. 在navicat中创建 jeesite 数据库后运⾏ init-db.bat,创建出 jeesite3项⽬需要的表
5.返回IDEA,在下⽅的Terminal⼯具栏中输⼊:mvn clean install 命令,⾃动构架⼯程。

6.提⽰“BUILD SUCCESS"时,配置tomcat
7.0。

AJP port那⼀栏要为空,JVM那边要填上 -Dfile.encoding=UTF-8
7. 选择Apply然后OK,运⾏Tomcat即可正常启动 jeesite3项⽬
8. 浏览器进⼊“127.0.0.1:8080/jeesite",输⼊⽤户名 thinkgem 和密码 admin 即可正常访问
到此这篇关于IDEA部署jeesite3完美运⾏教程详解的⽂章就介绍到这了,更多相关IDEA部署jeesite3内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

jeesite 字段控制

jeesite 字段控制

jeesite 字段控制Jeesite字段控制为标题,下面将介绍Jeesite中的字段控制功能以及它的作用。

一、什么是Jeesite字段控制?Jeesite是一款基于Java开发的开源框架,用于快速搭建企业级Java Web应用。

在Jeesite中,字段控制是指通过对表单中的字段进行配置和管理,实现对字段的显示、验证、权限等方面的控制。

通过字段控制,开发人员可以灵活地对表单进行定制,满足不同业务需求。

二、字段控制的作用1. 显示控制:字段控制可以根据业务需求决定字段是否显示。

例如,在某些情况下,某个字段可能需要隐藏起来,只在特定条件下才显示出来,通过字段控制就可以实现这一功能。

2. 验证控制:字段控制可以对字段进行验证,确保用户输入的数据符合一定的规则和格式。

例如,对于手机号码字段,可以通过字段控制设置必须为11位数字的验证规则。

3. 权限控制:字段控制可以对字段的访问权限进行管理。

通过字段控制,可以设置某些字段只能由特定角色或用户访问,从而实现对敏感数据的保护。

4. 其他控制:字段控制还可以实现其他一些功能,如字段的默认值设置、只读控制等。

三、如何进行字段控制在Jeesite中,字段控制是通过在实体类中使用注解来实现的。

以下是一些常用的字段控制注解:1. @FormField:用于配置字段的显示名称、验证规则等信息。

2. @ExcelField:用于配置字段在Excel导入导出时的相关信息。

3. @ShowInView:用于配置字段在列表、详情等页面中的显示方式。

4. @DataScope:用于配置字段的权限控制范围。

5. @DictType:用于配置字段的字典类型,实现数据字典的功能。

四、字段控制的实例下面以一个示例来说明字段控制的实际应用。

假设有一个用户管理系统,其中包含一个用户信息表,需要对用户信息进行管理和展示。

在这个示例中,我们可以使用字段控制来实现以下功能:1. 设置用户名字段为必填项,并限制长度为6-20个字符。

JEEWeb开发相关技术介绍

JEEWeb开发相关技术介绍


ExtJS


YUI




AJAX 不是一种新的编程语言,而是一种用于创 建更好更快以及交互性更强的 Web 应用程序的 技术 使用 JavaScript 的 XMLHttpRequest 对象来直 接与服务器进行通信 AJAX 是一种独立于 Web 服务器软件的浏览器 技术




Web2.0 是相对Web1.0 的新的一类互联网应用的 统称 Web1.0 的主要特点在于用户通过浏览器获取信 息 Web2.0 则更注重用户的交互作用,用户既是网 站内容的浏览者,也是网站内容的制造者 BLOG、 RSS、 Wiki、 SNS等是Web2.0典型应 用

谢谢!


Web Services是由企业或组织发布的完成其特定 业务需求的在线应用服务,其他企业或组织或 webservice客户端软件能够通过网络来访问并使 用这项在线服务 关键技术

XML:描述数据的标准方法 SOAP:表示信息交换的协议 Web服务描述语言 UDDI(Universal Description, Discovery and Integration):通用描述、发现与集成,它是一种独立于 平台的,基于XML语言的用于在网络上描述服务的协 议

单机使用的应用程序 大多数的工具软件 非交互式的WEB网站

分层 模块化 组件化

架构是组件彼此间和与环境间的关系,引导设计 发展原则中体现的系统的基本结构。

组件:是包括内容的系统模型部分,且它的显示是可 替换的。组件定义了所需接口的行为
系统:是实现了某个(些)特殊作用的组件的集合。 一个系统是为了实现一个或多个任务而存在 环境:是影响系统的设置和条件 任务:是系统为了实现对对象设置的使用或操作

叙述单文件组件的组成与使用

叙述单文件组件的组成与使用

叙述单文件组件的组成与使用单文件组件是现代前端开发中常用的一种代码组织方式,它的组成和使用方法可以帮助开发者更好地管理和维护代码。

本文将从组成和使用两个方面详细介绍单文件组件。

一、组成单文件组件由三个部分组成:template、script和style。

下面将分别介绍每个部分的作用和用法。

1. template(模板)template部分用于定义组件的结构和样式,使用HTML语法进行编写。

可以在模板中使用Vue的指令和表达式,实现动态数据绑定和逻辑控制。

同时,还可以引用其他组件或使用自定义的指令、过滤器等。

2. script(脚本)script部分用于定义组件的行为和逻辑,使用JavaScript语法进行编写。

可以在脚本中定义组件的数据、方法、生命周期钩子等。

通过脚本,可以实现组件的交互逻辑、数据处理、事件监听等功能。

3. style(样式)style部分用于定义组件的样式,使用CSS语法进行编写。

可以在样式中定义组件的布局、颜色、字体等。

同时,还可以使用CSS预处理器(如Sass、Less)进行样式的编写,提高代码的可维护性和复用性。

二、使用使用单文件组件需要以下几个步骤:1. 创建组件需要创建一个.vue文件,文件名可以根据需要来命名,一般以组件的功能或名称作为文件名。

在文件中,按照上述组成的结构来编写template、script和style部分的代码。

2. 导入组件在需要使用组件的地方,使用import语句导入组件。

导入的路径可以是相对路径,也可以是模块的名称。

3. 注册组件使用ponent()方法来注册组件,将其注册为全局组件或局部组件。

全局组件可在任意地方使用,而局部组件只能在其父组件内部使用。

4. 使用组件在模板中使用组件的标签,即可将组件插入到页面中。

可以给组件传递props,通过props接收父组件传递的数据。

也可以在组件内部定义事件,通过$emit()方法触发事件,并将数据传递给父组件。

JeeSite

JeeSite

JeeSite企业信息管理系统基础框架目录1.JEESITE概述 (4)1.1.简介 (4)1.2.为何选择 (4)1.3.相关技术 (5)1.4.安全考虑 (6)2.管理功能演示 (7)2.1.管理登录 (7)2.1.1.登录界面 (7)2.1.2.主题切换 (8)2.2.总体介绍 (11)2.2.1.客户端验证 (11)2.2.2.提交结果信息 (11)2.3.控制面板 (12)2.3.1.个人资料 (12)2.3.2.修改密码 (12)2.4.机构用户 (12)2.4.1.用户管理 (12)2.4.2.机构管理 (14)2.4.3.区域管理 (16)2.5.系统设置 (18)2.5.1.菜单管理 (18)2.5.2.角色管理 (19)2.5.3.字典管理 (21)2.6.内容管理 (22)2.6.1.内容管理 (22)2.6.2.评论管理 (27)2.6.3.栏目管理 (28)2.6.4.站点管理 (29)2.6.5.公共留言 (31)2.6.6.文件管理 (32)2.6.7.网站展示(基础主题) (34)3.功能组件 (40)3.1.U TILS (41)3.2.T AGLIB (42)3.3.EL F UNCTION (42)3.4.J AVA S CRIPT (42)4.快速体验 (42)4.1.在线体验 (42)4.2.本地体验 (43)5.交流、反馈、参与贡献 (43)6.未来开发计划 (43)1.JeeSite概述1.1.简介JeeSite是一个开源的企业信息管理系统基础框架。

主要定位于“企业信息管理”领域,可用作企业信息管理类系统、网站后台管理类系统等。

JeeSite是非常强调开发的高效性、健壮性和安全性的。

JeeSite是轻量级的,简单易学,本框架以Spring Framework为核心、Spring MVC(相比Struts2更容易上手、更易用)作为模型视图控制器、Spring Data JPA + Hibernate作为数据库操作层,此组合是Java界业内最经典、最优的搭配组合进行封装。

jeesite中的posthandle作用 -回复

jeesite中的posthandle作用 -回复

jeesite中的posthandle作用-回复jeesite中的postHandle作用是什么?在解答这个问题之前,我们先来了解一下什么是Jeesite。

Jeesite是一套基于Java语言开发的开源企业级快速开发平台,它提供了一系列的开发工具和框架,使开发者能够快速地搭建起一个企业级应用系统。

Jeesite平台具有可扩展、高效、安全、易维护等特点,因此也受到了众多开发者的青睐。

在Jeesite中,postHandle是一种拦截器(Interceptor)中定义的方法。

拦截器是一种应用于请求处理过程的组件,它允许开发者在请求被处理之前或之后执行自定义的操作。

postHandle方法是在Controller方法处理完请求之后被调用的,也就是说它是在请求处理完成后,但是在视图渲染之前执行的。

postHandle方法的作用主要有以下几个方面:1. 处理公共逻辑:开发者可以在postHandle方法中编写公共的逻辑代码,如日志记录、异常处理、结果统计等。

这样可以避免在每个Controller的方法中都重复编写这些代码,提高了代码的复用性和可维护性。

2. 操作ModelAndView对象:ModelAndView对象是Controller方法处理请求之后返回的视图模型对象,它包含了需要渲染到页面的数据和视图的名称。

在postHandle方法中,开发者可以对ModelAndView对象进行一些操作,如添加一些额外的数据、修改视图名称等。

这样可以实现一些与业务无关的通用操作,如添加菜单导航、展示广告等。

3. 设置响应字符编码:在postHandle方法中,开发者可以通过修改HttpServletResponse对象的字符编码来设置响应的字符集。

这对于处理中文乱码等问题非常有用。

4. 控制请求的跳转:如果在postHandle方法中返回false,那么请求将会被中断,不再继续执行后续的拦截器和控制器方法。

这个特性可以用于权限控制、登录验证等操作,开发者可以根据需要来决定是否允许请求继续处理。

jeesite框架的简单应用

jeesite框架的简单应用

jeesite框架的简单应⽤个⼈觉得⽐较完善的⼀个讲解jeesite的⽹站jeesite官⽹公司项⽬都是基于jeesite做的项⽬所以就找资料了解⼀下啦企业信息化快速开发平台 JeeSite简介由 ThinkGem 创建,最后⼀次修改 2016-10-18JeeSite是基于多个优秀的开源项⽬,⾼度整合封装⽽成的⾼效,⾼性能,强安全性的开源 Java EE快速开发平台。

JeeSite本⾝是以Spring Framework为核⼼容器,Spring MVC为模型视图控制器,MyBatis为数据访问层, Apache Shiro为权限授权层,Ehcahe对常⽤数据进⾏缓存,Activit为⼯作流引擎。

JeeSite主要定位于企业信息化领域,已内置企业信息化系统的基础功能和⾼效的代码⽣成⼯具,包括:系统权限组件、数据权限组件、数据字典组件、核⼼⼯具组件、视图操作组件、⼯作流组件、代码⽣成等。

前端界⾯风格采⽤了结构简单、性能优良、页⾯美观⼤⽓的Twitter Bootstrap页⾯展⽰框架。

采⽤分层设计、双重验证、提交数据安全编码、密码加密、访问验证、数据权限验证。

使⽤Maven做项⽬管理,提⾼项⽬的易开发性、扩展性。

JeeSite⽬前包括以下三⼤模块,系统管理(SYS)模块、内容管理(CMS)模块、在线办公(OA)模块、代码⽣成(GEN)模块。

系统管理模块,包括企业组织架构(⽤户管理、机构管理、区域管理)、菜单管理、⾓⾊权限管理、字典管理等功能;内容管理模块,包括内容管理(⽂章、链接),栏⽬管理、站点管理、公共留⾔、⽂件管理、前端⽹站展⽰等功能;在线办公模块,提供简单的请假流程实例。

JeeSite 提供了常⽤⼯具进⾏封装,包括⽇志⼯具、缓存⼯具、服务器端验证、数据字典、当前组织机构数据(⽤户、机构、区域)以及其它常⽤⼩⼯具等。

另外还提供⼀个强⼤的在线代码⽣成⼯具,此⼯具提供简单的单表、⼀对多、树结构功能的⽣成,如果对外观要求不是很⾼,⽣成的功能就可以⽤了。

JEE工作流管理系统jBPM详解

JEE工作流管理系统jBPM详解

JEE工作流管理系统jBPM详解部门: xxx时间: xxx制作人:xxx整理范文,仅供参考,可下载自行修改J2EE工作流管理系统jBPM详解<一)(1>本文是《J2EE工作流管理系统jBPM详解》的第一部分,介绍了jBPM的工作流应用方案,列举了几个常见的功能应用的设计方案,可供工作流开发人员参考。

一、jBPM入门简介概述工作流业务流程管理技术是基于SOA技术实现的一个核心部分。

使用工作流能够在软件开发和业务两个层次受益:b5E2RGbCAP1、方便开发工作流管理系统能够简化企业级软件开发甚至维护。

◆降低开发风险 - 通过使用状态和动作这样的术语,业务分析师和开发人员使用同一种语言交谈。

这样开发人员就不必将用户需求转化成软件设计了。

◆实现的集中统一 -业务流程经常变化,使用工作流系统的最大好处是:业务流程的实现代码,不再是散落在各种各样的系统中。

◆加快应用开发 - 你的软件不用再关注流程的参与者,开发起来更快,代码更容易维护。

p1EanqFDPw2、业务流程管理 (BPM>在自动化业务流程之前,分析并将它们规格化是一件艰苦但会有很好回报的工作:◆提高效率 - 许多流程在自动化过程中会去除一些不必要的步骤较好的流程控制 - 通过标准的工作方法和跟踪审计,提高了业务流程的管理◆改进客户服务 - 因为流程的一致性,提高了对客户响应的可预见性◆灵活 - 跨越流程的软件控制,使流程可以按照业务的需要重新设计。

◆业务流程改进 - 对流程的关注,使它们趋向于流畅和简单DXDiTa9E3d但从长远的角度,工作流流程管理技术的研究可为两个阶段进行:1.目前解决华研今后新工程中复杂业务流程如何使用工作流引擎技术进行实现的问题。

2.上升到面向服务体系架构,实现各个服务之间的业务流程。

RTCrpUDGiTjBPM,全称是Java Business Process Management,是一种基于J2EE的轻量级工作流管理系统。

jeesite elastisearch 全文检索实践

jeesite elastisearch 全文检索实践

jeesite elastisearch 全文检索实践JeeSite Elasticsearch 全文检索实践在当今信息爆炸的时代,有效地检索和管理大量的数据变得尤为重要。

而对于开发者和系统管理员来说,如何构建一个高效的全文检索系统也是一项具有挑战性的任务。

JeeSite作为一个成熟的Java开发框架,为我们提供了一个简单且强大的解决方案,将Elasticsearch与JeeSite框架相结合,可以快速实现高效的全文检索。

一、什么是Elasticsearch?Elasticsearch是一个开源的分布式全文检索引擎,它构建在Apache Lucene之上,并实现了全文检索和分析引擎的分布式特性。

它具有快速、可扩展和易于使用的特点,并支持复杂的查询和分析。

Elasticsearch采用倒排索引的方式存储数据,并通过分片和副本的方式实现高可用性和容错性。

二、为什么选择Elasticsearch?相比于传统的关系数据库,Elasticsearch具有以下几点优势:1. 高性能:Elasticsearch利用倒排索引和分布式架构,可以快速地进行全文检索和复杂查询。

它还支持实时索引和数据更新,所以非常适合实时应用。

2. 可扩展性:Elasticsearch可以轻松地扩展到数百台服务器,通过分片和副本的方式实现负载均衡和容错性。

3. 强大的查询功能:Elasticsearch支持全文搜索、过滤、聚合等强大的查询功能,可以满足各种复杂的检索需求。

4. 多语言支持:Elasticsearch支持多种语言的分析和处理,可以处理各种语言的全文搜索和分析需求。

三、如何在JeeSite中使用Elasticsearch?在JeeSite中使用Elasticsearch,需要进行以下几个步骤:1. 安装Elasticsearch:首先需要将Elasticsearch安装在服务器上,并启动Elasticsearch服务。

2. 配置JeeSite:在JeeSite的配置文件中,需要添加Elasticsearch相关的配置,包括Elasticsearch服务器地址、索引名称等。

jeesite说明文档工作流的应用实例供参习.doc

jeesite说明文档工作流的应用实例供参习.doc

jeesite 说明文档-6.工作流的应用实例供参习4第6章工作流的应用实例作者:ThinkGem更新日期:2014-01-03 1新建流程模型在线办公→流程管理→模型管理→新建模型点击“提交”后会立即跳转到“流程在线设计器”页面,请看下一章节2在线流程设计器在线办公→流程管理→模型管理→模型管理→编辑注意:此功能不支持IE,请用谷歌或火狐浏览器编辑。

2.1设置流程属性●名称:流程定义名称●描述:流程定义描述●流程标识:流程定义KEY,对应procDefKey,用来标识一个流程2.2拖拽形状元素●Start event:开始事件●End entit:结束事件●User task:用户任务活动●Service task:服务任务活动●Exclusive gateway:排它网关通道,只能有一条分支执行,如if else●Parallel gateway:并行网关通道,所有分支一块执行●Enclusive gateway:包含网关通道,执行符合条件的分支参考:/docs/activiti/#bpmnConstructs2.3流程发起人流程变量在开始节点的属性中设置“流程发起人”变量名:如:apply这时,任务的参与者可设置${apply},来指定谁发起谁执行如发起人发起流程,被驳回是,驳回到发起人,可使用方法。

2.4挂接表单地址●全局表单:新建流程时或活动元素上未设置表单标识时调用的表单,位于开始事件属性中“表单标识”字段,指定表单访问地址。

●活动表单:当前步骤使用的表单,使用活动节点属性“表单标识”字段。

2.5设置参与者在活动节点属性中找到“参与者”属性,点击“…”弹出如下窗口●assignee:任务执行人,设置系统中的“登录名”(loginName)。

●candidateUsers:任务执行人,多个用逗号“,”隔开。

●candidateGroups:任务执行组,多个用逗号“,”隔开,设置系统中的“角色英文名(enname)”。

关于jeesite工作流使用样例说明

关于jeesite工作流使用样例说明

一、场景介绍Jeesite使用的是activiti工作流,本次我们主要用于实现简单的审批流程:1、审批环节和修改环节执行前需要动态分配调用对象2、流程变量中需要记录事项id,方便整个流程获取二、模型建立<?xml version="1.0" encoding="UTF-8"?><definitions xmlns="/spec/BPMN/20100524/MODEL" xmlns:xsi="/2001/XMLSchema-instance" xmlns:xsd="/2001/XMLSchema" xmlns:activiti="/bpmn" xmlns:bpmndi="/spec/BPMN/20100524/DI" xmlns:omgdc="/spec/DD/20100524/DC" xmlns:omgdi="/spec/DD/20100524/DI" typeLanguage="/2001/XMLSchema" expressionLanguage="/1999/XPath" targetNamespace="/processdef"><process id="approve_process" name="业务受理" isExecutable="true"><startEvent id="start" name="开始" activiti:formKey="/ywsl/auditProcess/form"></startEvent><userTask id="audit" name="审批" activiti:formKey="/ywsl/auditProcess/audit"><extensionElements><activiti:taskListener event="create" delegateExpression="${candidateListener}"></activiti:taskListener></extensionElements></userTask><sequenceFlow id="sid-8955ECAD-719A-47C1-A41F-A32EA610C5DF" sourceRef="start" targetRef="audit"></sequenceFlow> <exclusiveGateway id="sid"></exclusiveGateway><sequenceFlow id="sid-D0995983-1EB6-4648-AB81-288CB62D94DE" sourceRef="audit" targetRef="sid"></sequenceFlow><endEvent id="sid-6C375AA3-07B6-4F46-9816-BFAA99CE9BDC" name="结束"></endEvent><userTask id="update" name="修改"><extensionElements><activiti:taskListener event="create" delegateExpression="${assigneeListener}"></activiti:taskListener></extensionElements></userTask><sequenceFlow id="sid-2461127D-B47F-4361-A472-D8C565E2DB15" sourceRef="update" targetRef="audit"></sequenceFlow> <sequenceFlow id="pass" name="通过" sourceRef="sid" targetRef="sid-6C375AA3-07B6-4F46-9816-BFAA99CE9BDC"><conditionExpression xsi:type="tFormalExpression"><![CDATA[${pass == 1}]]></conditionExpression></sequenceFlow><sequenceFlow id="reject" name="驳回" sourceRef="sid" targetRef="update"><conditionExpression xsi:type="tFormalExpression"><![CDATA[${pass == 0}]]></conditionExpression></sequenceFlow></process><bpmndi:BPMNDiagram id="BPMNDiagram_approve_process"><bpmndi:BPMNPlane bpmnElement="approve_process" id="BPMNPlane_approve_process"><bpmndi:BPMNShape bpmnElement="start" id="BPMNShape_start"><omgdc:Bounds height="30.0" width="30.0" x="162.3333282470703" y="155.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="audit" id="BPMNShape_audit"><omgdc:Bounds height="80.0" width="100.0" x="237.3333282470703" y="130.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="sid" id="BPMNShape_sid"><omgdc:Bounds height="40.0" width="40.0" x="420.0" y="150.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="sid-6C375AA3-07B6-4F46-9816-BFAA99CE9BDC" id="BPMNShape_sid-6C375AA3-07B6-4F46-9816-BFAA99CE9BDC"><omgdc:Bounds height="28.0" width="28.0" x="525.0" y="156.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="update" id="BPMNShape_update"><omgdc:Bounds height="80.0" width="100.0" x="390.0" y="15.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNEdge bpmnElement="reject" id="BPMNEdge_reject"><omgdi:waypoint x="440.4130434782609" y="150.41304347826087"></omgdi:waypoint><omgdi:waypoint x="440.17316017316017" y="95.0"></omgdi:waypoint><bpmndi:BPMNLabel><omgdc:Bounds height="0.0" width="0.0" x="440.4130434782609" y="150.41304347826087"></omgdc:Bounds></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="sid-8955ECAD-719A-47C1-A41F-A32EA610C5DF" id="BPMNEdge_sid-8955ECAD-719A-47C1-A41F-A32EA610C5DF"><omgdi:waypoint x="192.3333282470703" y="170.0"></omgdi:waypoint><omgdi:waypoint x="237.3333282470703" y="170.0"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="sid-2461127D-B47F-4361-A472-D8C565E2DB15" id="BPMNEdge_sid-2461127D-B47F-4361-A472-D8C565E2DB15"><omgdi:waypoint x="390.0" y="92.66375420370463"></omgdi:waypoint><omgdi:waypoint x="337.3333282470703" y="132.33624579629537"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="sid-D0995983-1EB6-4648-AB81-288CB62D94DE" id="BPMNEdge_sid-D0995983-1EB6-4648-AB81-288CB62D94DE"><omgdi:waypoint x="337.3333282470703" y="170.16322088685408"></omgdi:waypoint><omgdi:waypoint x="420.43449781877615" y="170.43449781877615"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="pass" id="BPMNEdge_pass"><omgdi:waypoint x="459.5969387755102" y="170.4030612244898"></omgdi:waypoint><omgdi:waypoint x="525.0001803670469" y="170.07106507427895"></omgdi:waypoint><bpmndi:BPMNLabel><omgdc:Bounds height="0.0" width="0.0" x="459.5969387755102" y="170.4030612244898"></omgdc:Bounds> </bpmndi:BPMNLabel></bpmndi:BPMNEdge></bpmndi:BPMNPlane></bpmndi:BPMNDiagram></definitions>说明:1、审批和修改任务节点增加事前监听,用于动态创建接收用户2、开始节点和审批节点增加对应需要处理的表单三、流程编写过程。

Jeesite开发手册_04、业务逻辑层、数据权限、数据事务处理、通用基类

Jeesite开发手册_04、业务逻辑层、数据权限、数据事务处理、通用基类

业务逻辑层、数据权限、数据事务处理、通用基类 - JeeSite 4.x•引言•数据权限–角色数据范围–控制业务范围–快速开始•第一步•第二步•第三步–扩展数据权限–附:API•数据库事务–注解属性–事务传播行为–事务隔离级别•基类及接口的继承关系–QueryService 查询抽象基类–CrudService 增删改抽象基类–TreeService 树结构抽象基类•其它使用技巧–分页逻辑说明–MAP参数分页–覆写内置Service引言对于业务逻辑层的开发重复代码很多,尽管有代码生成器,但从代码量总的来说还是比较多,所以就有了以下抽象类及工具,对一些常用操作进行封装。

对通用新增、删除、编辑、查询,代码操作进行封装简化。

你只需要写你的业务逻辑代码就可以了。

对特有树状结构特有字段如(所有父级编码、所有排序号编码、是否是叶子节点、当前节点层次)进行更新,比如,通过所有父级编码可快速查询到所有子级的数据;通过所有排序号,可快速对整个树结构进行排序;通过是否叶子节点快速得知是否有下级;根据当前层次快速知道当前节点在树中的级别。

对通用数据权限进行简化封装,将颗粒度降到人员身上,支持人员与数据,角色与数据权限定制(角色上的数据权限与人员身上的数据权限为或者关系)。

数据权限不仅仅支持公司、部门、角色,还可以通过配置支持你的业务字段数据信息过滤,如订单的区域、内容管理的栏目、故障单类型等等。

对事务处理使用Spring事务@Transactional注解,进行方法级别的事务控制,不用单独处理事务及回滚。

如配置传播行为,进行事务继承,子事务,事务回滚行为等,配置隔离级别读取未提交的数据等。

数据权限相对于旧版本,本次对数据权限这块进行了全面的升级,让数据权限颗粒度细化到人员身上。

支持人员与权限和角色与权限:主要是这两张表:js_sys_role_data_scope、js_sys_user_data_scope权限表中的关键字段的含义,如下:•控制类型:Office:部门;Company:公司、Role:角色;•控制数据:被控制数据权限的数据主键编号,业务表的主键编号;•控制权限:1:拥有的权限(DataScope.CTRL_PERMI_HAVE);2:管理的权限(DataScope.CTRL_PERMI_MANAGE)。

JEESITE快速开发平台(二)环境搭建

JEESITE快速开发平台(二)环境搭建

JEESITE快速开发平台(⼆)环境搭建⼀、下载源码下载地址:这⾥使⽤Mybatis版本的进⾏演⽰。

下载之后解压:他提供的⼀些⽂档⼆、环境搭建下⾯是官⽹提供的演⽰⽅法:快速体验1.具备运⾏环境:JDK1.6+、Maven3.0+、MySql5+或Oracle10g+。

2.修改src\main\resources\jeesite.properties⽂件中的数据库设置参数。

3.根据修改参数创建对应MySql或Oracle数据库⽤户和参数。

可以⼿动新建jeesite数据库,也可以通过init-db.bat脚本⾃动创建导⼊db⽬录下的sql⽂件这⾥使⽤SQLyog客户端,选中数据库右键--->导⼊---->从SQL存储⽂件导⼊数据库然后点击执⾏,执⾏完毕后4.运⾏bin\init-db.bat脚本,即可导⼊表结构及演⽰数据(linux操作系统:在控制台中切换⾄项⽬根⽬录,运⾏命令:mvn antrun:run -Pinit-db)在bin⽬录⾥并没有发现有init-db.bat脚本⽽是在db⽬录⾥注意: 在执⾏init-db.bat之前要先创建jeesite数据库,否则会报错:创建jeesite数据库之后,执⾏init-db.bat创建成功5.运⾏bin\run-tomcat7.bat或bin\run-jetty.bat,启动Web服务器(第⼀次运⾏,需要下载依赖jar包,请耐⼼等待)。

报错: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)修改jeesite.properties中的jdbc.url把localhost改为127.0.0.1然后从新运⾏run-tomcat7.bat6.输⼊最⾼管理员账号,⽤户名:thinkgem 密码:admin点击登录这就是jeesite默认的页⾯。

jeesite代码生成

jeesite代码生成

Jeesite代码生成,菜单设置,编码流程,shiro权限目录结构:一、代码生成二、jeesite结构目录三、菜单设置四、对生成的代码进行解析五、修改jeesite页面六、shiro权限七、Orm对象关系映射八、Mybatis的总体流程一、代码生成1、准备数据表2、代码生成-选择数据表及注意事项3、代码生成-配置条件4、业务表配置完成后,配置生成方案,这样,这张表的增删改查的代码就生成完成了二、jeesite结构目录1、主目录1.1:java目录1.2:resources目录1.3:webapp目录三、菜单设置设置完成后的菜单效果图五、对生成的代码进行解析1、查找文件2、jeesite编码流程流程图目录结构EntityDao.xmlDaoServiceController(1).MyBatisRegisterDao.xml(2).MyBatisRegisterDao.java(3).Register.java实体(4).RegisterService.java(5).RegisterController.java(6).Register.jsp五、修改jeesite页面1.jeesite首页(sysindex.jsp),登录页(sysLogi.jsp)2.添加背景图片六、shiro权限1.Shiro授权的三要素是:权限,角色,用户2.三要素的关联:因为通过声明权限我们仅仅能了解这个权限在项目中能做什么,而不能确定谁有这个权限,所以,我们需要在应用程序中对用户和权限建立关系。

3.在项目上: 我们一般将权限分配给某个角色,然后将这个角色分配给一个或多个用户,例如:修改的权限是只有管理员才拥护的,那么,在这个时候,管理员就相当于被设于拥有修改权限的用户,4.shiro支持三种授权方式:编码实现,注解实现,jsp Tag实现我们是通过jsp Tag和注解来实现的5.shiro流程大体上流程是:首先shiro是spring 注解和安全的高级实现,web容器在解析jsp页面时,当遇到shiro定义的tag(你也可以自定义)时,会对它的token(注解中填充的数据)进行读取.同时在后台进入url处理过程中,当它定义的拦截器扫描到每个method(或者其它)的annotation时,会将注解中填充的token再进行读取,然后在自身的拦截器中将给定注解的token和tag中获取的token,通过自身的校验对象来进行相互匹配或其他的鉴权处理。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第3章内置组件的应用作者:ThinkGem更新日期:2014-01-05 1.常用组件1.1.布局组件布局文件配置:/ jeesite/src/main/webapp/WEB-INF/decorators.xml默认布局文件:/ jeesite/src/main/webapp/WEB-INF/views/layouts/default.jsp非公共,自己建立的布局文件:/ jeesite/src/main/webapp/WEB-INF/views/模块路径/layouts/布局文件.jsp 使用布局文件:JSP的head里添加:<meta name="decorator" content="default"/>1.2.用户工具UserUtils.java fns.tld应用场景:在java文件或jsp页面上,获取当前用户相关信息1.获取当前用户:1)UserUtils.getUser();2)entity.currentUser()3)${fns:getUser()}2.获取当前用户部门:1)UserUtils.getOfficeList()2)${fns:getOfficeList()}3.获取当前用户区域:1)UserUtils.getAreaList()2)${fns:getAreaList()}4.获取当前用户菜单:1)UserUtils.getMenuList()2)${fns:getMenuList()}5.获取当前用户缓存:1)UserUtils.getCache(key);2)${fns:getCache(cacheName, defaultValue)}6.设置当前用户缓存:1)UserUtils.putCache(key);1.3.全局缓存CacheUtils.java应用场景:系统字典1.设置应用程序缓存:CacheUtils.put(key);2.获取应用程序缓存:CacheUtils.get(key);1.4.字典工具DictUtils.java应用场景:系统全局固定的字典数据,java或jsp中获取字典相关数据。

1.根据类型和值获取字典标签(列表取值):a)DictUtils.getDictLabel(String value, String type, String defaultValue)b)${ fns:getDictLabel (value, type, defaultValue)}2.根据类型和标签获取字典值(根据标签取值):a)DictUtils.getDictValue(String label, String type, String defaultLabel)b)${fns:getDictValue(label, type, defaultValue)}3.根据类型获取字典列表(下拉框,复选框,单选框):a)DictUtils.getDictList(String type)b)${fns:getDictList(type)}1.5.功能权限控制应用场景:访问功能授权,查看权限,编辑权限,导入权限,审核权限。

1.给方法添加权限标志@RequiresPermissions("sys:submodule:user:view")@RequiresUser2.菜单中设置权限标志。

3.判断权限:SecurityUtils.getSubject().isPermitted("sys:user:edit");4.视图中控制按钮(shiro.tld):<shiro:hasPermission name="sys:user:edit"><input id="btnSubmit" class="btn btn-primary" type="submit" value="保存"/>&nbsp;</shiro:hasPermission><!-- 任何一个符合条件的权限--><shiro:hasAnyPermissions name="sys:user:view, sys:user:edit,"><input id="btnSubmit" class="btn btn-primary" type="submit" value="返回"/>&nbsp;</shiro: hasAnyPermissions>1.6.数据权限应用场景:某用户访问数据范围:公司及子公司,本公司,部门及子部门,本部门,当前用户,明细设置。

// 生成数据权限过滤条件(dsf为dataScopeFilter的简写,在xml中使用${sqlMap.dsf}调用权限SQL)user.getSqlMap().put("dsf",dataScopeFilter(user.getCurrentUser(), "o", "u"));<!-- 分页查询用户信息 --><select id="findList"parameterType="User"resultMap="userResult"> SELECT<include refid="userColumns"/>FROM sys_user a<include refid="userJoins"/>WHERE a.del_flag = '0'<!-- 数据范围过滤 -->${sqlMap.dsf}</select>/*** 数据范围过滤* @param user 当前用户对象,通过“entity.getCurrentUser()”获取* @param officeAlias 机构表别名,多个用“,”逗号隔开。

* @param userAlias 用户表别名,多个用“,”逗号隔开,传递空,忽略此参数* @return标准连接条件对象*/String dataScopeFilter (User user, String officeAlias, String userAlias)1.7.智能分页组件// 设置分页参数,则分页,如果不设置,则根据条件获取全部user.setPage(page);// 执行分页查询page.setList(userDao.findPage(user));1.8.树选择组件标签文件:/ jeesite/src/main/webapp/WEB-INF/tags/treeselect.tag1.8.1.区域选择组件<tags:treeselect id="area" name="area.id" value="${area.id}" labelName="" labelValue="${}" title="区域"url="/sys/area/treeData" cssClass="input-small" allowClear="true" notAllowSelectParent="true"/>多选需要加checked="true" 属性1.8.2.公司选择组件<tags:treeselect id="office" name="office.id" value="${user.office.id}" labelName="" labelValue="${}" title="部门"url="/sys/office/treeData?type=1" cssClass="input-small" allowClear="true" notAllowSelectParent="true"/>多选需要加checked="true" 属性1.8.3.部门选择组件<tags:treeselect id="office" name="office.id" value="${user.office.id}" labelName="" labelValue="${}" title="部门"url="/sys/office/treeData?type=2" cssClass="input-small" allowClear="true" notAllowSelectParent="true"/>多选需要加checked="true" 属性1.8.4.人员选择组件<tags:treeselect id="user" name="user.id" value="${user.id}"labelName="" labelValue="${}" title="用户"url="/sys/office/treeData?type=3" cssClass="input-small" allowClear="true" notAllowSelectParent="true"/>多选需要加checked="true" 属性1.9.文件选择、文件上传组件<form:hidden path="name" htmlEscape="false" maxlength="255"class="input-xlarge"/><tags:ckfinder input="name" type="files" uploadPath="/test "/>1.10.富文本在线编辑器组件<form:textarea id="name" htmlEscape="true" path="name" rows="4" maxlength="200" class="input-xxlarge"/><tags:ckeditor replace="name" uploadPath="/test " />1.11.其它工具/src/main/java/com/thinkgem/jeesite/common/utils/ ...Excel(Export/Import)、StringUtils、DateUtils、FileUtils、Encodes、CookieUtils、Collections32.封装及组件2.1.工具类组件1)UserUtils:用户工具类(获取当前用户的相关信息)。

相关文档
最新文档