├── .gitignore ├── README.md ├── pom.xml ├── shiro-example-chapter10 ├── pom.xml └── src │ ├── main │ ├── java │ │ ├── com │ │ │ └── github │ │ │ │ └── zhangkaitao │ │ │ │ └── shiro │ │ │ │ └── chapter10 │ │ │ │ ├── JdbcTemplateUtils.java │ │ │ │ ├── SerializableUtils.java │ │ │ │ ├── session │ │ │ │ ├── dao │ │ │ │ │ └── MySessionDao.java │ │ │ │ └── scheduler │ │ │ │ │ └── MySessionValidationScheduler.java │ │ │ │ └── web │ │ │ │ └── listener │ │ │ │ ├── MySessionListener1.java │ │ │ │ └── MySessionListener2.java │ │ └── org │ │ │ └── apache │ │ │ └── shiro │ │ │ ├── ShiroConstants.java │ │ │ └── session │ │ │ ├── filter │ │ │ └── OnlineSessionFilter.java │ │ │ └── mgt │ │ │ ├── IpUtils.java │ │ │ ├── OnlineSession.java │ │ │ └── OnlineSessionFactory.java │ ├── resources │ │ ├── ehcache.xml │ │ └── shiro-web.ini │ └── webapp │ │ ├── WEB-INF │ │ └── web.xml │ │ ├── index.jsp │ │ ├── invalidSession.jsp │ │ └── login.jsp │ ├── sql │ └── shiro.sql │ └── test │ ├── java │ └── com │ │ └── github │ │ └── zhangkaitao │ │ └── shiro │ │ └── chapter10 │ │ ├── BaseTest.java │ │ └── SessionTest.java │ └── resources │ └── shiro.ini ├── shiro-example-chapter11 ├── pom.xml └── src │ ├── main │ ├── java │ │ ├── com │ │ │ └── github │ │ │ │ └── zhangkaitao │ │ │ │ └── shiro │ │ │ │ └── chapter11 │ │ │ │ ├── JdbcTemplateUtils.java │ │ │ │ ├── SerializableUtils.java │ │ │ │ ├── credentials │ │ │ │ └── RetryLimitHashedCredentialsMatcher.java │ │ │ │ ├── dao │ │ │ │ ├── PermissionDao.java │ │ │ │ ├── PermissionDaoImpl.java │ │ │ │ ├── RoleDao.java │ │ │ │ ├── RoleDaoImpl.java │ │ │ │ ├── UserDao.java │ │ │ │ └── UserDaoImpl.java │ │ │ │ ├── entity │ │ │ │ ├── Permission.java │ │ │ │ ├── Role.java │ │ │ │ ├── RolePermssion.java │ │ │ │ ├── User.java │ │ │ │ └── UserRole.java │ │ │ │ ├── realm │ │ │ │ └── UserRealm.java │ │ │ │ ├── service │ │ │ │ ├── PasswordHelper.java │ │ │ │ ├── PermissionService.java │ │ │ │ ├── PermissionServiceImpl.java │ │ │ │ ├── RoleService.java │ │ │ │ ├── RoleServiceImpl.java │ │ │ │ ├── UserService.java │ │ │ │ └── UserServiceImpl.java │ │ │ │ └── session │ │ │ │ └── dao │ │ │ │ └── MySessionDAO.java │ │ └── org │ │ │ └── apache │ │ │ └── shiro │ │ │ └── cache │ │ │ └── ehcache │ │ │ └── EhCacheManager.java │ └── resources │ │ ├── password-ehcache.xml │ │ ├── shiro-ehcache.xml │ │ └── shiro.ini │ ├── sql │ └── shiro.sql │ └── test │ └── java │ └── com │ └── github │ └── zhangkaitao │ └── shiro │ └── chapter11 │ ├── BaseTest.java │ └── realm │ └── UserRealmTest.java ├── shiro-example-chapter12 ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── github │ │ │ └── zhangkaitao │ │ │ └── shiro │ │ │ └── chapter12 │ │ │ ├── credentials │ │ │ └── RetryLimitHashedCredentialsMatcher.java │ │ │ ├── dao │ │ │ ├── PermissionDao.java │ │ │ ├── PermissionDaoImpl.java │ │ │ ├── RoleDao.java │ │ │ ├── RoleDaoImpl.java │ │ │ ├── UserDao.java │ │ │ └── UserDaoImpl.java │ │ │ ├── entity │ │ │ ├── Permission.java │ │ │ ├── Role.java │ │ │ ├── RolePermssion.java │ │ │ ├── User.java │ │ │ └── UserRole.java │ │ │ ├── realm │ │ │ └── UserRealm.java │ │ │ ├── service │ │ │ ├── PasswordHelper.java │ │ │ ├── PermissionService.java │ │ │ ├── PermissionServiceImpl.java │ │ │ ├── RoleService.java │ │ │ ├── RoleServiceImpl.java │ │ │ ├── UserService.java │ │ │ └── UserServiceImpl.java │ │ │ └── web │ │ │ ├── exception │ │ │ └── DefaultExceptionHandler.java │ │ │ └── mvc │ │ │ └── AnnotationController.java │ ├── resources │ │ ├── ehcache.xml │ │ ├── spring-beans.xml │ │ ├── spring-mvc.xml │ │ ├── spring-shiro-web.xml │ │ └── spring-shiro.xml │ └── webapp │ │ ├── WEB-INF │ │ └── web.xml │ │ ├── index.jsp │ │ ├── login.jsp │ │ ├── success.jsp │ │ └── unauthorized.jsp │ ├── sql │ └── shiro.sql │ └── test │ └── java │ └── com │ └── github │ └── zhangkaitao │ └── shiro │ └── chapter12 │ └── ShiroTest.java ├── shiro-example-chapter13 ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── github │ │ └── zhangkaitao │ │ └── shiro │ │ └── chapter13 │ │ ├── credentials │ │ └── RetryLimitHashedCredentialsMatcher.java │ │ ├── dao │ │ ├── PermissionDao.java │ │ ├── PermissionDaoImpl.java │ │ ├── RoleDao.java │ │ ├── RoleDaoImpl.java │ │ ├── UserDao.java │ │ └── UserDaoImpl.java │ │ ├── entity │ │ ├── Permission.java │ │ ├── Role.java │ │ ├── RolePermssion.java │ │ ├── User.java │ │ └── UserRole.java │ │ ├── realm │ │ └── UserRealm.java │ │ └── service │ │ ├── PasswordHelper.java │ │ ├── PermissionService.java │ │ ├── PermissionServiceImpl.java │ │ ├── RoleService.java │ │ ├── RoleServiceImpl.java │ │ ├── UserService.java │ │ └── UserServiceImpl.java │ ├── resources │ ├── ehcache.xml │ ├── spring-beans.xml │ └── spring-shiro-web.xml │ └── webapp │ ├── WEB-INF │ └── web.xml │ ├── authenticated.jsp │ ├── index.jsp │ ├── login.jsp │ ├── success.jsp │ └── unauthorized.jsp ├── shiro-example-chapter14 ├── localhost.keystore ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── github │ │ └── zhangkaitao │ │ └── shiro │ │ └── chapter14 │ │ ├── credentials │ │ └── RetryLimitHashedCredentialsMatcher.java │ │ ├── dao │ │ ├── PermissionDao.java │ │ ├── PermissionDaoImpl.java │ │ ├── RoleDao.java │ │ ├── RoleDaoImpl.java │ │ ├── UserDao.java │ │ └── UserDaoImpl.java │ │ ├── entity │ │ ├── Permission.java │ │ ├── Role.java │ │ ├── RolePermssion.java │ │ ├── User.java │ │ └── UserRole.java │ │ ├── realm │ │ └── UserRealm.java │ │ └── service │ │ ├── PasswordHelper.java │ │ ├── PermissionService.java │ │ ├── PermissionServiceImpl.java │ │ ├── RoleService.java │ │ ├── RoleServiceImpl.java │ │ ├── UserService.java │ │ └── UserServiceImpl.java │ ├── resources │ ├── ehcache.xml │ ├── spring-beans.xml │ └── spring-shiro-web.xml │ └── webapp │ ├── WEB-INF │ └── web.xml │ ├── authenticated.jsp │ ├── index.jsp │ ├── login.jsp │ ├── success.jsp │ └── unauthorized.jsp ├── shiro-example-chapter15-client ├── localhost.keystore ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── github │ │ └── zhangkaitao │ │ └── shiro │ │ └── chapter15 │ │ ├── credentials │ │ └── RetryLimitHashedCredentialsMatcher.java │ │ ├── dao │ │ ├── PermissionDao.java │ │ ├── PermissionDaoImpl.java │ │ ├── RoleDao.java │ │ ├── RoleDaoImpl.java │ │ ├── UserDao.java │ │ └── UserDaoImpl.java │ │ ├── entity │ │ ├── Permission.java │ │ ├── Role.java │ │ ├── RolePermssion.java │ │ ├── User.java │ │ └── UserRole.java │ │ ├── realm │ │ ├── MyCasRealm.java │ │ └── UserRealm.java │ │ └── service │ │ ├── PasswordHelper.java │ │ ├── PermissionService.java │ │ ├── PermissionServiceImpl.java │ │ ├── RoleService.java │ │ ├── RoleServiceImpl.java │ │ ├── UserService.java │ │ └── UserServiceImpl.java │ ├── resources │ ├── ehcache.xml │ ├── spring-beans.xml │ └── spring-shiro-web.xml │ └── webapp │ ├── WEB-INF │ └── web.xml │ ├── casFailure.jsp │ └── index.jsp ├── shiro-example-chapter15-server ├── assembly.xml ├── cas.log ├── checkstyle-rules.xml ├── checkstyle-suppressions.xml ├── localhost.keystore ├── perfStats.log ├── pom.xml └── src │ ├── licensing │ ├── header-definitions.xml │ └── header.txt │ ├── main │ ├── resources │ │ ├── cas-theme-default.properties │ │ ├── default_views.properties │ │ ├── log4j.xml │ │ ├── messages.properties │ │ ├── messages_ar.properties │ │ ├── messages_ca.properties │ │ ├── messages_cs.properties │ │ ├── messages_de.properties │ │ ├── messages_es.properties │ │ ├── messages_fa.properties │ │ ├── messages_fr.properties │ │ ├── messages_hr.properties │ │ ├── messages_it.properties │ │ ├── messages_ja.properties │ │ ├── messages_mk.properties │ │ ├── messages_nl.properties │ │ ├── messages_pl.properties │ │ ├── messages_pt_BR.properties │ │ ├── messages_pt_PT.properties │ │ ├── messages_ru.properties │ │ ├── messages_sl.properties │ │ ├── messages_sv.properties │ │ ├── messages_tr.properties │ │ ├── messages_ur.properties │ │ ├── messages_zh_CN.properties │ │ ├── messages_zh_TW.properties │ │ ├── protocol_views.properties │ │ └── saml_views.properties │ └── webapp │ │ ├── WEB-INF │ │ ├── cas-servlet.xml │ │ ├── cas.properties │ │ ├── deployerConfigContext.xml │ │ ├── login-webflow.xml │ │ ├── logout-webflow.xml │ │ ├── restlet-servlet.xml │ │ ├── spring-configuration │ │ │ ├── README.txt │ │ │ ├── applicationContext.xml │ │ │ ├── argumentExtractorsConfiguration.xml │ │ │ ├── auditTrailContext.xml │ │ │ ├── filters.xml │ │ │ ├── log4jConfiguration.xml │ │ │ ├── propertyFileConfigurer.xml │ │ │ ├── securityContext.xml │ │ │ ├── ticketExpirationPolicies.xml │ │ │ ├── ticketGrantingTicketCookieGenerator.xml │ │ │ ├── ticketRegistry.xml │ │ │ ├── uniqueIdGenerators.xml │ │ │ └── warnCookieGenerator.xml │ │ ├── unused-spring-configuration │ │ │ ├── clearpass-configuration.xml │ │ │ ├── lppe-configuration.xml │ │ │ └── mbeans.xml │ │ ├── view │ │ │ └── jsp │ │ │ │ ├── authorizationFailure.jsp │ │ │ │ ├── default │ │ │ │ └── ui │ │ │ │ │ ├── casAccountDisabledView.jsp │ │ │ │ │ ├── casAccountLockedView.jsp │ │ │ │ │ ├── casBadHoursView.jsp │ │ │ │ │ ├── casBadWorkstationView.jsp │ │ │ │ │ ├── casConfirmView.jsp │ │ │ │ │ ├── casExpiredPassView.jsp │ │ │ │ │ ├── casGenericSuccess.jsp │ │ │ │ │ ├── casLoginView.jsp │ │ │ │ │ ├── casLogoutView.jsp │ │ │ │ │ ├── casMustChangePassView.jsp │ │ │ │ │ ├── casWarnPassView.jsp │ │ │ │ │ ├── includes │ │ │ │ │ ├── bottom.jsp │ │ │ │ │ └── top.jsp │ │ │ │ │ ├── serviceErrorSsoView.jsp │ │ │ │ │ └── serviceErrorView.jsp │ │ │ │ ├── errors.jsp │ │ │ │ ├── monitoring │ │ │ │ └── viewStatistics.jsp │ │ │ │ └── protocol │ │ │ │ ├── 2.0 │ │ │ │ ├── casProxyFailureView.jsp │ │ │ │ ├── casProxySuccessView.jsp │ │ │ │ ├── casServiceValidationFailure.jsp │ │ │ │ └── casServiceValidationSuccess.jsp │ │ │ │ ├── 3.0 │ │ │ │ ├── casServiceValidationFailure.jsp │ │ │ │ └── casServiceValidationSuccess.jsp │ │ │ │ ├── casPostResponseView.jsp │ │ │ │ ├── clearPass │ │ │ │ ├── clearPassFailure.jsp │ │ │ │ └── clearPassSuccess.jsp │ │ │ │ ├── oauth │ │ │ │ └── confirm.jsp │ │ │ │ └── openid │ │ │ │ ├── casOpenIdAssociationFailureView.jsp │ │ │ │ ├── casOpenIdAssociationSuccessView.jsp │ │ │ │ ├── casOpenIdServiceFailureView.jsp │ │ │ │ ├── casOpenIdServiceSuccessView.jsp │ │ │ │ └── user.jsp │ │ └── web.xml │ │ ├── css │ │ └── cas.css │ │ ├── favicon.ico │ │ ├── images │ │ ├── confirm.gif │ │ ├── error.gif │ │ ├── green.gif │ │ ├── info.gif │ │ ├── ja-sig-logo.gif │ │ ├── key-point_bl.gif │ │ ├── key-point_br.gif │ │ ├── key-point_tl.gif │ │ ├── key-point_tr.gif │ │ ├── question.png │ │ └── red.gif │ │ ├── index.jsp │ │ └── js │ │ └── cas.js │ ├── site │ └── site.xml │ └── test │ ├── clover │ └── clover.license │ ├── java │ └── org │ │ └── jasig │ │ └── cas │ │ └── WiringTests.java │ ├── resources │ └── log4j.xml │ └── webtest │ ├── README.txt │ ├── build.xml │ ├── includes │ ├── config.xml │ └── definition.xml │ ├── logintests.xml │ ├── modules │ ├── checkBadCredentials.xml │ ├── checkLoginSuccess.xml │ ├── checkWarnPage.xml │ ├── extractServiceTicket.xml │ ├── getLoginFormWithService.xml │ ├── getLoginFormWithoutService.xml │ ├── getLogout.xml │ ├── processLogin.xml │ ├── verifyCookie.xml │ ├── verifyLoginForm.xml │ └── verifyRedirect.xml │ ├── properties │ ├── canoo.properties │ └── local.properties │ ├── proxyCallBackTest │ ├── WEB-INF │ │ └── web.xml │ └── index.jsp │ └── validationtests.xml ├── shiro-example-chapter16 ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── github │ │ │ └── zhangkaitao │ │ │ └── shiro │ │ │ ├── chapter16 │ │ │ ├── Constants.java │ │ │ ├── credentials │ │ │ │ └── RetryLimitHashedCredentialsMatcher.java │ │ │ ├── dao │ │ │ │ ├── OrganizationDao.java │ │ │ │ ├── OrganizationDaoImpl.java │ │ │ │ ├── ResourceDao.java │ │ │ │ ├── ResourceDaoImpl.java │ │ │ │ ├── RoleDao.java │ │ │ │ ├── RoleDaoImpl.java │ │ │ │ ├── UserDao.java │ │ │ │ └── UserDaoImpl.java │ │ │ ├── entity │ │ │ │ ├── Organization.java │ │ │ │ ├── Resource.java │ │ │ │ ├── Role.java │ │ │ │ └── User.java │ │ │ ├── realm │ │ │ │ └── UserRealm.java │ │ │ ├── service │ │ │ │ ├── OrganizationService.java │ │ │ │ ├── OrganizationServiceImpl.java │ │ │ │ ├── PasswordHelper.java │ │ │ │ ├── ResourceService.java │ │ │ │ ├── ResourceServiceImpl.java │ │ │ │ ├── RoleService.java │ │ │ │ ├── RoleServiceImpl.java │ │ │ │ ├── UserService.java │ │ │ │ └── UserServiceImpl.java │ │ │ └── web │ │ │ │ ├── bind │ │ │ │ ├── annotation │ │ │ │ │ └── CurrentUser.java │ │ │ │ └── method │ │ │ │ │ └── CurrentUserMethodArgumentResolver.java │ │ │ │ ├── controller │ │ │ │ ├── IndexController.java │ │ │ │ ├── LoginController.java │ │ │ │ ├── OrganizationController.java │ │ │ │ ├── ResourceController.java │ │ │ │ ├── RoleController.java │ │ │ │ └── UserController.java │ │ │ │ ├── exception │ │ │ │ └── DefaultExceptionHandler.java │ │ │ │ ├── shiro │ │ │ │ └── filter │ │ │ │ │ └── SysUserFilter.java │ │ │ │ └── taglib │ │ │ │ └── Functions.java │ │ │ └── spring │ │ │ ├── SpringCacheManagerWrapper.java │ │ │ └── SpringUtils.java │ ├── resources │ │ ├── ehcache │ │ │ └── ehcache.xml │ │ ├── resources.properties │ │ ├── spring-config-cache.xml │ │ ├── spring-config-shiro.xml │ │ ├── spring-config.xml │ │ ├── spring-mvc-shiro.xml │ │ └── spring-mvc.xml │ └── webapp │ │ └── WEB-INF │ │ ├── jsp │ │ ├── index.jsp │ │ ├── login.jsp │ │ ├── organization │ │ │ ├── appendChild.jsp │ │ │ ├── index.jsp │ │ │ ├── maintain.jsp │ │ │ ├── move.jsp │ │ │ ├── success.jsp │ │ │ └── tree.jsp │ │ ├── resource │ │ │ ├── edit.jsp │ │ │ └── list.jsp │ │ ├── role │ │ │ ├── edit.jsp │ │ │ └── list.jsp │ │ ├── unauthorized.jsp │ │ ├── user │ │ │ ├── changePassword.jsp │ │ │ ├── edit.jsp │ │ │ └── list.jsp │ │ └── welcome.jsp │ │ ├── static │ │ ├── JQuery zTree v3.5.15 │ │ │ ├── api │ │ │ │ ├── API_cn.html │ │ │ │ ├── API_en.html │ │ │ │ ├── apiCss │ │ │ │ │ ├── api.js │ │ │ │ │ ├── common.css │ │ │ │ │ ├── common_ie6.css │ │ │ │ │ ├── img │ │ │ │ │ │ ├── apiMenu.gif │ │ │ │ │ │ ├── apiMenu.png │ │ │ │ │ │ ├── background.jpg │ │ │ │ │ │ ├── chinese.png │ │ │ │ │ │ ├── close.png │ │ │ │ │ │ ├── contact-bg.png │ │ │ │ │ │ ├── english.png │ │ │ │ │ │ ├── header-bg.png │ │ │ │ │ │ ├── lightbulb.png │ │ │ │ │ │ ├── overlay_arrow.gif │ │ │ │ │ │ ├── overlay_arrow.png │ │ │ │ │ │ ├── overlay_bg.png │ │ │ │ │ │ ├── overlay_close_IE6.gif │ │ │ │ │ │ ├── zTreeStandard.gif │ │ │ │ │ │ └── zTreeStandard.png │ │ │ │ │ ├── jquery-1.6.2.min.js │ │ │ │ │ ├── jquery.ztree.core-3.5.js │ │ │ │ │ └── zTreeStyleForApi.css │ │ │ │ ├── cn │ │ │ │ │ ├── fn.zTree._z.html │ │ │ │ │ ├── fn.zTree.destroy.html │ │ │ │ │ ├── fn.zTree.getZTreeObj.html │ │ │ │ │ ├── fn.zTree.init.html │ │ │ │ │ ├── setting.async.autoParam.html │ │ │ │ │ ├── setting.async.contentType.html │ │ │ │ │ ├── setting.async.dataFilter.html │ │ │ │ │ ├── setting.async.dataType.html │ │ │ │ │ ├── setting.async.enable.html │ │ │ │ │ ├── setting.async.otherParam.html │ │ │ │ │ ├── setting.async.type.html │ │ │ │ │ ├── setting.async.url.html │ │ │ │ │ ├── setting.callback.beforeAsync.html │ │ │ │ │ ├── setting.callback.beforeCheck.html │ │ │ │ │ ├── setting.callback.beforeClick.html │ │ │ │ │ ├── setting.callback.beforeCollapse.html │ │ │ │ │ ├── setting.callback.beforeDblClick.html │ │ │ │ │ ├── setting.callback.beforeDrag.html │ │ │ │ │ ├── setting.callback.beforeDragOpen.html │ │ │ │ │ ├── setting.callback.beforeDrop.html │ │ │ │ │ ├── setting.callback.beforeEditName.html │ │ │ │ │ ├── setting.callback.beforeExpand.html │ │ │ │ │ ├── setting.callback.beforeMouseDown.html │ │ │ │ │ ├── setting.callback.beforeMouseUp.html │ │ │ │ │ ├── setting.callback.beforeRemove.html │ │ │ │ │ ├── setting.callback.beforeRename.html │ │ │ │ │ ├── setting.callback.beforeRightClick.html │ │ │ │ │ ├── setting.callback.onAsyncError.html │ │ │ │ │ ├── setting.callback.onAsyncSuccess.html │ │ │ │ │ ├── setting.callback.onCheck.html │ │ │ │ │ ├── setting.callback.onClick.html │ │ │ │ │ ├── setting.callback.onCollapse.html │ │ │ │ │ ├── setting.callback.onDblClick.html │ │ │ │ │ ├── setting.callback.onDrag.html │ │ │ │ │ ├── setting.callback.onDrop.html │ │ │ │ │ ├── setting.callback.onExpand.html │ │ │ │ │ ├── setting.callback.onMouseDown.html │ │ │ │ │ ├── setting.callback.onMouseUp.html │ │ │ │ │ ├── setting.callback.onNodeCreated.html │ │ │ │ │ ├── setting.callback.onRemove.html │ │ │ │ │ ├── setting.callback.onRename.html │ │ │ │ │ ├── setting.callback.onRightClick.html │ │ │ │ │ ├── setting.check.autoCheckTrigger.html │ │ │ │ │ ├── setting.check.chkDisabledInherit.html │ │ │ │ │ ├── setting.check.chkStyle.html │ │ │ │ │ ├── setting.check.chkboxType.html │ │ │ │ │ ├── setting.check.enable.html │ │ │ │ │ ├── setting.check.nocheckInherit.html │ │ │ │ │ ├── setting.check.radioType.html │ │ │ │ │ ├── setting.data.keep.leaf.html │ │ │ │ │ ├── setting.data.keep.parent.html │ │ │ │ │ ├── setting.data.key.checked.html │ │ │ │ │ ├── setting.data.key.children.html │ │ │ │ │ ├── setting.data.key.name.html │ │ │ │ │ ├── setting.data.key.title.html │ │ │ │ │ ├── setting.data.key.url.html │ │ │ │ │ ├── setting.data.simpleData.enable.html │ │ │ │ │ ├── setting.data.simpleData.idKey.html │ │ │ │ │ ├── setting.data.simpleData.pIdKey.html │ │ │ │ │ ├── setting.data.simpleData.rootPId.html │ │ │ │ │ ├── setting.edit.drag.autoExpandTrigger.html │ │ │ │ │ ├── setting.edit.drag.autoOpenTime.html │ │ │ │ │ ├── setting.edit.drag.borderMax.html │ │ │ │ │ ├── setting.edit.drag.borderMin.html │ │ │ │ │ ├── setting.edit.drag.inner.html │ │ │ │ │ ├── setting.edit.drag.isCopy.html │ │ │ │ │ ├── setting.edit.drag.isMove.html │ │ │ │ │ ├── setting.edit.drag.maxShowNodeNum.html │ │ │ │ │ ├── setting.edit.drag.minMoveSize.html │ │ │ │ │ ├── setting.edit.drag.next.html │ │ │ │ │ ├── setting.edit.drag.prev.html │ │ │ │ │ ├── setting.edit.editNameSelectAll.html │ │ │ │ │ ├── setting.edit.enable.html │ │ │ │ │ ├── setting.edit.removeTitle.html │ │ │ │ │ ├── setting.edit.renameTitle.html │ │ │ │ │ ├── setting.edit.showRemoveBtn.html │ │ │ │ │ ├── setting.edit.showRenameBtn.html │ │ │ │ │ ├── setting.treeId.html │ │ │ │ │ ├── setting.treeObj.html │ │ │ │ │ ├── setting.view.addDiyDom.html │ │ │ │ │ ├── setting.view.addHoverDom.html │ │ │ │ │ ├── setting.view.autoCancelSelected.html │ │ │ │ │ ├── setting.view.dblClickExpand.html │ │ │ │ │ ├── setting.view.expandSpeed.html │ │ │ │ │ ├── setting.view.fontCss.html │ │ │ │ │ ├── setting.view.nameIsHTML.html │ │ │ │ │ ├── setting.view.removeHoverDom.html │ │ │ │ │ ├── setting.view.selectedMulti.html │ │ │ │ │ ├── setting.view.showIcon.html │ │ │ │ │ ├── setting.view.showLine.html │ │ │ │ │ ├── setting.view.showTitle.html │ │ │ │ │ ├── setting.view.txtSelectedEnable.html │ │ │ │ │ ├── treeNode.check_Child_State.html │ │ │ │ │ ├── treeNode.check_Focus.html │ │ │ │ │ ├── treeNode.checked.html │ │ │ │ │ ├── treeNode.checkedOld.html │ │ │ │ │ ├── treeNode.children.html │ │ │ │ │ ├── treeNode.chkDisabled.html │ │ │ │ │ ├── treeNode.click.html │ │ │ │ │ ├── treeNode.diy.html │ │ │ │ │ ├── treeNode.editNameFlag.html │ │ │ │ │ ├── treeNode.getCheckStatus.html │ │ │ │ │ ├── treeNode.getNextNode.html │ │ │ │ │ ├── treeNode.getParentNode.html │ │ │ │ │ ├── treeNode.getPreNode.html │ │ │ │ │ ├── treeNode.halfCheck.html │ │ │ │ │ ├── treeNode.icon.html │ │ │ │ │ ├── treeNode.iconClose.html │ │ │ │ │ ├── treeNode.iconOpen.html │ │ │ │ │ ├── treeNode.iconSkin.html │ │ │ │ │ ├── treeNode.isAjaxing.html │ │ │ │ │ ├── treeNode.isFirstNode.html │ │ │ │ │ ├── treeNode.isHidden.html │ │ │ │ │ ├── treeNode.isHover.html │ │ │ │ │ ├── treeNode.isLastNode.html │ │ │ │ │ ├── treeNode.isParent.html │ │ │ │ │ ├── treeNode.level.html │ │ │ │ │ ├── treeNode.name.html │ │ │ │ │ ├── treeNode.nocheck.html │ │ │ │ │ ├── treeNode.open.html │ │ │ │ │ ├── treeNode.parentTId.html │ │ │ │ │ ├── treeNode.tId.html │ │ │ │ │ ├── treeNode.target.html │ │ │ │ │ ├── treeNode.url.html │ │ │ │ │ ├── treeNode.zAsync.html │ │ │ │ │ ├── zTreeObj.addNodes.html │ │ │ │ │ ├── zTreeObj.cancelEditName.html │ │ │ │ │ ├── zTreeObj.cancelSelectedNode.html │ │ │ │ │ ├── zTreeObj.checkAllNodes.html │ │ │ │ │ ├── zTreeObj.checkNode.html │ │ │ │ │ ├── zTreeObj.copyNode.html │ │ │ │ │ ├── zTreeObj.destroy.html │ │ │ │ │ ├── zTreeObj.editName.html │ │ │ │ │ ├── zTreeObj.expandAll.html │ │ │ │ │ ├── zTreeObj.expandNode.html │ │ │ │ │ ├── zTreeObj.getChangeCheckedNodes.html │ │ │ │ │ ├── zTreeObj.getCheckedNodes.html │ │ │ │ │ ├── zTreeObj.getNodeByParam.html │ │ │ │ │ ├── zTreeObj.getNodeByTId.html │ │ │ │ │ ├── zTreeObj.getNodeIndex.html │ │ │ │ │ ├── zTreeObj.getNodes.html │ │ │ │ │ ├── zTreeObj.getNodesByFilter.html │ │ │ │ │ ├── zTreeObj.getNodesByParam.html │ │ │ │ │ ├── zTreeObj.getNodesByParamFuzzy.html │ │ │ │ │ ├── zTreeObj.getSelectedNodes.html │ │ │ │ │ ├── zTreeObj.hideNode.html │ │ │ │ │ ├── zTreeObj.hideNodes.html │ │ │ │ │ ├── zTreeObj.moveNode.html │ │ │ │ │ ├── zTreeObj.reAsyncChildNodes.html │ │ │ │ │ ├── zTreeObj.refresh.html │ │ │ │ │ ├── zTreeObj.removeChildNodes.html │ │ │ │ │ ├── zTreeObj.removeNode.html │ │ │ │ │ ├── zTreeObj.selectNode.html │ │ │ │ │ ├── zTreeObj.setChkDisabled.html │ │ │ │ │ ├── zTreeObj.setEditable.html │ │ │ │ │ ├── zTreeObj.setting.html │ │ │ │ │ ├── zTreeObj.showNode.html │ │ │ │ │ ├── zTreeObj.showNodes.html │ │ │ │ │ ├── zTreeObj.transformToArray.html │ │ │ │ │ ├── zTreeObj.transformTozTreeNodes.html │ │ │ │ │ └── zTreeObj.updateNode.html │ │ │ │ └── en │ │ │ │ │ ├── fn.zTree._z.html │ │ │ │ │ ├── fn.zTree.destroy.html │ │ │ │ │ ├── fn.zTree.getZTreeObj.html │ │ │ │ │ ├── fn.zTree.init.html │ │ │ │ │ ├── setting.async.autoParam.html │ │ │ │ │ ├── setting.async.contentType.html │ │ │ │ │ ├── setting.async.dataFilter.html │ │ │ │ │ ├── setting.async.dataType.html │ │ │ │ │ ├── setting.async.enable.html │ │ │ │ │ ├── setting.async.otherParam.html │ │ │ │ │ ├── setting.async.type.html │ │ │ │ │ ├── setting.async.url.html │ │ │ │ │ ├── setting.callback.beforeAsync.html │ │ │ │ │ ├── setting.callback.beforeCheck.html │ │ │ │ │ ├── setting.callback.beforeClick.html │ │ │ │ │ ├── setting.callback.beforeCollapse.html │ │ │ │ │ ├── setting.callback.beforeDblClick.html │ │ │ │ │ ├── setting.callback.beforeDrag.html │ │ │ │ │ ├── setting.callback.beforeDragOpen.html │ │ │ │ │ ├── setting.callback.beforeDrop.html │ │ │ │ │ ├── setting.callback.beforeEditName.html │ │ │ │ │ ├── setting.callback.beforeExpand.html │ │ │ │ │ ├── setting.callback.beforeMouseDown.html │ │ │ │ │ ├── setting.callback.beforeMouseUp.html │ │ │ │ │ ├── setting.callback.beforeRemove.html │ │ │ │ │ ├── setting.callback.beforeRename.html │ │ │ │ │ ├── setting.callback.beforeRightClick.html │ │ │ │ │ ├── setting.callback.onAsyncError.html │ │ │ │ │ ├── setting.callback.onAsyncSuccess.html │ │ │ │ │ ├── setting.callback.onCheck.html │ │ │ │ │ ├── setting.callback.onClick.html │ │ │ │ │ ├── setting.callback.onCollapse.html │ │ │ │ │ ├── setting.callback.onDblClick.html │ │ │ │ │ ├── setting.callback.onDrag.html │ │ │ │ │ ├── setting.callback.onDrop.html │ │ │ │ │ ├── setting.callback.onExpand.html │ │ │ │ │ ├── setting.callback.onMouseDown.html │ │ │ │ │ ├── setting.callback.onMouseUp.html │ │ │ │ │ ├── setting.callback.onNodeCreated.html │ │ │ │ │ ├── setting.callback.onRemove.html │ │ │ │ │ ├── setting.callback.onRename.html │ │ │ │ │ ├── setting.callback.onRightClick.html │ │ │ │ │ ├── setting.check.autoCheckTrigger.html │ │ │ │ │ ├── setting.check.chkDisabledInherit.html │ │ │ │ │ ├── setting.check.chkStyle.html │ │ │ │ │ ├── setting.check.chkboxType.html │ │ │ │ │ ├── setting.check.enable.html │ │ │ │ │ ├── setting.check.nocheckInherit.html │ │ │ │ │ ├── setting.check.radioType.html │ │ │ │ │ ├── setting.data.keep.leaf.html │ │ │ │ │ ├── setting.data.keep.parent.html │ │ │ │ │ ├── setting.data.key.checked.html │ │ │ │ │ ├── setting.data.key.children.html │ │ │ │ │ ├── setting.data.key.name.html │ │ │ │ │ ├── setting.data.key.title.html │ │ │ │ │ ├── setting.data.key.url.html │ │ │ │ │ ├── setting.data.simpleData.enable.html │ │ │ │ │ ├── setting.data.simpleData.idKey.html │ │ │ │ │ ├── setting.data.simpleData.pIdKey.html │ │ │ │ │ ├── setting.data.simpleData.rootPId.html │ │ │ │ │ ├── setting.edit.drag.autoExpandTrigger.html │ │ │ │ │ ├── setting.edit.drag.autoOpenTime.html │ │ │ │ │ ├── setting.edit.drag.borderMax.html │ │ │ │ │ ├── setting.edit.drag.borderMin.html │ │ │ │ │ ├── setting.edit.drag.inner.html │ │ │ │ │ ├── setting.edit.drag.isCopy.html │ │ │ │ │ ├── setting.edit.drag.isMove.html │ │ │ │ │ ├── setting.edit.drag.maxShowNodeNum.html │ │ │ │ │ ├── setting.edit.drag.minMoveSize.html │ │ │ │ │ ├── setting.edit.drag.next.html │ │ │ │ │ ├── setting.edit.drag.prev.html │ │ │ │ │ ├── setting.edit.editNameSelectAll.html │ │ │ │ │ ├── setting.edit.enable.html │ │ │ │ │ ├── setting.edit.removeTitle.html │ │ │ │ │ ├── setting.edit.renameTitle.html │ │ │ │ │ ├── setting.edit.showRemoveBtn.html │ │ │ │ │ ├── setting.edit.showRenameBtn.html │ │ │ │ │ ├── setting.treeId.html │ │ │ │ │ ├── setting.treeObj.html │ │ │ │ │ ├── setting.view.addDiyDom.html │ │ │ │ │ ├── setting.view.addHoverDom.html │ │ │ │ │ ├── setting.view.autoCancelSelected.html │ │ │ │ │ ├── setting.view.dblClickExpand.html │ │ │ │ │ ├── setting.view.expandSpeed.html │ │ │ │ │ ├── setting.view.fontCss.html │ │ │ │ │ ├── setting.view.nameIsHTML.html │ │ │ │ │ ├── setting.view.removeHoverDom.html │ │ │ │ │ ├── setting.view.selectedMulti.html │ │ │ │ │ ├── setting.view.showIcon.html │ │ │ │ │ ├── setting.view.showLine.html │ │ │ │ │ ├── setting.view.showTitle.html │ │ │ │ │ ├── setting.view.txtSelectedEnable.html │ │ │ │ │ ├── treeNode.check_Child_State.html │ │ │ │ │ ├── treeNode.check_Focus.html │ │ │ │ │ ├── treeNode.checked.html │ │ │ │ │ ├── treeNode.checkedOld.html │ │ │ │ │ ├── treeNode.children.html │ │ │ │ │ ├── treeNode.chkDisabled.html │ │ │ │ │ ├── treeNode.click.html │ │ │ │ │ ├── treeNode.diy.html │ │ │ │ │ ├── treeNode.editNameFlag.html │ │ │ │ │ ├── treeNode.getCheckStatus.html │ │ │ │ │ ├── treeNode.getNextNode.html │ │ │ │ │ ├── treeNode.getParentNode.html │ │ │ │ │ ├── treeNode.getPreNode.html │ │ │ │ │ ├── treeNode.halfCheck.html │ │ │ │ │ ├── treeNode.icon.html │ │ │ │ │ ├── treeNode.iconClose.html │ │ │ │ │ ├── treeNode.iconOpen.html │ │ │ │ │ ├── treeNode.iconSkin.html │ │ │ │ │ ├── treeNode.isAjaxing.html │ │ │ │ │ ├── treeNode.isFirstNode.html │ │ │ │ │ ├── treeNode.isHidden.html │ │ │ │ │ ├── treeNode.isHover.html │ │ │ │ │ ├── treeNode.isLastNode.html │ │ │ │ │ ├── treeNode.isParent.html │ │ │ │ │ ├── treeNode.level.html │ │ │ │ │ ├── treeNode.name.html │ │ │ │ │ ├── treeNode.nocheck.html │ │ │ │ │ ├── treeNode.open.html │ │ │ │ │ ├── treeNode.parentTId.html │ │ │ │ │ ├── treeNode.tId.html │ │ │ │ │ ├── treeNode.target.html │ │ │ │ │ ├── treeNode.url.html │ │ │ │ │ ├── treeNode.zAsync.html │ │ │ │ │ ├── zTreeObj.addNodes.html │ │ │ │ │ ├── zTreeObj.cancelEditName.html │ │ │ │ │ ├── zTreeObj.cancelSelectedNode.html │ │ │ │ │ ├── zTreeObj.checkAllNodes.html │ │ │ │ │ ├── zTreeObj.checkNode.html │ │ │ │ │ ├── zTreeObj.copyNode.html │ │ │ │ │ ├── zTreeObj.destroy.html │ │ │ │ │ ├── zTreeObj.editName.html │ │ │ │ │ ├── zTreeObj.expandAll.html │ │ │ │ │ ├── zTreeObj.expandNode.html │ │ │ │ │ ├── zTreeObj.getChangeCheckedNodes.html │ │ │ │ │ ├── zTreeObj.getCheckedNodes.html │ │ │ │ │ ├── zTreeObj.getNodeByParam.html │ │ │ │ │ ├── zTreeObj.getNodeByTId.html │ │ │ │ │ ├── zTreeObj.getNodeIndex.html │ │ │ │ │ ├── zTreeObj.getNodes.html │ │ │ │ │ ├── zTreeObj.getNodesByFilter.html │ │ │ │ │ ├── zTreeObj.getNodesByParam.html │ │ │ │ │ ├── zTreeObj.getNodesByParamFuzzy.html │ │ │ │ │ ├── zTreeObj.getSelectedNodes.html │ │ │ │ │ ├── zTreeObj.hideNode.html │ │ │ │ │ ├── zTreeObj.hideNodes.html │ │ │ │ │ ├── zTreeObj.moveNode.html │ │ │ │ │ ├── zTreeObj.reAsyncChildNodes.html │ │ │ │ │ ├── zTreeObj.refresh.html │ │ │ │ │ ├── zTreeObj.removeChildNodes.html │ │ │ │ │ ├── zTreeObj.removeNode.html │ │ │ │ │ ├── zTreeObj.selectNode.html │ │ │ │ │ ├── zTreeObj.setChkDisabled.html │ │ │ │ │ ├── zTreeObj.setEditable.html │ │ │ │ │ ├── zTreeObj.setting.html │ │ │ │ │ ├── zTreeObj.showNode.html │ │ │ │ │ ├── zTreeObj.showNodes.html │ │ │ │ │ ├── zTreeObj.transformToArray.html │ │ │ │ │ ├── zTreeObj.transformTozTreeNodes.html │ │ │ │ │ └── zTreeObj.updateNode.html │ │ │ ├── css │ │ │ │ ├── demo.css │ │ │ │ └── zTreeStyle │ │ │ │ │ ├── img │ │ │ │ │ ├── diy │ │ │ │ │ │ ├── 1_close.png │ │ │ │ │ │ ├── 1_open.png │ │ │ │ │ │ ├── 2.png │ │ │ │ │ │ ├── 3.png │ │ │ │ │ │ ├── 4.png │ │ │ │ │ │ ├── 5.png │ │ │ │ │ │ ├── 6.png │ │ │ │ │ │ ├── 7.png │ │ │ │ │ │ ├── 8.png │ │ │ │ │ │ └── 9.png │ │ │ │ │ ├── line_conn.gif │ │ │ │ │ ├── loading.gif │ │ │ │ │ ├── zTreeStandard.gif │ │ │ │ │ └── zTreeStandard.png │ │ │ │ │ └── zTreeStyle.css │ │ │ ├── demo │ │ │ │ ├── cn │ │ │ │ │ ├── asyncData │ │ │ │ │ │ ├── getNodes.php │ │ │ │ │ │ └── getNodesForBigData.php │ │ │ │ │ ├── bigdata │ │ │ │ │ │ ├── common.html │ │ │ │ │ │ ├── diy_async.html │ │ │ │ │ │ └── page.html │ │ │ │ │ ├── core │ │ │ │ │ │ ├── async.html │ │ │ │ │ │ ├── async_fun.html │ │ │ │ │ │ ├── click.html │ │ │ │ │ │ ├── custom_font.html │ │ │ │ │ │ ├── custom_icon.html │ │ │ │ │ │ ├── custom_iconSkin.html │ │ │ │ │ │ ├── expand.html │ │ │ │ │ │ ├── noicon.html │ │ │ │ │ │ ├── noline.html │ │ │ │ │ │ ├── otherMouse.html │ │ │ │ │ │ ├── searchNodes.html │ │ │ │ │ │ ├── simpleData.html │ │ │ │ │ │ ├── standardData.html │ │ │ │ │ │ ├── update_fun.html │ │ │ │ │ │ └── url.html │ │ │ │ │ ├── excheck │ │ │ │ │ │ ├── checkbox.html │ │ │ │ │ │ ├── checkbox_chkDisabled.html │ │ │ │ │ │ ├── checkbox_count.html │ │ │ │ │ │ ├── checkbox_fun.html │ │ │ │ │ │ ├── checkbox_halfCheck.html │ │ │ │ │ │ ├── checkbox_nocheck.html │ │ │ │ │ │ ├── radio.html │ │ │ │ │ │ ├── radio_chkDisabled.html │ │ │ │ │ │ ├── radio_fun.html │ │ │ │ │ │ ├── radio_halfCheck.html │ │ │ │ │ │ └── radio_nocheck.html │ │ │ │ │ ├── exedit │ │ │ │ │ │ ├── async_edit.html │ │ │ │ │ │ ├── drag.html │ │ │ │ │ │ ├── drag_fun.html │ │ │ │ │ │ ├── drag_super.html │ │ │ │ │ │ ├── edit.html │ │ │ │ │ │ ├── edit_fun.html │ │ │ │ │ │ ├── edit_super.html │ │ │ │ │ │ └── multiTree.html │ │ │ │ │ ├── exhide │ │ │ │ │ │ ├── checkbox.html │ │ │ │ │ │ ├── common.html │ │ │ │ │ │ └── radio.html │ │ │ │ │ ├── index.html │ │ │ │ │ └── super │ │ │ │ │ │ ├── asyncForAll.html │ │ │ │ │ │ ├── checkbox_radio.html │ │ │ │ │ │ ├── diydom.html │ │ │ │ │ │ ├── dragWithOther.html │ │ │ │ │ │ ├── left_menu.html │ │ │ │ │ │ ├── left_menuForOutLook.gif │ │ │ │ │ │ ├── left_menuForOutLook.html │ │ │ │ │ │ ├── left_menuForOutLook.png │ │ │ │ │ │ ├── oneclick.html │ │ │ │ │ │ ├── oneroot.html │ │ │ │ │ │ ├── rightClickMenu.html │ │ │ │ │ │ ├── select_menu.html │ │ │ │ │ │ ├── select_menu_checkbox.html │ │ │ │ │ │ ├── select_menu_radio.html │ │ │ │ │ │ └── singlepath.html │ │ │ │ └── en │ │ │ │ │ ├── asyncData │ │ │ │ │ ├── getNodes.php │ │ │ │ │ └── getNodesForBigData.php │ │ │ │ │ ├── bigdata │ │ │ │ │ ├── common.html │ │ │ │ │ ├── diy_async.html │ │ │ │ │ └── page.html │ │ │ │ │ ├── core │ │ │ │ │ ├── async.html │ │ │ │ │ ├── async_fun.html │ │ │ │ │ ├── click.html │ │ │ │ │ ├── custom_font.html │ │ │ │ │ ├── custom_icon.html │ │ │ │ │ ├── custom_iconSkin.html │ │ │ │ │ ├── expand.html │ │ │ │ │ ├── noicon.html │ │ │ │ │ ├── noline.html │ │ │ │ │ ├── otherMouse.html │ │ │ │ │ ├── searchNodes.html │ │ │ │ │ ├── simpleData.html │ │ │ │ │ ├── standardData.html │ │ │ │ │ ├── update_fun.html │ │ │ │ │ └── url.html │ │ │ │ │ ├── excheck │ │ │ │ │ ├── checkbox.html │ │ │ │ │ ├── checkbox_chkDisabled.html │ │ │ │ │ ├── checkbox_count.html │ │ │ │ │ ├── checkbox_fun.html │ │ │ │ │ ├── checkbox_halfCheck.html │ │ │ │ │ ├── checkbox_nocheck.html │ │ │ │ │ ├── radio.html │ │ │ │ │ ├── radio_chkDisabled.html │ │ │ │ │ ├── radio_fun.html │ │ │ │ │ ├── radio_halfCheck.html │ │ │ │ │ └── radio_nocheck.html │ │ │ │ │ ├── exedit │ │ │ │ │ ├── async_edit.html │ │ │ │ │ ├── drag.html │ │ │ │ │ ├── drag_fun.html │ │ │ │ │ ├── drag_super.html │ │ │ │ │ ├── edit.html │ │ │ │ │ ├── edit_fun.html │ │ │ │ │ ├── edit_super.html │ │ │ │ │ └── multiTree.html │ │ │ │ │ ├── exhide │ │ │ │ │ ├── checkbox.html │ │ │ │ │ ├── common.html │ │ │ │ │ └── radio.html │ │ │ │ │ ├── index.html │ │ │ │ │ └── super │ │ │ │ │ ├── asyncForAll.html │ │ │ │ │ ├── checkbox_radio.html │ │ │ │ │ ├── diydom.html │ │ │ │ │ ├── dragWithOther.html │ │ │ │ │ ├── left_menu.html │ │ │ │ │ ├── left_menuForOutLook.gif │ │ │ │ │ ├── left_menuForOutLook.html │ │ │ │ │ ├── left_menuForOutLook.png │ │ │ │ │ ├── oneclick.html │ │ │ │ │ ├── oneroot.html │ │ │ │ │ ├── rightClickMenu.html │ │ │ │ │ ├── select_menu.html │ │ │ │ │ ├── select_menu_checkbox.html │ │ │ │ │ ├── select_menu_radio.html │ │ │ │ │ └── singlepath.html │ │ │ ├── js │ │ │ │ ├── jquery-1.4.4.min.js │ │ │ │ ├── jquery.ztree.all-3.5.js │ │ │ │ ├── jquery.ztree.all-3.5.min.js │ │ │ │ ├── jquery.ztree.core-3.5.js │ │ │ │ ├── jquery.ztree.core-3.5.min.js │ │ │ │ ├── jquery.ztree.excheck-3.5.js │ │ │ │ ├── jquery.ztree.excheck-3.5.min.js │ │ │ │ ├── jquery.ztree.exedit-3.5.js │ │ │ │ ├── jquery.ztree.exedit-3.5.min.js │ │ │ │ ├── jquery.ztree.exhide-3.5.js │ │ │ │ └── jquery.ztree.exhide-3.5.min.js │ │ │ └── log v3.x.txt │ │ ├── css │ │ │ ├── css.css │ │ │ └── layout-default-latest.css │ │ ├── jquery-treetable │ │ │ ├── .gitignore │ │ │ ├── CHANGELOG.txt │ │ │ ├── GPL-LICENSE.txt │ │ │ ├── MIT-LICENSE.txt │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── javascripts │ │ │ │ ├── src │ │ │ │ │ └── jquery.treetable.js │ │ │ │ └── test │ │ │ │ │ └── jquery.treetable.test.js │ │ │ ├── stylesheets │ │ │ │ ├── jquery.treetable.css │ │ │ │ ├── jquery.treetable.theme.default.css │ │ │ │ └── screen.css │ │ │ ├── test.html │ │ │ └── treetable.jquery.json │ │ └── js │ │ │ ├── jquery-1.11.0.min.js │ │ │ └── jquery.layout-latest.min.js │ │ ├── tld │ │ └── zhang-functions.tld │ │ └── web.xml │ └── sql │ ├── shiro-data.sql │ └── shiro-schema.sql ├── shiro-example-chapter17-client ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── github │ │ └── zhangkaitao │ │ └── shiro │ │ └── chapter18 │ │ └── oauth2 │ │ ├── OAuth2AuthenticationException.java │ │ ├── OAuth2AuthenticationFilter.java │ │ ├── OAuth2Realm.java │ │ └── OAuth2Token.java │ ├── resources │ ├── ehcache │ │ └── ehcache.xml │ └── spring-config-shiro.xml │ └── webapp │ ├── WEB-INF │ └── web.xml │ ├── index.jsp │ └── oauth2Failure.jsp ├── shiro-example-chapter17-server ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── github │ │ │ └── zhangkaitao │ │ │ └── shiro │ │ │ ├── chapter17 │ │ │ ├── Constants.java │ │ │ ├── credentials │ │ │ │ └── RetryLimitHashedCredentialsMatcher.java │ │ │ ├── dao │ │ │ │ ├── ClientDao.java │ │ │ │ ├── ClientDaoImpl.java │ │ │ │ ├── UserDao.java │ │ │ │ └── UserDaoImpl.java │ │ │ ├── entity │ │ │ │ ├── Client.java │ │ │ │ └── User.java │ │ │ ├── realm │ │ │ │ └── UserRealm.java │ │ │ ├── service │ │ │ │ ├── ClientService.java │ │ │ │ ├── ClientServiceImpl.java │ │ │ │ ├── OAuthService.java │ │ │ │ ├── OAuthServiceImpl.java │ │ │ │ ├── PasswordHelper.java │ │ │ │ ├── UserService.java │ │ │ │ └── UserServiceImpl.java │ │ │ └── web │ │ │ │ ├── controller │ │ │ │ ├── AccessTokenController.java │ │ │ │ ├── AuthorizeController.java │ │ │ │ ├── ClientController.java │ │ │ │ ├── IndexController.java │ │ │ │ ├── LoginController.java │ │ │ │ ├── UserController.java │ │ │ │ └── UserInfoController.java │ │ │ │ └── exception │ │ │ │ └── DefaultExceptionHandler.java │ │ │ └── spring │ │ │ ├── SpringCacheManagerWrapper.java │ │ │ └── SpringUtils.java │ ├── resources │ │ ├── ehcache │ │ │ └── ehcache.xml │ │ ├── resources.properties │ │ ├── spring-config-cache.xml │ │ ├── spring-config-shiro.xml │ │ ├── spring-config.xml │ │ ├── spring-mvc-shiro.xml │ │ └── spring-mvc.xml │ └── webapp │ │ ├── WEB-INF │ │ ├── jsp │ │ │ ├── client │ │ │ │ ├── edit.jsp │ │ │ │ └── list.jsp │ │ │ ├── index.jsp │ │ │ ├── login.jsp │ │ │ ├── oauth2login.jsp │ │ │ └── user │ │ │ │ ├── changePassword.jsp │ │ │ │ ├── edit.jsp │ │ │ │ └── list.jsp │ │ ├── static │ │ │ ├── css │ │ │ │ └── css.css │ │ │ └── js │ │ │ │ └── jquery-1.11.0.min.js │ │ └── web.xml │ │ └── index.jsp │ └── sql │ ├── shiro-data.sql │ └── shiro-schema.sql ├── shiro-example-chapter18 ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── github │ │ │ └── zhangkaitao │ │ │ └── shiro │ │ │ ├── chapter18 │ │ │ ├── Constants.java │ │ │ ├── credentials │ │ │ │ └── RetryLimitHashedCredentialsMatcher.java │ │ │ ├── dao │ │ │ │ ├── OrganizationDao.java │ │ │ │ ├── OrganizationDaoImpl.java │ │ │ │ ├── ResourceDao.java │ │ │ │ ├── ResourceDaoImpl.java │ │ │ │ ├── RoleDao.java │ │ │ │ ├── RoleDaoImpl.java │ │ │ │ ├── UserDao.java │ │ │ │ └── UserDaoImpl.java │ │ │ ├── entity │ │ │ │ ├── Organization.java │ │ │ │ ├── Resource.java │ │ │ │ ├── Role.java │ │ │ │ └── User.java │ │ │ ├── realm │ │ │ │ └── UserRealm.java │ │ │ ├── service │ │ │ │ ├── OrganizationService.java │ │ │ │ ├── OrganizationServiceImpl.java │ │ │ │ ├── PasswordHelper.java │ │ │ │ ├── ResourceService.java │ │ │ │ ├── ResourceServiceImpl.java │ │ │ │ ├── RoleService.java │ │ │ │ ├── RoleServiceImpl.java │ │ │ │ ├── UserService.java │ │ │ │ └── UserServiceImpl.java │ │ │ └── web │ │ │ │ ├── bind │ │ │ │ ├── annotation │ │ │ │ │ └── CurrentUser.java │ │ │ │ └── method │ │ │ │ │ └── CurrentUserMethodArgumentResolver.java │ │ │ │ ├── controller │ │ │ │ ├── IndexController.java │ │ │ │ ├── LoginController.java │ │ │ │ ├── OrganizationController.java │ │ │ │ ├── ResourceController.java │ │ │ │ ├── RoleController.java │ │ │ │ └── UserController.java │ │ │ │ ├── exception │ │ │ │ └── DefaultExceptionHandler.java │ │ │ │ ├── shiro │ │ │ │ └── filter │ │ │ │ │ ├── KickoutSessionControlFilter.java │ │ │ │ │ └── SysUserFilter.java │ │ │ │ └── taglib │ │ │ │ └── Functions.java │ │ │ └── spring │ │ │ ├── SpringCacheManagerWrapper.java │ │ │ └── SpringUtils.java │ ├── resources │ │ ├── ehcache │ │ │ └── ehcache.xml │ │ ├── resources.properties │ │ ├── spring-config-cache.xml │ │ ├── spring-config-shiro.xml │ │ ├── spring-config.xml │ │ ├── spring-mvc-shiro.xml │ │ └── spring-mvc.xml │ └── webapp │ │ └── WEB-INF │ │ ├── jsp │ │ ├── index.jsp │ │ ├── login.jsp │ │ ├── organization │ │ │ ├── appendChild.jsp │ │ │ ├── index.jsp │ │ │ ├── maintain.jsp │ │ │ ├── move.jsp │ │ │ ├── success.jsp │ │ │ └── tree.jsp │ │ ├── resource │ │ │ ├── edit.jsp │ │ │ └── list.jsp │ │ ├── role │ │ │ ├── edit.jsp │ │ │ └── list.jsp │ │ ├── unauthorized.jsp │ │ ├── user │ │ │ ├── changePassword.jsp │ │ │ ├── edit.jsp │ │ │ └── list.jsp │ │ └── welcome.jsp │ │ ├── static │ │ ├── JQuery zTree v3.5.15 │ │ │ ├── api │ │ │ │ ├── API_cn.html │ │ │ │ ├── API_en.html │ │ │ │ ├── apiCss │ │ │ │ │ ├── api.js │ │ │ │ │ ├── common.css │ │ │ │ │ ├── common_ie6.css │ │ │ │ │ ├── img │ │ │ │ │ │ ├── apiMenu.gif │ │ │ │ │ │ ├── apiMenu.png │ │ │ │ │ │ ├── background.jpg │ │ │ │ │ │ ├── chinese.png │ │ │ │ │ │ ├── close.png │ │ │ │ │ │ ├── contact-bg.png │ │ │ │ │ │ ├── english.png │ │ │ │ │ │ ├── header-bg.png │ │ │ │ │ │ ├── lightbulb.png │ │ │ │ │ │ ├── overlay_arrow.gif │ │ │ │ │ │ ├── overlay_arrow.png │ │ │ │ │ │ ├── overlay_bg.png │ │ │ │ │ │ ├── overlay_close_IE6.gif │ │ │ │ │ │ ├── zTreeStandard.gif │ │ │ │ │ │ └── zTreeStandard.png │ │ │ │ │ ├── jquery-1.6.2.min.js │ │ │ │ │ ├── jquery.ztree.core-3.5.js │ │ │ │ │ └── zTreeStyleForApi.css │ │ │ │ ├── cn │ │ │ │ │ ├── fn.zTree._z.html │ │ │ │ │ ├── fn.zTree.destroy.html │ │ │ │ │ ├── fn.zTree.getZTreeObj.html │ │ │ │ │ ├── fn.zTree.init.html │ │ │ │ │ ├── setting.async.autoParam.html │ │ │ │ │ ├── setting.async.contentType.html │ │ │ │ │ ├── setting.async.dataFilter.html │ │ │ │ │ ├── setting.async.dataType.html │ │ │ │ │ ├── setting.async.enable.html │ │ │ │ │ ├── setting.async.otherParam.html │ │ │ │ │ ├── setting.async.type.html │ │ │ │ │ ├── setting.async.url.html │ │ │ │ │ ├── setting.callback.beforeAsync.html │ │ │ │ │ ├── setting.callback.beforeCheck.html │ │ │ │ │ ├── setting.callback.beforeClick.html │ │ │ │ │ ├── setting.callback.beforeCollapse.html │ │ │ │ │ ├── setting.callback.beforeDblClick.html │ │ │ │ │ ├── setting.callback.beforeDrag.html │ │ │ │ │ ├── setting.callback.beforeDragOpen.html │ │ │ │ │ ├── setting.callback.beforeDrop.html │ │ │ │ │ ├── setting.callback.beforeEditName.html │ │ │ │ │ ├── setting.callback.beforeExpand.html │ │ │ │ │ ├── setting.callback.beforeMouseDown.html │ │ │ │ │ ├── setting.callback.beforeMouseUp.html │ │ │ │ │ ├── setting.callback.beforeRemove.html │ │ │ │ │ ├── setting.callback.beforeRename.html │ │ │ │ │ ├── setting.callback.beforeRightClick.html │ │ │ │ │ ├── setting.callback.onAsyncError.html │ │ │ │ │ ├── setting.callback.onAsyncSuccess.html │ │ │ │ │ ├── setting.callback.onCheck.html │ │ │ │ │ ├── setting.callback.onClick.html │ │ │ │ │ ├── setting.callback.onCollapse.html │ │ │ │ │ ├── setting.callback.onDblClick.html │ │ │ │ │ ├── setting.callback.onDrag.html │ │ │ │ │ ├── setting.callback.onDrop.html │ │ │ │ │ ├── setting.callback.onExpand.html │ │ │ │ │ ├── setting.callback.onMouseDown.html │ │ │ │ │ ├── setting.callback.onMouseUp.html │ │ │ │ │ ├── setting.callback.onNodeCreated.html │ │ │ │ │ ├── setting.callback.onRemove.html │ │ │ │ │ ├── setting.callback.onRename.html │ │ │ │ │ ├── setting.callback.onRightClick.html │ │ │ │ │ ├── setting.check.autoCheckTrigger.html │ │ │ │ │ ├── setting.check.chkDisabledInherit.html │ │ │ │ │ ├── setting.check.chkStyle.html │ │ │ │ │ ├── setting.check.chkboxType.html │ │ │ │ │ ├── setting.check.enable.html │ │ │ │ │ ├── setting.check.nocheckInherit.html │ │ │ │ │ ├── setting.check.radioType.html │ │ │ │ │ ├── setting.data.keep.leaf.html │ │ │ │ │ ├── setting.data.keep.parent.html │ │ │ │ │ ├── setting.data.key.checked.html │ │ │ │ │ ├── setting.data.key.children.html │ │ │ │ │ ├── setting.data.key.name.html │ │ │ │ │ ├── setting.data.key.title.html │ │ │ │ │ ├── setting.data.key.url.html │ │ │ │ │ ├── setting.data.simpleData.enable.html │ │ │ │ │ ├── setting.data.simpleData.idKey.html │ │ │ │ │ ├── setting.data.simpleData.pIdKey.html │ │ │ │ │ ├── setting.data.simpleData.rootPId.html │ │ │ │ │ ├── setting.edit.drag.autoExpandTrigger.html │ │ │ │ │ ├── setting.edit.drag.autoOpenTime.html │ │ │ │ │ ├── setting.edit.drag.borderMax.html │ │ │ │ │ ├── setting.edit.drag.borderMin.html │ │ │ │ │ ├── setting.edit.drag.inner.html │ │ │ │ │ ├── setting.edit.drag.isCopy.html │ │ │ │ │ ├── setting.edit.drag.isMove.html │ │ │ │ │ ├── setting.edit.drag.maxShowNodeNum.html │ │ │ │ │ ├── setting.edit.drag.minMoveSize.html │ │ │ │ │ ├── setting.edit.drag.next.html │ │ │ │ │ ├── setting.edit.drag.prev.html │ │ │ │ │ ├── setting.edit.editNameSelectAll.html │ │ │ │ │ ├── setting.edit.enable.html │ │ │ │ │ ├── setting.edit.removeTitle.html │ │ │ │ │ ├── setting.edit.renameTitle.html │ │ │ │ │ ├── setting.edit.showRemoveBtn.html │ │ │ │ │ ├── setting.edit.showRenameBtn.html │ │ │ │ │ ├── setting.treeId.html │ │ │ │ │ ├── setting.treeObj.html │ │ │ │ │ ├── setting.view.addDiyDom.html │ │ │ │ │ ├── setting.view.addHoverDom.html │ │ │ │ │ ├── setting.view.autoCancelSelected.html │ │ │ │ │ ├── setting.view.dblClickExpand.html │ │ │ │ │ ├── setting.view.expandSpeed.html │ │ │ │ │ ├── setting.view.fontCss.html │ │ │ │ │ ├── setting.view.nameIsHTML.html │ │ │ │ │ ├── setting.view.removeHoverDom.html │ │ │ │ │ ├── setting.view.selectedMulti.html │ │ │ │ │ ├── setting.view.showIcon.html │ │ │ │ │ ├── setting.view.showLine.html │ │ │ │ │ ├── setting.view.showTitle.html │ │ │ │ │ ├── setting.view.txtSelectedEnable.html │ │ │ │ │ ├── treeNode.check_Child_State.html │ │ │ │ │ ├── treeNode.check_Focus.html │ │ │ │ │ ├── treeNode.checked.html │ │ │ │ │ ├── treeNode.checkedOld.html │ │ │ │ │ ├── treeNode.children.html │ │ │ │ │ ├── treeNode.chkDisabled.html │ │ │ │ │ ├── treeNode.click.html │ │ │ │ │ ├── treeNode.diy.html │ │ │ │ │ ├── treeNode.editNameFlag.html │ │ │ │ │ ├── treeNode.getCheckStatus.html │ │ │ │ │ ├── treeNode.getNextNode.html │ │ │ │ │ ├── treeNode.getParentNode.html │ │ │ │ │ ├── treeNode.getPreNode.html │ │ │ │ │ ├── treeNode.halfCheck.html │ │ │ │ │ ├── treeNode.icon.html │ │ │ │ │ ├── treeNode.iconClose.html │ │ │ │ │ ├── treeNode.iconOpen.html │ │ │ │ │ ├── treeNode.iconSkin.html │ │ │ │ │ ├── treeNode.isAjaxing.html │ │ │ │ │ ├── treeNode.isFirstNode.html │ │ │ │ │ ├── treeNode.isHidden.html │ │ │ │ │ ├── treeNode.isHover.html │ │ │ │ │ ├── treeNode.isLastNode.html │ │ │ │ │ ├── treeNode.isParent.html │ │ │ │ │ ├── treeNode.level.html │ │ │ │ │ ├── treeNode.name.html │ │ │ │ │ ├── treeNode.nocheck.html │ │ │ │ │ ├── treeNode.open.html │ │ │ │ │ ├── treeNode.parentTId.html │ │ │ │ │ ├── treeNode.tId.html │ │ │ │ │ ├── treeNode.target.html │ │ │ │ │ ├── treeNode.url.html │ │ │ │ │ ├── treeNode.zAsync.html │ │ │ │ │ ├── zTreeObj.addNodes.html │ │ │ │ │ ├── zTreeObj.cancelEditName.html │ │ │ │ │ ├── zTreeObj.cancelSelectedNode.html │ │ │ │ │ ├── zTreeObj.checkAllNodes.html │ │ │ │ │ ├── zTreeObj.checkNode.html │ │ │ │ │ ├── zTreeObj.copyNode.html │ │ │ │ │ ├── zTreeObj.destroy.html │ │ │ │ │ ├── zTreeObj.editName.html │ │ │ │ │ ├── zTreeObj.expandAll.html │ │ │ │ │ ├── zTreeObj.expandNode.html │ │ │ │ │ ├── zTreeObj.getChangeCheckedNodes.html │ │ │ │ │ ├── zTreeObj.getCheckedNodes.html │ │ │ │ │ ├── zTreeObj.getNodeByParam.html │ │ │ │ │ ├── zTreeObj.getNodeByTId.html │ │ │ │ │ ├── zTreeObj.getNodeIndex.html │ │ │ │ │ ├── zTreeObj.getNodes.html │ │ │ │ │ ├── zTreeObj.getNodesByFilter.html │ │ │ │ │ ├── zTreeObj.getNodesByParam.html │ │ │ │ │ ├── zTreeObj.getNodesByParamFuzzy.html │ │ │ │ │ ├── zTreeObj.getSelectedNodes.html │ │ │ │ │ ├── zTreeObj.hideNode.html │ │ │ │ │ ├── zTreeObj.hideNodes.html │ │ │ │ │ ├── zTreeObj.moveNode.html │ │ │ │ │ ├── zTreeObj.reAsyncChildNodes.html │ │ │ │ │ ├── zTreeObj.refresh.html │ │ │ │ │ ├── zTreeObj.removeChildNodes.html │ │ │ │ │ ├── zTreeObj.removeNode.html │ │ │ │ │ ├── zTreeObj.selectNode.html │ │ │ │ │ ├── zTreeObj.setChkDisabled.html │ │ │ │ │ ├── zTreeObj.setEditable.html │ │ │ │ │ ├── zTreeObj.setting.html │ │ │ │ │ ├── zTreeObj.showNode.html │ │ │ │ │ ├── zTreeObj.showNodes.html │ │ │ │ │ ├── zTreeObj.transformToArray.html │ │ │ │ │ ├── zTreeObj.transformTozTreeNodes.html │ │ │ │ │ └── zTreeObj.updateNode.html │ │ │ │ └── en │ │ │ │ │ ├── fn.zTree._z.html │ │ │ │ │ ├── fn.zTree.destroy.html │ │ │ │ │ ├── fn.zTree.getZTreeObj.html │ │ │ │ │ ├── fn.zTree.init.html │ │ │ │ │ ├── setting.async.autoParam.html │ │ │ │ │ ├── setting.async.contentType.html │ │ │ │ │ ├── setting.async.dataFilter.html │ │ │ │ │ ├── setting.async.dataType.html │ │ │ │ │ ├── setting.async.enable.html │ │ │ │ │ ├── setting.async.otherParam.html │ │ │ │ │ ├── setting.async.type.html │ │ │ │ │ ├── setting.async.url.html │ │ │ │ │ ├── setting.callback.beforeAsync.html │ │ │ │ │ ├── setting.callback.beforeCheck.html │ │ │ │ │ ├── setting.callback.beforeClick.html │ │ │ │ │ ├── setting.callback.beforeCollapse.html │ │ │ │ │ ├── setting.callback.beforeDblClick.html │ │ │ │ │ ├── setting.callback.beforeDrag.html │ │ │ │ │ ├── setting.callback.beforeDragOpen.html │ │ │ │ │ ├── setting.callback.beforeDrop.html │ │ │ │ │ ├── setting.callback.beforeEditName.html │ │ │ │ │ ├── setting.callback.beforeExpand.html │ │ │ │ │ ├── setting.callback.beforeMouseDown.html │ │ │ │ │ ├── setting.callback.beforeMouseUp.html │ │ │ │ │ ├── setting.callback.beforeRemove.html │ │ │ │ │ ├── setting.callback.beforeRename.html │ │ │ │ │ ├── setting.callback.beforeRightClick.html │ │ │ │ │ ├── setting.callback.onAsyncError.html │ │ │ │ │ ├── setting.callback.onAsyncSuccess.html │ │ │ │ │ ├── setting.callback.onCheck.html │ │ │ │ │ ├── setting.callback.onClick.html │ │ │ │ │ ├── setting.callback.onCollapse.html │ │ │ │ │ ├── setting.callback.onDblClick.html │ │ │ │ │ ├── setting.callback.onDrag.html │ │ │ │ │ ├── setting.callback.onDrop.html │ │ │ │ │ ├── setting.callback.onExpand.html │ │ │ │ │ ├── setting.callback.onMouseDown.html │ │ │ │ │ ├── setting.callback.onMouseUp.html │ │ │ │ │ ├── setting.callback.onNodeCreated.html │ │ │ │ │ ├── setting.callback.onRemove.html │ │ │ │ │ ├── setting.callback.onRename.html │ │ │ │ │ ├── setting.callback.onRightClick.html │ │ │ │ │ ├── setting.check.autoCheckTrigger.html │ │ │ │ │ ├── setting.check.chkDisabledInherit.html │ │ │ │ │ ├── setting.check.chkStyle.html │ │ │ │ │ ├── setting.check.chkboxType.html │ │ │ │ │ ├── setting.check.enable.html │ │ │ │ │ ├── setting.check.nocheckInherit.html │ │ │ │ │ ├── setting.check.radioType.html │ │ │ │ │ ├── setting.data.keep.leaf.html │ │ │ │ │ ├── setting.data.keep.parent.html │ │ │ │ │ ├── setting.data.key.checked.html │ │ │ │ │ ├── setting.data.key.children.html │ │ │ │ │ ├── setting.data.key.name.html │ │ │ │ │ ├── setting.data.key.title.html │ │ │ │ │ ├── setting.data.key.url.html │ │ │ │ │ ├── setting.data.simpleData.enable.html │ │ │ │ │ ├── setting.data.simpleData.idKey.html │ │ │ │ │ ├── setting.data.simpleData.pIdKey.html │ │ │ │ │ ├── setting.data.simpleData.rootPId.html │ │ │ │ │ ├── setting.edit.drag.autoExpandTrigger.html │ │ │ │ │ ├── setting.edit.drag.autoOpenTime.html │ │ │ │ │ ├── setting.edit.drag.borderMax.html │ │ │ │ │ ├── setting.edit.drag.borderMin.html │ │ │ │ │ ├── setting.edit.drag.inner.html │ │ │ │ │ ├── setting.edit.drag.isCopy.html │ │ │ │ │ ├── setting.edit.drag.isMove.html │ │ │ │ │ ├── setting.edit.drag.maxShowNodeNum.html │ │ │ │ │ ├── setting.edit.drag.minMoveSize.html │ │ │ │ │ ├── setting.edit.drag.next.html │ │ │ │ │ ├── setting.edit.drag.prev.html │ │ │ │ │ ├── setting.edit.editNameSelectAll.html │ │ │ │ │ ├── setting.edit.enable.html │ │ │ │ │ ├── setting.edit.removeTitle.html │ │ │ │ │ ├── setting.edit.renameTitle.html │ │ │ │ │ ├── setting.edit.showRemoveBtn.html │ │ │ │ │ ├── setting.edit.showRenameBtn.html │ │ │ │ │ ├── setting.treeId.html │ │ │ │ │ ├── setting.treeObj.html │ │ │ │ │ ├── setting.view.addDiyDom.html │ │ │ │ │ ├── setting.view.addHoverDom.html │ │ │ │ │ ├── setting.view.autoCancelSelected.html │ │ │ │ │ ├── setting.view.dblClickExpand.html │ │ │ │ │ ├── setting.view.expandSpeed.html │ │ │ │ │ ├── setting.view.fontCss.html │ │ │ │ │ ├── setting.view.nameIsHTML.html │ │ │ │ │ ├── setting.view.removeHoverDom.html │ │ │ │ │ ├── setting.view.selectedMulti.html │ │ │ │ │ ├── setting.view.showIcon.html │ │ │ │ │ ├── setting.view.showLine.html │ │ │ │ │ ├── setting.view.showTitle.html │ │ │ │ │ ├── setting.view.txtSelectedEnable.html │ │ │ │ │ ├── treeNode.check_Child_State.html │ │ │ │ │ ├── treeNode.check_Focus.html │ │ │ │ │ ├── treeNode.checked.html │ │ │ │ │ ├── treeNode.checkedOld.html │ │ │ │ │ ├── treeNode.children.html │ │ │ │ │ ├── treeNode.chkDisabled.html │ │ │ │ │ ├── treeNode.click.html │ │ │ │ │ ├── treeNode.diy.html │ │ │ │ │ ├── treeNode.editNameFlag.html │ │ │ │ │ ├── treeNode.getCheckStatus.html │ │ │ │ │ ├── treeNode.getNextNode.html │ │ │ │ │ ├── treeNode.getParentNode.html │ │ │ │ │ ├── treeNode.getPreNode.html │ │ │ │ │ ├── treeNode.halfCheck.html │ │ │ │ │ ├── treeNode.icon.html │ │ │ │ │ ├── treeNode.iconClose.html │ │ │ │ │ ├── treeNode.iconOpen.html │ │ │ │ │ ├── treeNode.iconSkin.html │ │ │ │ │ ├── treeNode.isAjaxing.html │ │ │ │ │ ├── treeNode.isFirstNode.html │ │ │ │ │ ├── treeNode.isHidden.html │ │ │ │ │ ├── treeNode.isHover.html │ │ │ │ │ ├── treeNode.isLastNode.html │ │ │ │ │ ├── treeNode.isParent.html │ │ │ │ │ ├── treeNode.level.html │ │ │ │ │ ├── treeNode.name.html │ │ │ │ │ ├── treeNode.nocheck.html │ │ │ │ │ ├── treeNode.open.html │ │ │ │ │ ├── treeNode.parentTId.html │ │ │ │ │ ├── treeNode.tId.html │ │ │ │ │ ├── treeNode.target.html │ │ │ │ │ ├── treeNode.url.html │ │ │ │ │ ├── treeNode.zAsync.html │ │ │ │ │ ├── zTreeObj.addNodes.html │ │ │ │ │ ├── zTreeObj.cancelEditName.html │ │ │ │ │ ├── zTreeObj.cancelSelectedNode.html │ │ │ │ │ ├── zTreeObj.checkAllNodes.html │ │ │ │ │ ├── zTreeObj.checkNode.html │ │ │ │ │ ├── zTreeObj.copyNode.html │ │ │ │ │ ├── zTreeObj.destroy.html │ │ │ │ │ ├── zTreeObj.editName.html │ │ │ │ │ ├── zTreeObj.expandAll.html │ │ │ │ │ ├── zTreeObj.expandNode.html │ │ │ │ │ ├── zTreeObj.getChangeCheckedNodes.html │ │ │ │ │ ├── zTreeObj.getCheckedNodes.html │ │ │ │ │ ├── zTreeObj.getNodeByParam.html │ │ │ │ │ ├── zTreeObj.getNodeByTId.html │ │ │ │ │ ├── zTreeObj.getNodeIndex.html │ │ │ │ │ ├── zTreeObj.getNodes.html │ │ │ │ │ ├── zTreeObj.getNodesByFilter.html │ │ │ │ │ ├── zTreeObj.getNodesByParam.html │ │ │ │ │ ├── zTreeObj.getNodesByParamFuzzy.html │ │ │ │ │ ├── zTreeObj.getSelectedNodes.html │ │ │ │ │ ├── zTreeObj.hideNode.html │ │ │ │ │ ├── zTreeObj.hideNodes.html │ │ │ │ │ ├── zTreeObj.moveNode.html │ │ │ │ │ ├── zTreeObj.reAsyncChildNodes.html │ │ │ │ │ ├── zTreeObj.refresh.html │ │ │ │ │ ├── zTreeObj.removeChildNodes.html │ │ │ │ │ ├── zTreeObj.removeNode.html │ │ │ │ │ ├── zTreeObj.selectNode.html │ │ │ │ │ ├── zTreeObj.setChkDisabled.html │ │ │ │ │ ├── zTreeObj.setEditable.html │ │ │ │ │ ├── zTreeObj.setting.html │ │ │ │ │ ├── zTreeObj.showNode.html │ │ │ │ │ ├── zTreeObj.showNodes.html │ │ │ │ │ ├── zTreeObj.transformToArray.html │ │ │ │ │ ├── zTreeObj.transformTozTreeNodes.html │ │ │ │ │ └── zTreeObj.updateNode.html │ │ │ ├── css │ │ │ │ ├── demo.css │ │ │ │ └── zTreeStyle │ │ │ │ │ ├── img │ │ │ │ │ ├── diy │ │ │ │ │ │ ├── 1_close.png │ │ │ │ │ │ ├── 1_open.png │ │ │ │ │ │ ├── 2.png │ │ │ │ │ │ ├── 3.png │ │ │ │ │ │ ├── 4.png │ │ │ │ │ │ ├── 5.png │ │ │ │ │ │ ├── 6.png │ │ │ │ │ │ ├── 7.png │ │ │ │ │ │ ├── 8.png │ │ │ │ │ │ └── 9.png │ │ │ │ │ ├── line_conn.gif │ │ │ │ │ ├── loading.gif │ │ │ │ │ ├── zTreeStandard.gif │ │ │ │ │ └── zTreeStandard.png │ │ │ │ │ └── zTreeStyle.css │ │ │ ├── demo │ │ │ │ ├── cn │ │ │ │ │ ├── asyncData │ │ │ │ │ │ ├── getNodes.php │ │ │ │ │ │ └── getNodesForBigData.php │ │ │ │ │ ├── bigdata │ │ │ │ │ │ ├── common.html │ │ │ │ │ │ ├── diy_async.html │ │ │ │ │ │ └── page.html │ │ │ │ │ ├── core │ │ │ │ │ │ ├── async.html │ │ │ │ │ │ ├── async_fun.html │ │ │ │ │ │ ├── click.html │ │ │ │ │ │ ├── custom_font.html │ │ │ │ │ │ ├── custom_icon.html │ │ │ │ │ │ ├── custom_iconSkin.html │ │ │ │ │ │ ├── expand.html │ │ │ │ │ │ ├── noicon.html │ │ │ │ │ │ ├── noline.html │ │ │ │ │ │ ├── otherMouse.html │ │ │ │ │ │ ├── searchNodes.html │ │ │ │ │ │ ├── simpleData.html │ │ │ │ │ │ ├── standardData.html │ │ │ │ │ │ ├── update_fun.html │ │ │ │ │ │ └── url.html │ │ │ │ │ ├── excheck │ │ │ │ │ │ ├── checkbox.html │ │ │ │ │ │ ├── checkbox_chkDisabled.html │ │ │ │ │ │ ├── checkbox_count.html │ │ │ │ │ │ ├── checkbox_fun.html │ │ │ │ │ │ ├── checkbox_halfCheck.html │ │ │ │ │ │ ├── checkbox_nocheck.html │ │ │ │ │ │ ├── radio.html │ │ │ │ │ │ ├── radio_chkDisabled.html │ │ │ │ │ │ ├── radio_fun.html │ │ │ │ │ │ ├── radio_halfCheck.html │ │ │ │ │ │ └── radio_nocheck.html │ │ │ │ │ ├── exedit │ │ │ │ │ │ ├── async_edit.html │ │ │ │ │ │ ├── drag.html │ │ │ │ │ │ ├── drag_fun.html │ │ │ │ │ │ ├── drag_super.html │ │ │ │ │ │ ├── edit.html │ │ │ │ │ │ ├── edit_fun.html │ │ │ │ │ │ ├── edit_super.html │ │ │ │ │ │ └── multiTree.html │ │ │ │ │ ├── exhide │ │ │ │ │ │ ├── checkbox.html │ │ │ │ │ │ ├── common.html │ │ │ │ │ │ └── radio.html │ │ │ │ │ ├── index.html │ │ │ │ │ └── super │ │ │ │ │ │ ├── asyncForAll.html │ │ │ │ │ │ ├── checkbox_radio.html │ │ │ │ │ │ ├── diydom.html │ │ │ │ │ │ ├── dragWithOther.html │ │ │ │ │ │ ├── left_menu.html │ │ │ │ │ │ ├── left_menuForOutLook.gif │ │ │ │ │ │ ├── left_menuForOutLook.html │ │ │ │ │ │ ├── left_menuForOutLook.png │ │ │ │ │ │ ├── oneclick.html │ │ │ │ │ │ ├── oneroot.html │ │ │ │ │ │ ├── rightClickMenu.html │ │ │ │ │ │ ├── select_menu.html │ │ │ │ │ │ ├── select_menu_checkbox.html │ │ │ │ │ │ ├── select_menu_radio.html │ │ │ │ │ │ └── singlepath.html │ │ │ │ └── en │ │ │ │ │ ├── asyncData │ │ │ │ │ ├── getNodes.php │ │ │ │ │ └── getNodesForBigData.php │ │ │ │ │ ├── bigdata │ │ │ │ │ ├── common.html │ │ │ │ │ ├── diy_async.html │ │ │ │ │ └── page.html │ │ │ │ │ ├── core │ │ │ │ │ ├── async.html │ │ │ │ │ ├── async_fun.html │ │ │ │ │ ├── click.html │ │ │ │ │ ├── custom_font.html │ │ │ │ │ ├── custom_icon.html │ │ │ │ │ ├── custom_iconSkin.html │ │ │ │ │ ├── expand.html │ │ │ │ │ ├── noicon.html │ │ │ │ │ ├── noline.html │ │ │ │ │ ├── otherMouse.html │ │ │ │ │ ├── searchNodes.html │ │ │ │ │ ├── simpleData.html │ │ │ │ │ ├── standardData.html │ │ │ │ │ ├── update_fun.html │ │ │ │ │ └── url.html │ │ │ │ │ ├── excheck │ │ │ │ │ ├── checkbox.html │ │ │ │ │ ├── checkbox_chkDisabled.html │ │ │ │ │ ├── checkbox_count.html │ │ │ │ │ ├── checkbox_fun.html │ │ │ │ │ ├── checkbox_halfCheck.html │ │ │ │ │ ├── checkbox_nocheck.html │ │ │ │ │ ├── radio.html │ │ │ │ │ ├── radio_chkDisabled.html │ │ │ │ │ ├── radio_fun.html │ │ │ │ │ ├── radio_halfCheck.html │ │ │ │ │ └── radio_nocheck.html │ │ │ │ │ ├── exedit │ │ │ │ │ ├── async_edit.html │ │ │ │ │ ├── drag.html │ │ │ │ │ ├── drag_fun.html │ │ │ │ │ ├── drag_super.html │ │ │ │ │ ├── edit.html │ │ │ │ │ ├── edit_fun.html │ │ │ │ │ ├── edit_super.html │ │ │ │ │ └── multiTree.html │ │ │ │ │ ├── exhide │ │ │ │ │ ├── checkbox.html │ │ │ │ │ ├── common.html │ │ │ │ │ └── radio.html │ │ │ │ │ ├── index.html │ │ │ │ │ └── super │ │ │ │ │ ├── asyncForAll.html │ │ │ │ │ ├── checkbox_radio.html │ │ │ │ │ ├── diydom.html │ │ │ │ │ ├── dragWithOther.html │ │ │ │ │ ├── left_menu.html │ │ │ │ │ ├── left_menuForOutLook.gif │ │ │ │ │ ├── left_menuForOutLook.html │ │ │ │ │ ├── left_menuForOutLook.png │ │ │ │ │ ├── oneclick.html │ │ │ │ │ ├── oneroot.html │ │ │ │ │ ├── rightClickMenu.html │ │ │ │ │ ├── select_menu.html │ │ │ │ │ ├── select_menu_checkbox.html │ │ │ │ │ ├── select_menu_radio.html │ │ │ │ │ └── singlepath.html │ │ │ ├── js │ │ │ │ ├── jquery-1.4.4.min.js │ │ │ │ ├── jquery.ztree.all-3.5.js │ │ │ │ ├── jquery.ztree.all-3.5.min.js │ │ │ │ ├── jquery.ztree.core-3.5.js │ │ │ │ ├── jquery.ztree.core-3.5.min.js │ │ │ │ ├── jquery.ztree.excheck-3.5.js │ │ │ │ ├── jquery.ztree.excheck-3.5.min.js │ │ │ │ ├── jquery.ztree.exedit-3.5.js │ │ │ │ ├── jquery.ztree.exedit-3.5.min.js │ │ │ │ ├── jquery.ztree.exhide-3.5.js │ │ │ │ └── jquery.ztree.exhide-3.5.min.js │ │ │ └── log v3.x.txt │ │ ├── css │ │ │ ├── css.css │ │ │ └── layout-default-latest.css │ │ ├── jquery-treetable │ │ │ ├── .gitignore │ │ │ ├── CHANGELOG.txt │ │ │ ├── GPL-LICENSE.txt │ │ │ ├── MIT-LICENSE.txt │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── javascripts │ │ │ │ ├── src │ │ │ │ │ └── jquery.treetable.js │ │ │ │ └── test │ │ │ │ │ └── jquery.treetable.test.js │ │ │ ├── stylesheets │ │ │ │ ├── jquery.treetable.css │ │ │ │ ├── jquery.treetable.theme.default.css │ │ │ │ └── screen.css │ │ │ ├── test.html │ │ │ └── treetable.jquery.json │ │ └── js │ │ │ ├── jquery-1.11.0.min.js │ │ │ └── jquery.layout-latest.min.js │ │ ├── tld │ │ └── zhang-functions.tld │ │ └── web.xml │ └── sql │ ├── shiro-data.sql │ └── shiro-schema.sql ├── shiro-example-chapter19 ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── github │ │ │ └── zhangkaitao │ │ │ └── shiro │ │ │ ├── chapter19 │ │ │ ├── Constants.java │ │ │ ├── credentials │ │ │ │ └── RetryLimitHashedCredentialsMatcher.java │ │ │ ├── dao │ │ │ │ ├── OrganizationDao.java │ │ │ │ ├── OrganizationDaoImpl.java │ │ │ │ ├── ResourceDao.java │ │ │ │ ├── ResourceDaoImpl.java │ │ │ │ ├── RoleDao.java │ │ │ │ ├── RoleDaoImpl.java │ │ │ │ ├── UrlFilterDao.java │ │ │ │ ├── UrlFilterDaoImpl.java │ │ │ │ ├── UserDao.java │ │ │ │ └── UserDaoImpl.java │ │ │ ├── entity │ │ │ │ ├── Organization.java │ │ │ │ ├── Resource.java │ │ │ │ ├── Role.java │ │ │ │ ├── UrlFilter.java │ │ │ │ └── User.java │ │ │ ├── realm │ │ │ │ └── UserRealm.java │ │ │ ├── service │ │ │ │ ├── OrganizationService.java │ │ │ │ ├── OrganizationServiceImpl.java │ │ │ │ ├── PasswordHelper.java │ │ │ │ ├── ResourceService.java │ │ │ │ ├── ResourceServiceImpl.java │ │ │ │ ├── RoleService.java │ │ │ │ ├── RoleServiceImpl.java │ │ │ │ ├── ShiroFilerChainManager.java │ │ │ │ ├── UrlFilterService.java │ │ │ │ ├── UrlFilterServiceImpl.java │ │ │ │ ├── UserService.java │ │ │ │ └── UserServiceImpl.java │ │ │ └── web │ │ │ │ ├── bind │ │ │ │ ├── annotation │ │ │ │ │ └── CurrentUser.java │ │ │ │ └── method │ │ │ │ │ └── CurrentUserMethodArgumentResolver.java │ │ │ │ ├── controller │ │ │ │ ├── IndexController.java │ │ │ │ ├── LoginController.java │ │ │ │ ├── OrganizationController.java │ │ │ │ ├── ResourceController.java │ │ │ │ ├── RoleController.java │ │ │ │ ├── UrlFilterController.java │ │ │ │ └── UserController.java │ │ │ │ ├── exception │ │ │ │ └── DefaultExceptionHandler.java │ │ │ │ ├── shiro │ │ │ │ └── filter │ │ │ │ │ └── SysUserFilter.java │ │ │ │ └── taglib │ │ │ │ └── Functions.java │ │ │ └── spring │ │ │ ├── CustomDefaultFilterChainManager.java │ │ │ ├── CustomPathMatchingFilterChainResolver.java │ │ │ ├── SpringCacheManagerWrapper.java │ │ │ └── SpringUtils.java │ ├── resources │ │ ├── ehcache │ │ │ └── ehcache.xml │ │ ├── resources.properties │ │ ├── spring-config-cache.xml │ │ ├── spring-config-shiro.xml │ │ ├── spring-config.xml │ │ ├── spring-mvc-shiro.xml │ │ └── spring-mvc.xml │ └── webapp │ │ ├── WEB-INF │ │ ├── jsp │ │ │ ├── index.jsp │ │ │ ├── login.jsp │ │ │ ├── organization │ │ │ │ ├── appendChild.jsp │ │ │ │ ├── index.jsp │ │ │ │ ├── maintain.jsp │ │ │ │ ├── move.jsp │ │ │ │ ├── success.jsp │ │ │ │ └── tree.jsp │ │ │ ├── resource │ │ │ │ ├── edit.jsp │ │ │ │ └── list.jsp │ │ │ ├── role │ │ │ │ ├── edit.jsp │ │ │ │ └── list.jsp │ │ │ ├── unauthorized.jsp │ │ │ ├── urlFilter │ │ │ │ ├── edit.jsp │ │ │ │ └── list.jsp │ │ │ ├── user │ │ │ │ ├── changePassword.jsp │ │ │ │ ├── edit.jsp │ │ │ │ └── list.jsp │ │ │ └── welcome.jsp │ │ ├── static │ │ │ ├── JQuery zTree v3.5.15 │ │ │ │ ├── api │ │ │ │ │ ├── API_cn.html │ │ │ │ │ ├── API_en.html │ │ │ │ │ ├── apiCss │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ ├── common.css │ │ │ │ │ │ ├── common_ie6.css │ │ │ │ │ │ ├── img │ │ │ │ │ │ │ ├── apiMenu.gif │ │ │ │ │ │ │ ├── apiMenu.png │ │ │ │ │ │ │ ├── background.jpg │ │ │ │ │ │ │ ├── chinese.png │ │ │ │ │ │ │ ├── close.png │ │ │ │ │ │ │ ├── contact-bg.png │ │ │ │ │ │ │ ├── english.png │ │ │ │ │ │ │ ├── header-bg.png │ │ │ │ │ │ │ ├── lightbulb.png │ │ │ │ │ │ │ ├── overlay_arrow.gif │ │ │ │ │ │ │ ├── overlay_arrow.png │ │ │ │ │ │ │ ├── overlay_bg.png │ │ │ │ │ │ │ ├── overlay_close_IE6.gif │ │ │ │ │ │ │ ├── zTreeStandard.gif │ │ │ │ │ │ │ └── zTreeStandard.png │ │ │ │ │ │ ├── jquery-1.6.2.min.js │ │ │ │ │ │ ├── jquery.ztree.core-3.5.js │ │ │ │ │ │ └── zTreeStyleForApi.css │ │ │ │ │ ├── cn │ │ │ │ │ │ ├── fn.zTree._z.html │ │ │ │ │ │ ├── fn.zTree.destroy.html │ │ │ │ │ │ ├── fn.zTree.getZTreeObj.html │ │ │ │ │ │ ├── fn.zTree.init.html │ │ │ │ │ │ ├── setting.async.autoParam.html │ │ │ │ │ │ ├── setting.async.contentType.html │ │ │ │ │ │ ├── setting.async.dataFilter.html │ │ │ │ │ │ ├── setting.async.dataType.html │ │ │ │ │ │ ├── setting.async.enable.html │ │ │ │ │ │ ├── setting.async.otherParam.html │ │ │ │ │ │ ├── setting.async.type.html │ │ │ │ │ │ ├── setting.async.url.html │ │ │ │ │ │ ├── setting.callback.beforeAsync.html │ │ │ │ │ │ ├── setting.callback.beforeCheck.html │ │ │ │ │ │ ├── setting.callback.beforeClick.html │ │ │ │ │ │ ├── setting.callback.beforeCollapse.html │ │ │ │ │ │ ├── setting.callback.beforeDblClick.html │ │ │ │ │ │ ├── setting.callback.beforeDrag.html │ │ │ │ │ │ ├── setting.callback.beforeDragOpen.html │ │ │ │ │ │ ├── setting.callback.beforeDrop.html │ │ │ │ │ │ ├── setting.callback.beforeEditName.html │ │ │ │ │ │ ├── setting.callback.beforeExpand.html │ │ │ │ │ │ ├── setting.callback.beforeMouseDown.html │ │ │ │ │ │ ├── setting.callback.beforeMouseUp.html │ │ │ │ │ │ ├── setting.callback.beforeRemove.html │ │ │ │ │ │ ├── setting.callback.beforeRename.html │ │ │ │ │ │ ├── setting.callback.beforeRightClick.html │ │ │ │ │ │ ├── setting.callback.onAsyncError.html │ │ │ │ │ │ ├── setting.callback.onAsyncSuccess.html │ │ │ │ │ │ ├── setting.callback.onCheck.html │ │ │ │ │ │ ├── setting.callback.onClick.html │ │ │ │ │ │ ├── setting.callback.onCollapse.html │ │ │ │ │ │ ├── setting.callback.onDblClick.html │ │ │ │ │ │ ├── setting.callback.onDrag.html │ │ │ │ │ │ ├── setting.callback.onDrop.html │ │ │ │ │ │ ├── setting.callback.onExpand.html │ │ │ │ │ │ ├── setting.callback.onMouseDown.html │ │ │ │ │ │ ├── setting.callback.onMouseUp.html │ │ │ │ │ │ ├── setting.callback.onNodeCreated.html │ │ │ │ │ │ ├── setting.callback.onRemove.html │ │ │ │ │ │ ├── setting.callback.onRename.html │ │ │ │ │ │ ├── setting.callback.onRightClick.html │ │ │ │ │ │ ├── setting.check.autoCheckTrigger.html │ │ │ │ │ │ ├── setting.check.chkDisabledInherit.html │ │ │ │ │ │ ├── setting.check.chkStyle.html │ │ │ │ │ │ ├── setting.check.chkboxType.html │ │ │ │ │ │ ├── setting.check.enable.html │ │ │ │ │ │ ├── setting.check.nocheckInherit.html │ │ │ │ │ │ ├── setting.check.radioType.html │ │ │ │ │ │ ├── setting.data.keep.leaf.html │ │ │ │ │ │ ├── setting.data.keep.parent.html │ │ │ │ │ │ ├── setting.data.key.checked.html │ │ │ │ │ │ ├── setting.data.key.children.html │ │ │ │ │ │ ├── setting.data.key.name.html │ │ │ │ │ │ ├── setting.data.key.title.html │ │ │ │ │ │ ├── setting.data.key.url.html │ │ │ │ │ │ ├── setting.data.simpleData.enable.html │ │ │ │ │ │ ├── setting.data.simpleData.idKey.html │ │ │ │ │ │ ├── setting.data.simpleData.pIdKey.html │ │ │ │ │ │ ├── setting.data.simpleData.rootPId.html │ │ │ │ │ │ ├── setting.edit.drag.autoExpandTrigger.html │ │ │ │ │ │ ├── setting.edit.drag.autoOpenTime.html │ │ │ │ │ │ ├── setting.edit.drag.borderMax.html │ │ │ │ │ │ ├── setting.edit.drag.borderMin.html │ │ │ │ │ │ ├── setting.edit.drag.inner.html │ │ │ │ │ │ ├── setting.edit.drag.isCopy.html │ │ │ │ │ │ ├── setting.edit.drag.isMove.html │ │ │ │ │ │ ├── setting.edit.drag.maxShowNodeNum.html │ │ │ │ │ │ ├── setting.edit.drag.minMoveSize.html │ │ │ │ │ │ ├── setting.edit.drag.next.html │ │ │ │ │ │ ├── setting.edit.drag.prev.html │ │ │ │ │ │ ├── setting.edit.editNameSelectAll.html │ │ │ │ │ │ ├── setting.edit.enable.html │ │ │ │ │ │ ├── setting.edit.removeTitle.html │ │ │ │ │ │ ├── setting.edit.renameTitle.html │ │ │ │ │ │ ├── setting.edit.showRemoveBtn.html │ │ │ │ │ │ ├── setting.edit.showRenameBtn.html │ │ │ │ │ │ ├── setting.treeId.html │ │ │ │ │ │ ├── setting.treeObj.html │ │ │ │ │ │ ├── setting.view.addDiyDom.html │ │ │ │ │ │ ├── setting.view.addHoverDom.html │ │ │ │ │ │ ├── setting.view.autoCancelSelected.html │ │ │ │ │ │ ├── setting.view.dblClickExpand.html │ │ │ │ │ │ ├── setting.view.expandSpeed.html │ │ │ │ │ │ ├── setting.view.fontCss.html │ │ │ │ │ │ ├── setting.view.nameIsHTML.html │ │ │ │ │ │ ├── setting.view.removeHoverDom.html │ │ │ │ │ │ ├── setting.view.selectedMulti.html │ │ │ │ │ │ ├── setting.view.showIcon.html │ │ │ │ │ │ ├── setting.view.showLine.html │ │ │ │ │ │ ├── setting.view.showTitle.html │ │ │ │ │ │ ├── setting.view.txtSelectedEnable.html │ │ │ │ │ │ ├── treeNode.check_Child_State.html │ │ │ │ │ │ ├── treeNode.check_Focus.html │ │ │ │ │ │ ├── treeNode.checked.html │ │ │ │ │ │ ├── treeNode.checkedOld.html │ │ │ │ │ │ ├── treeNode.children.html │ │ │ │ │ │ ├── treeNode.chkDisabled.html │ │ │ │ │ │ ├── treeNode.click.html │ │ │ │ │ │ ├── treeNode.diy.html │ │ │ │ │ │ ├── treeNode.editNameFlag.html │ │ │ │ │ │ ├── treeNode.getCheckStatus.html │ │ │ │ │ │ ├── treeNode.getNextNode.html │ │ │ │ │ │ ├── treeNode.getParentNode.html │ │ │ │ │ │ ├── treeNode.getPreNode.html │ │ │ │ │ │ ├── treeNode.halfCheck.html │ │ │ │ │ │ ├── treeNode.icon.html │ │ │ │ │ │ ├── treeNode.iconClose.html │ │ │ │ │ │ ├── treeNode.iconOpen.html │ │ │ │ │ │ ├── treeNode.iconSkin.html │ │ │ │ │ │ ├── treeNode.isAjaxing.html │ │ │ │ │ │ ├── treeNode.isFirstNode.html │ │ │ │ │ │ ├── treeNode.isHidden.html │ │ │ │ │ │ ├── treeNode.isHover.html │ │ │ │ │ │ ├── treeNode.isLastNode.html │ │ │ │ │ │ ├── treeNode.isParent.html │ │ │ │ │ │ ├── treeNode.level.html │ │ │ │ │ │ ├── treeNode.name.html │ │ │ │ │ │ ├── treeNode.nocheck.html │ │ │ │ │ │ ├── treeNode.open.html │ │ │ │ │ │ ├── treeNode.parentTId.html │ │ │ │ │ │ ├── treeNode.tId.html │ │ │ │ │ │ ├── treeNode.target.html │ │ │ │ │ │ ├── treeNode.url.html │ │ │ │ │ │ ├── treeNode.zAsync.html │ │ │ │ │ │ ├── zTreeObj.addNodes.html │ │ │ │ │ │ ├── zTreeObj.cancelEditName.html │ │ │ │ │ │ ├── zTreeObj.cancelSelectedNode.html │ │ │ │ │ │ ├── zTreeObj.checkAllNodes.html │ │ │ │ │ │ ├── zTreeObj.checkNode.html │ │ │ │ │ │ ├── zTreeObj.copyNode.html │ │ │ │ │ │ ├── zTreeObj.destroy.html │ │ │ │ │ │ ├── zTreeObj.editName.html │ │ │ │ │ │ ├── zTreeObj.expandAll.html │ │ │ │ │ │ ├── zTreeObj.expandNode.html │ │ │ │ │ │ ├── zTreeObj.getChangeCheckedNodes.html │ │ │ │ │ │ ├── zTreeObj.getCheckedNodes.html │ │ │ │ │ │ ├── zTreeObj.getNodeByParam.html │ │ │ │ │ │ ├── zTreeObj.getNodeByTId.html │ │ │ │ │ │ ├── zTreeObj.getNodeIndex.html │ │ │ │ │ │ ├── zTreeObj.getNodes.html │ │ │ │ │ │ ├── zTreeObj.getNodesByFilter.html │ │ │ │ │ │ ├── zTreeObj.getNodesByParam.html │ │ │ │ │ │ ├── zTreeObj.getNodesByParamFuzzy.html │ │ │ │ │ │ ├── zTreeObj.getSelectedNodes.html │ │ │ │ │ │ ├── zTreeObj.hideNode.html │ │ │ │ │ │ ├── zTreeObj.hideNodes.html │ │ │ │ │ │ ├── zTreeObj.moveNode.html │ │ │ │ │ │ ├── zTreeObj.reAsyncChildNodes.html │ │ │ │ │ │ ├── zTreeObj.refresh.html │ │ │ │ │ │ ├── zTreeObj.removeChildNodes.html │ │ │ │ │ │ ├── zTreeObj.removeNode.html │ │ │ │ │ │ ├── zTreeObj.selectNode.html │ │ │ │ │ │ ├── zTreeObj.setChkDisabled.html │ │ │ │ │ │ ├── zTreeObj.setEditable.html │ │ │ │ │ │ ├── zTreeObj.setting.html │ │ │ │ │ │ ├── zTreeObj.showNode.html │ │ │ │ │ │ ├── zTreeObj.showNodes.html │ │ │ │ │ │ ├── zTreeObj.transformToArray.html │ │ │ │ │ │ ├── zTreeObj.transformTozTreeNodes.html │ │ │ │ │ │ └── zTreeObj.updateNode.html │ │ │ │ │ └── en │ │ │ │ │ │ ├── fn.zTree._z.html │ │ │ │ │ │ ├── fn.zTree.destroy.html │ │ │ │ │ │ ├── fn.zTree.getZTreeObj.html │ │ │ │ │ │ ├── fn.zTree.init.html │ │ │ │ │ │ ├── setting.async.autoParam.html │ │ │ │ │ │ ├── setting.async.contentType.html │ │ │ │ │ │ ├── setting.async.dataFilter.html │ │ │ │ │ │ ├── setting.async.dataType.html │ │ │ │ │ │ ├── setting.async.enable.html │ │ │ │ │ │ ├── setting.async.otherParam.html │ │ │ │ │ │ ├── setting.async.type.html │ │ │ │ │ │ ├── setting.async.url.html │ │ │ │ │ │ ├── setting.callback.beforeAsync.html │ │ │ │ │ │ ├── setting.callback.beforeCheck.html │ │ │ │ │ │ ├── setting.callback.beforeClick.html │ │ │ │ │ │ ├── setting.callback.beforeCollapse.html │ │ │ │ │ │ ├── setting.callback.beforeDblClick.html │ │ │ │ │ │ ├── setting.callback.beforeDrag.html │ │ │ │ │ │ ├── setting.callback.beforeDragOpen.html │ │ │ │ │ │ ├── setting.callback.beforeDrop.html │ │ │ │ │ │ ├── setting.callback.beforeEditName.html │ │ │ │ │ │ ├── setting.callback.beforeExpand.html │ │ │ │ │ │ ├── setting.callback.beforeMouseDown.html │ │ │ │ │ │ ├── setting.callback.beforeMouseUp.html │ │ │ │ │ │ ├── setting.callback.beforeRemove.html │ │ │ │ │ │ ├── setting.callback.beforeRename.html │ │ │ │ │ │ ├── setting.callback.beforeRightClick.html │ │ │ │ │ │ ├── setting.callback.onAsyncError.html │ │ │ │ │ │ ├── setting.callback.onAsyncSuccess.html │ │ │ │ │ │ ├── setting.callback.onCheck.html │ │ │ │ │ │ ├── setting.callback.onClick.html │ │ │ │ │ │ ├── setting.callback.onCollapse.html │ │ │ │ │ │ ├── setting.callback.onDblClick.html │ │ │ │ │ │ ├── setting.callback.onDrag.html │ │ │ │ │ │ ├── setting.callback.onDrop.html │ │ │ │ │ │ ├── setting.callback.onExpand.html │ │ │ │ │ │ ├── setting.callback.onMouseDown.html │ │ │ │ │ │ ├── setting.callback.onMouseUp.html │ │ │ │ │ │ ├── setting.callback.onNodeCreated.html │ │ │ │ │ │ ├── setting.callback.onRemove.html │ │ │ │ │ │ ├── setting.callback.onRename.html │ │ │ │ │ │ ├── setting.callback.onRightClick.html │ │ │ │ │ │ ├── setting.check.autoCheckTrigger.html │ │ │ │ │ │ ├── setting.check.chkDisabledInherit.html │ │ │ │ │ │ ├── setting.check.chkStyle.html │ │ │ │ │ │ ├── setting.check.chkboxType.html │ │ │ │ │ │ ├── setting.check.enable.html │ │ │ │ │ │ ├── setting.check.nocheckInherit.html │ │ │ │ │ │ ├── setting.check.radioType.html │ │ │ │ │ │ ├── setting.data.keep.leaf.html │ │ │ │ │ │ ├── setting.data.keep.parent.html │ │ │ │ │ │ ├── setting.data.key.checked.html │ │ │ │ │ │ ├── setting.data.key.children.html │ │ │ │ │ │ ├── setting.data.key.name.html │ │ │ │ │ │ ├── setting.data.key.title.html │ │ │ │ │ │ ├── setting.data.key.url.html │ │ │ │ │ │ ├── setting.data.simpleData.enable.html │ │ │ │ │ │ ├── setting.data.simpleData.idKey.html │ │ │ │ │ │ ├── setting.data.simpleData.pIdKey.html │ │ │ │ │ │ ├── setting.data.simpleData.rootPId.html │ │ │ │ │ │ ├── setting.edit.drag.autoExpandTrigger.html │ │ │ │ │ │ ├── setting.edit.drag.autoOpenTime.html │ │ │ │ │ │ ├── setting.edit.drag.borderMax.html │ │ │ │ │ │ ├── setting.edit.drag.borderMin.html │ │ │ │ │ │ ├── setting.edit.drag.inner.html │ │ │ │ │ │ ├── setting.edit.drag.isCopy.html │ │ │ │ │ │ ├── setting.edit.drag.isMove.html │ │ │ │ │ │ ├── setting.edit.drag.maxShowNodeNum.html │ │ │ │ │ │ ├── setting.edit.drag.minMoveSize.html │ │ │ │ │ │ ├── setting.edit.drag.next.html │ │ │ │ │ │ ├── setting.edit.drag.prev.html │ │ │ │ │ │ ├── setting.edit.editNameSelectAll.html │ │ │ │ │ │ ├── setting.edit.enable.html │ │ │ │ │ │ ├── setting.edit.removeTitle.html │ │ │ │ │ │ ├── setting.edit.renameTitle.html │ │ │ │ │ │ ├── setting.edit.showRemoveBtn.html │ │ │ │ │ │ ├── setting.edit.showRenameBtn.html │ │ │ │ │ │ ├── setting.treeId.html │ │ │ │ │ │ ├── setting.treeObj.html │ │ │ │ │ │ ├── setting.view.addDiyDom.html │ │ │ │ │ │ ├── setting.view.addHoverDom.html │ │ │ │ │ │ ├── setting.view.autoCancelSelected.html │ │ │ │ │ │ ├── setting.view.dblClickExpand.html │ │ │ │ │ │ ├── setting.view.expandSpeed.html │ │ │ │ │ │ ├── setting.view.fontCss.html │ │ │ │ │ │ ├── setting.view.nameIsHTML.html │ │ │ │ │ │ ├── setting.view.removeHoverDom.html │ │ │ │ │ │ ├── setting.view.selectedMulti.html │ │ │ │ │ │ ├── setting.view.showIcon.html │ │ │ │ │ │ ├── setting.view.showLine.html │ │ │ │ │ │ ├── setting.view.showTitle.html │ │ │ │ │ │ ├── setting.view.txtSelectedEnable.html │ │ │ │ │ │ ├── treeNode.check_Child_State.html │ │ │ │ │ │ ├── treeNode.check_Focus.html │ │ │ │ │ │ ├── treeNode.checked.html │ │ │ │ │ │ ├── treeNode.checkedOld.html │ │ │ │ │ │ ├── treeNode.children.html │ │ │ │ │ │ ├── treeNode.chkDisabled.html │ │ │ │ │ │ ├── treeNode.click.html │ │ │ │ │ │ ├── treeNode.diy.html │ │ │ │ │ │ ├── treeNode.editNameFlag.html │ │ │ │ │ │ ├── treeNode.getCheckStatus.html │ │ │ │ │ │ ├── treeNode.getNextNode.html │ │ │ │ │ │ ├── treeNode.getParentNode.html │ │ │ │ │ │ ├── treeNode.getPreNode.html │ │ │ │ │ │ ├── treeNode.halfCheck.html │ │ │ │ │ │ ├── treeNode.icon.html │ │ │ │ │ │ ├── treeNode.iconClose.html │ │ │ │ │ │ ├── treeNode.iconOpen.html │ │ │ │ │ │ ├── treeNode.iconSkin.html │ │ │ │ │ │ ├── treeNode.isAjaxing.html │ │ │ │ │ │ ├── treeNode.isFirstNode.html │ │ │ │ │ │ ├── treeNode.isHidden.html │ │ │ │ │ │ ├── treeNode.isHover.html │ │ │ │ │ │ ├── treeNode.isLastNode.html │ │ │ │ │ │ ├── treeNode.isParent.html │ │ │ │ │ │ ├── treeNode.level.html │ │ │ │ │ │ ├── treeNode.name.html │ │ │ │ │ │ ├── treeNode.nocheck.html │ │ │ │ │ │ ├── treeNode.open.html │ │ │ │ │ │ ├── treeNode.parentTId.html │ │ │ │ │ │ ├── treeNode.tId.html │ │ │ │ │ │ ├── treeNode.target.html │ │ │ │ │ │ ├── treeNode.url.html │ │ │ │ │ │ ├── treeNode.zAsync.html │ │ │ │ │ │ ├── zTreeObj.addNodes.html │ │ │ │ │ │ ├── zTreeObj.cancelEditName.html │ │ │ │ │ │ ├── zTreeObj.cancelSelectedNode.html │ │ │ │ │ │ ├── zTreeObj.checkAllNodes.html │ │ │ │ │ │ ├── zTreeObj.checkNode.html │ │ │ │ │ │ ├── zTreeObj.copyNode.html │ │ │ │ │ │ ├── zTreeObj.destroy.html │ │ │ │ │ │ ├── zTreeObj.editName.html │ │ │ │ │ │ ├── zTreeObj.expandAll.html │ │ │ │ │ │ ├── zTreeObj.expandNode.html │ │ │ │ │ │ ├── zTreeObj.getChangeCheckedNodes.html │ │ │ │ │ │ ├── zTreeObj.getCheckedNodes.html │ │ │ │ │ │ ├── zTreeObj.getNodeByParam.html │ │ │ │ │ │ ├── zTreeObj.getNodeByTId.html │ │ │ │ │ │ ├── zTreeObj.getNodeIndex.html │ │ │ │ │ │ ├── zTreeObj.getNodes.html │ │ │ │ │ │ ├── zTreeObj.getNodesByFilter.html │ │ │ │ │ │ ├── zTreeObj.getNodesByParam.html │ │ │ │ │ │ ├── zTreeObj.getNodesByParamFuzzy.html │ │ │ │ │ │ ├── zTreeObj.getSelectedNodes.html │ │ │ │ │ │ ├── zTreeObj.hideNode.html │ │ │ │ │ │ ├── zTreeObj.hideNodes.html │ │ │ │ │ │ ├── zTreeObj.moveNode.html │ │ │ │ │ │ ├── zTreeObj.reAsyncChildNodes.html │ │ │ │ │ │ ├── zTreeObj.refresh.html │ │ │ │ │ │ ├── zTreeObj.removeChildNodes.html │ │ │ │ │ │ ├── zTreeObj.removeNode.html │ │ │ │ │ │ ├── zTreeObj.selectNode.html │ │ │ │ │ │ ├── zTreeObj.setChkDisabled.html │ │ │ │ │ │ ├── zTreeObj.setEditable.html │ │ │ │ │ │ ├── zTreeObj.setting.html │ │ │ │ │ │ ├── zTreeObj.showNode.html │ │ │ │ │ │ ├── zTreeObj.showNodes.html │ │ │ │ │ │ ├── zTreeObj.transformToArray.html │ │ │ │ │ │ ├── zTreeObj.transformTozTreeNodes.html │ │ │ │ │ │ └── zTreeObj.updateNode.html │ │ │ │ ├── css │ │ │ │ │ ├── demo.css │ │ │ │ │ └── zTreeStyle │ │ │ │ │ │ ├── img │ │ │ │ │ │ ├── diy │ │ │ │ │ │ │ ├── 1_close.png │ │ │ │ │ │ │ ├── 1_open.png │ │ │ │ │ │ │ ├── 2.png │ │ │ │ │ │ │ ├── 3.png │ │ │ │ │ │ │ ├── 4.png │ │ │ │ │ │ │ ├── 5.png │ │ │ │ │ │ │ ├── 6.png │ │ │ │ │ │ │ ├── 7.png │ │ │ │ │ │ │ ├── 8.png │ │ │ │ │ │ │ └── 9.png │ │ │ │ │ │ ├── line_conn.gif │ │ │ │ │ │ ├── loading.gif │ │ │ │ │ │ ├── zTreeStandard.gif │ │ │ │ │ │ └── zTreeStandard.png │ │ │ │ │ │ └── zTreeStyle.css │ │ │ │ ├── demo │ │ │ │ │ ├── cn │ │ │ │ │ │ ├── asyncData │ │ │ │ │ │ │ ├── getNodes.php │ │ │ │ │ │ │ └── getNodesForBigData.php │ │ │ │ │ │ ├── bigdata │ │ │ │ │ │ │ ├── common.html │ │ │ │ │ │ │ ├── diy_async.html │ │ │ │ │ │ │ └── page.html │ │ │ │ │ │ ├── core │ │ │ │ │ │ │ ├── async.html │ │ │ │ │ │ │ ├── async_fun.html │ │ │ │ │ │ │ ├── click.html │ │ │ │ │ │ │ ├── custom_font.html │ │ │ │ │ │ │ ├── custom_icon.html │ │ │ │ │ │ │ ├── custom_iconSkin.html │ │ │ │ │ │ │ ├── expand.html │ │ │ │ │ │ │ ├── noicon.html │ │ │ │ │ │ │ ├── noline.html │ │ │ │ │ │ │ ├── otherMouse.html │ │ │ │ │ │ │ ├── searchNodes.html │ │ │ │ │ │ │ ├── simpleData.html │ │ │ │ │ │ │ ├── standardData.html │ │ │ │ │ │ │ ├── update_fun.html │ │ │ │ │ │ │ └── url.html │ │ │ │ │ │ ├── excheck │ │ │ │ │ │ │ ├── checkbox.html │ │ │ │ │ │ │ ├── checkbox_chkDisabled.html │ │ │ │ │ │ │ ├── checkbox_count.html │ │ │ │ │ │ │ ├── checkbox_fun.html │ │ │ │ │ │ │ ├── checkbox_halfCheck.html │ │ │ │ │ │ │ ├── checkbox_nocheck.html │ │ │ │ │ │ │ ├── radio.html │ │ │ │ │ │ │ ├── radio_chkDisabled.html │ │ │ │ │ │ │ ├── radio_fun.html │ │ │ │ │ │ │ ├── radio_halfCheck.html │ │ │ │ │ │ │ └── radio_nocheck.html │ │ │ │ │ │ ├── exedit │ │ │ │ │ │ │ ├── async_edit.html │ │ │ │ │ │ │ ├── drag.html │ │ │ │ │ │ │ ├── drag_fun.html │ │ │ │ │ │ │ ├── drag_super.html │ │ │ │ │ │ │ ├── edit.html │ │ │ │ │ │ │ ├── edit_fun.html │ │ │ │ │ │ │ ├── edit_super.html │ │ │ │ │ │ │ └── multiTree.html │ │ │ │ │ │ ├── exhide │ │ │ │ │ │ │ ├── checkbox.html │ │ │ │ │ │ │ ├── common.html │ │ │ │ │ │ │ └── radio.html │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── super │ │ │ │ │ │ │ ├── asyncForAll.html │ │ │ │ │ │ │ ├── checkbox_radio.html │ │ │ │ │ │ │ ├── diydom.html │ │ │ │ │ │ │ ├── dragWithOther.html │ │ │ │ │ │ │ ├── left_menu.html │ │ │ │ │ │ │ ├── left_menuForOutLook.gif │ │ │ │ │ │ │ ├── left_menuForOutLook.html │ │ │ │ │ │ │ ├── left_menuForOutLook.png │ │ │ │ │ │ │ ├── oneclick.html │ │ │ │ │ │ │ ├── oneroot.html │ │ │ │ │ │ │ ├── rightClickMenu.html │ │ │ │ │ │ │ ├── select_menu.html │ │ │ │ │ │ │ ├── select_menu_checkbox.html │ │ │ │ │ │ │ ├── select_menu_radio.html │ │ │ │ │ │ │ └── singlepath.html │ │ │ │ │ └── en │ │ │ │ │ │ ├── asyncData │ │ │ │ │ │ ├── getNodes.php │ │ │ │ │ │ └── getNodesForBigData.php │ │ │ │ │ │ ├── bigdata │ │ │ │ │ │ ├── common.html │ │ │ │ │ │ ├── diy_async.html │ │ │ │ │ │ └── page.html │ │ │ │ │ │ ├── core │ │ │ │ │ │ ├── async.html │ │ │ │ │ │ ├── async_fun.html │ │ │ │ │ │ ├── click.html │ │ │ │ │ │ ├── custom_font.html │ │ │ │ │ │ ├── custom_icon.html │ │ │ │ │ │ ├── custom_iconSkin.html │ │ │ │ │ │ ├── expand.html │ │ │ │ │ │ ├── noicon.html │ │ │ │ │ │ ├── noline.html │ │ │ │ │ │ ├── otherMouse.html │ │ │ │ │ │ ├── searchNodes.html │ │ │ │ │ │ ├── simpleData.html │ │ │ │ │ │ ├── standardData.html │ │ │ │ │ │ ├── update_fun.html │ │ │ │ │ │ └── url.html │ │ │ │ │ │ ├── excheck │ │ │ │ │ │ ├── checkbox.html │ │ │ │ │ │ ├── checkbox_chkDisabled.html │ │ │ │ │ │ ├── checkbox_count.html │ │ │ │ │ │ ├── checkbox_fun.html │ │ │ │ │ │ ├── checkbox_halfCheck.html │ │ │ │ │ │ ├── checkbox_nocheck.html │ │ │ │ │ │ ├── radio.html │ │ │ │ │ │ ├── radio_chkDisabled.html │ │ │ │ │ │ ├── radio_fun.html │ │ │ │ │ │ ├── radio_halfCheck.html │ │ │ │ │ │ └── radio_nocheck.html │ │ │ │ │ │ ├── exedit │ │ │ │ │ │ ├── async_edit.html │ │ │ │ │ │ ├── drag.html │ │ │ │ │ │ ├── drag_fun.html │ │ │ │ │ │ ├── drag_super.html │ │ │ │ │ │ ├── edit.html │ │ │ │ │ │ ├── edit_fun.html │ │ │ │ │ │ ├── edit_super.html │ │ │ │ │ │ └── multiTree.html │ │ │ │ │ │ ├── exhide │ │ │ │ │ │ ├── checkbox.html │ │ │ │ │ │ ├── common.html │ │ │ │ │ │ └── radio.html │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── super │ │ │ │ │ │ ├── asyncForAll.html │ │ │ │ │ │ ├── checkbox_radio.html │ │ │ │ │ │ ├── diydom.html │ │ │ │ │ │ ├── dragWithOther.html │ │ │ │ │ │ ├── left_menu.html │ │ │ │ │ │ ├── left_menuForOutLook.gif │ │ │ │ │ │ ├── left_menuForOutLook.html │ │ │ │ │ │ ├── left_menuForOutLook.png │ │ │ │ │ │ ├── oneclick.html │ │ │ │ │ │ ├── oneroot.html │ │ │ │ │ │ ├── rightClickMenu.html │ │ │ │ │ │ ├── select_menu.html │ │ │ │ │ │ ├── select_menu_checkbox.html │ │ │ │ │ │ ├── select_menu_radio.html │ │ │ │ │ │ └── singlepath.html │ │ │ │ ├── js │ │ │ │ │ ├── jquery-1.4.4.min.js │ │ │ │ │ ├── jquery.ztree.all-3.5.js │ │ │ │ │ ├── jquery.ztree.all-3.5.min.js │ │ │ │ │ ├── jquery.ztree.core-3.5.js │ │ │ │ │ ├── jquery.ztree.core-3.5.min.js │ │ │ │ │ ├── jquery.ztree.excheck-3.5.js │ │ │ │ │ ├── jquery.ztree.excheck-3.5.min.js │ │ │ │ │ ├── jquery.ztree.exedit-3.5.js │ │ │ │ │ ├── jquery.ztree.exedit-3.5.min.js │ │ │ │ │ ├── jquery.ztree.exhide-3.5.js │ │ │ │ │ └── jquery.ztree.exhide-3.5.min.js │ │ │ │ └── log v3.x.txt │ │ │ ├── css │ │ │ │ ├── css.css │ │ │ │ └── layout-default-latest.css │ │ │ ├── jquery-treetable │ │ │ │ ├── .gitignore │ │ │ │ ├── CHANGELOG.txt │ │ │ │ ├── GPL-LICENSE.txt │ │ │ │ ├── MIT-LICENSE.txt │ │ │ │ ├── README.md │ │ │ │ ├── index.html │ │ │ │ ├── javascripts │ │ │ │ │ ├── src │ │ │ │ │ │ └── jquery.treetable.js │ │ │ │ │ └── test │ │ │ │ │ │ └── jquery.treetable.test.js │ │ │ │ ├── stylesheets │ │ │ │ │ ├── jquery.treetable.css │ │ │ │ │ ├── jquery.treetable.theme.default.css │ │ │ │ │ └── screen.css │ │ │ │ ├── test.html │ │ │ │ └── treetable.jquery.json │ │ │ └── js │ │ │ │ ├── jquery-1.11.0.min.js │ │ │ │ └── jquery.layout-latest.min.js │ │ ├── tld │ │ │ └── zhang-functions.tld │ │ └── web.xml │ │ └── unauthorized.jsp │ └── sql │ ├── shiro-data.sql │ └── shiro-schema.sql ├── shiro-example-chapter2 ├── pom.xml └── src │ ├── sql │ └── shiro.sql │ └── test │ ├── java │ └── com │ │ └── github │ │ └── zhangkaitao │ │ └── shiro │ │ └── chapter2 │ │ ├── AuthenticatorTest.java │ │ ├── LoginLogoutTest.java │ │ ├── authenticator │ │ └── strategy │ │ │ ├── AtLeastTwoAuthenticatorStrategy.java │ │ │ └── OnlyOneAuthenticatorStrategy.java │ │ └── realm │ │ ├── MyRealm1.java │ │ ├── MyRealm2.java │ │ ├── MyRealm3.java │ │ └── MyRealm4.java │ └── resources │ ├── shiro-authenticator-all-fail.ini │ ├── shiro-authenticator-all-success.ini │ ├── shiro-authenticator-atLeastOne-success.ini │ ├── shiro-authenticator-atLeastTwo-success.ini │ ├── shiro-authenticator-first-success.ini │ ├── shiro-authenticator-onlyone-success.ini │ ├── shiro-jdbc-realm.ini │ ├── shiro-multi-realm.ini │ ├── shiro-realm.ini │ └── shiro.ini ├── shiro-example-chapter20 ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── github │ │ │ └── zhangkaitao │ │ │ └── shiro │ │ │ └── chapter20 │ │ │ ├── Constants.java │ │ │ ├── codec │ │ │ └── HmacSHA256Utils.java │ │ │ ├── filter │ │ │ └── StatelessAuthcFilter.java │ │ │ ├── mgt │ │ │ └── StatelessDefaultSubjectFactory.java │ │ │ ├── realm │ │ │ ├── StatelessRealm.java │ │ │ └── StatelessToken.java │ │ │ └── web │ │ │ └── controller │ │ │ └── ServiceController.java │ ├── resources │ │ ├── spring-config-shiro.xml │ │ └── spring-mvc.xml │ └── webapp │ │ └── WEB-INF │ │ └── web.xml │ └── test │ └── java │ └── com │ └── github │ └── zhangkaitao │ └── shiro │ └── chapter20 │ └── ClientTest.java ├── shiro-example-chapter21 ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── github │ │ │ └── zhangkaitao │ │ │ └── shiro │ │ │ ├── chapter21 │ │ │ ├── Constants.java │ │ │ ├── credentials │ │ │ │ └── RetryLimitHashedCredentialsMatcher.java │ │ │ ├── dao │ │ │ │ ├── OrganizationDao.java │ │ │ │ ├── OrganizationDaoImpl.java │ │ │ │ ├── ResourceDao.java │ │ │ │ ├── ResourceDaoImpl.java │ │ │ │ ├── RoleDao.java │ │ │ │ ├── RoleDaoImpl.java │ │ │ │ ├── UserDao.java │ │ │ │ ├── UserDaoImpl.java │ │ │ │ ├── UserRunAsDao.java │ │ │ │ └── UserRunAsDaoImpl.java │ │ │ ├── entity │ │ │ │ ├── Organization.java │ │ │ │ ├── Resource.java │ │ │ │ ├── Role.java │ │ │ │ ├── User.java │ │ │ │ └── UserRunAs.java │ │ │ ├── realm │ │ │ │ └── UserRealm.java │ │ │ ├── service │ │ │ │ ├── OrganizationService.java │ │ │ │ ├── OrganizationServiceImpl.java │ │ │ │ ├── PasswordHelper.java │ │ │ │ ├── ResourceService.java │ │ │ │ ├── ResourceServiceImpl.java │ │ │ │ ├── RoleService.java │ │ │ │ ├── RoleServiceImpl.java │ │ │ │ ├── UserRunAsService.java │ │ │ │ ├── UserRunAsServiceImpl.java │ │ │ │ ├── UserService.java │ │ │ │ └── UserServiceImpl.java │ │ │ └── web │ │ │ │ ├── bind │ │ │ │ ├── annotation │ │ │ │ │ └── CurrentUser.java │ │ │ │ └── method │ │ │ │ │ └── CurrentUserMethodArgumentResolver.java │ │ │ │ ├── controller │ │ │ │ ├── IndexController.java │ │ │ │ ├── LoginController.java │ │ │ │ ├── OrganizationController.java │ │ │ │ ├── ResourceController.java │ │ │ │ ├── RoleController.java │ │ │ │ ├── RunAsController.java │ │ │ │ └── UserController.java │ │ │ │ ├── exception │ │ │ │ └── DefaultExceptionHandler.java │ │ │ │ ├── shiro │ │ │ │ └── filter │ │ │ │ │ └── SysUserFilter.java │ │ │ │ └── taglib │ │ │ │ └── Functions.java │ │ │ └── spring │ │ │ ├── SpringCacheManagerWrapper.java │ │ │ └── SpringUtils.java │ ├── resources │ │ ├── ehcache │ │ │ └── ehcache.xml │ │ ├── resources.properties │ │ ├── spring-config-cache.xml │ │ ├── spring-config-shiro.xml │ │ ├── spring-config.xml │ │ ├── spring-mvc-shiro.xml │ │ └── spring-mvc.xml │ └── webapp │ │ └── WEB-INF │ │ ├── jsp │ │ ├── index.jsp │ │ ├── login.jsp │ │ ├── organization │ │ │ ├── appendChild.jsp │ │ │ ├── index.jsp │ │ │ ├── maintain.jsp │ │ │ ├── move.jsp │ │ │ ├── success.jsp │ │ │ └── tree.jsp │ │ ├── resource │ │ │ ├── edit.jsp │ │ │ └── list.jsp │ │ ├── role │ │ │ ├── edit.jsp │ │ │ └── list.jsp │ │ ├── runas.jsp │ │ ├── unauthorized.jsp │ │ ├── user │ │ │ ├── changePassword.jsp │ │ │ ├── edit.jsp │ │ │ └── list.jsp │ │ └── welcome.jsp │ │ ├── static │ │ ├── JQuery zTree v3.5.15 │ │ │ ├── api │ │ │ │ ├── API_cn.html │ │ │ │ ├── API_en.html │ │ │ │ ├── apiCss │ │ │ │ │ ├── api.js │ │ │ │ │ ├── common.css │ │ │ │ │ ├── common_ie6.css │ │ │ │ │ ├── img │ │ │ │ │ │ ├── apiMenu.gif │ │ │ │ │ │ ├── apiMenu.png │ │ │ │ │ │ ├── background.jpg │ │ │ │ │ │ ├── chinese.png │ │ │ │ │ │ ├── close.png │ │ │ │ │ │ ├── contact-bg.png │ │ │ │ │ │ ├── english.png │ │ │ │ │ │ ├── header-bg.png │ │ │ │ │ │ ├── lightbulb.png │ │ │ │ │ │ ├── overlay_arrow.gif │ │ │ │ │ │ ├── overlay_arrow.png │ │ │ │ │ │ ├── overlay_bg.png │ │ │ │ │ │ ├── overlay_close_IE6.gif │ │ │ │ │ │ ├── zTreeStandard.gif │ │ │ │ │ │ └── zTreeStandard.png │ │ │ │ │ ├── jquery-1.6.2.min.js │ │ │ │ │ ├── jquery.ztree.core-3.5.js │ │ │ │ │ └── zTreeStyleForApi.css │ │ │ │ ├── cn │ │ │ │ │ ├── fn.zTree._z.html │ │ │ │ │ ├── fn.zTree.destroy.html │ │ │ │ │ ├── fn.zTree.getZTreeObj.html │ │ │ │ │ ├── fn.zTree.init.html │ │ │ │ │ ├── setting.async.autoParam.html │ │ │ │ │ ├── setting.async.contentType.html │ │ │ │ │ ├── setting.async.dataFilter.html │ │ │ │ │ ├── setting.async.dataType.html │ │ │ │ │ ├── setting.async.enable.html │ │ │ │ │ ├── setting.async.otherParam.html │ │ │ │ │ ├── setting.async.type.html │ │ │ │ │ ├── setting.async.url.html │ │ │ │ │ ├── setting.callback.beforeAsync.html │ │ │ │ │ ├── setting.callback.beforeCheck.html │ │ │ │ │ ├── setting.callback.beforeClick.html │ │ │ │ │ ├── setting.callback.beforeCollapse.html │ │ │ │ │ ├── setting.callback.beforeDblClick.html │ │ │ │ │ ├── setting.callback.beforeDrag.html │ │ │ │ │ ├── setting.callback.beforeDragOpen.html │ │ │ │ │ ├── setting.callback.beforeDrop.html │ │ │ │ │ ├── setting.callback.beforeEditName.html │ │ │ │ │ ├── setting.callback.beforeExpand.html │ │ │ │ │ ├── setting.callback.beforeMouseDown.html │ │ │ │ │ ├── setting.callback.beforeMouseUp.html │ │ │ │ │ ├── setting.callback.beforeRemove.html │ │ │ │ │ ├── setting.callback.beforeRename.html │ │ │ │ │ ├── setting.callback.beforeRightClick.html │ │ │ │ │ ├── setting.callback.onAsyncError.html │ │ │ │ │ ├── setting.callback.onAsyncSuccess.html │ │ │ │ │ ├── setting.callback.onCheck.html │ │ │ │ │ ├── setting.callback.onClick.html │ │ │ │ │ ├── setting.callback.onCollapse.html │ │ │ │ │ ├── setting.callback.onDblClick.html │ │ │ │ │ ├── setting.callback.onDrag.html │ │ │ │ │ ├── setting.callback.onDrop.html │ │ │ │ │ ├── setting.callback.onExpand.html │ │ │ │ │ ├── setting.callback.onMouseDown.html │ │ │ │ │ ├── setting.callback.onMouseUp.html │ │ │ │ │ ├── setting.callback.onNodeCreated.html │ │ │ │ │ ├── setting.callback.onRemove.html │ │ │ │ │ ├── setting.callback.onRename.html │ │ │ │ │ ├── setting.callback.onRightClick.html │ │ │ │ │ ├── setting.check.autoCheckTrigger.html │ │ │ │ │ ├── setting.check.chkDisabledInherit.html │ │ │ │ │ ├── setting.check.chkStyle.html │ │ │ │ │ ├── setting.check.chkboxType.html │ │ │ │ │ ├── setting.check.enable.html │ │ │ │ │ ├── setting.check.nocheckInherit.html │ │ │ │ │ ├── setting.check.radioType.html │ │ │ │ │ ├── setting.data.keep.leaf.html │ │ │ │ │ ├── setting.data.keep.parent.html │ │ │ │ │ ├── setting.data.key.checked.html │ │ │ │ │ ├── setting.data.key.children.html │ │ │ │ │ ├── setting.data.key.name.html │ │ │ │ │ ├── setting.data.key.title.html │ │ │ │ │ ├── setting.data.key.url.html │ │ │ │ │ ├── setting.data.simpleData.enable.html │ │ │ │ │ ├── setting.data.simpleData.idKey.html │ │ │ │ │ ├── setting.data.simpleData.pIdKey.html │ │ │ │ │ ├── setting.data.simpleData.rootPId.html │ │ │ │ │ ├── setting.edit.drag.autoExpandTrigger.html │ │ │ │ │ ├── setting.edit.drag.autoOpenTime.html │ │ │ │ │ ├── setting.edit.drag.borderMax.html │ │ │ │ │ ├── setting.edit.drag.borderMin.html │ │ │ │ │ ├── setting.edit.drag.inner.html │ │ │ │ │ ├── setting.edit.drag.isCopy.html │ │ │ │ │ ├── setting.edit.drag.isMove.html │ │ │ │ │ ├── setting.edit.drag.maxShowNodeNum.html │ │ │ │ │ ├── setting.edit.drag.minMoveSize.html │ │ │ │ │ ├── setting.edit.drag.next.html │ │ │ │ │ ├── setting.edit.drag.prev.html │ │ │ │ │ ├── setting.edit.editNameSelectAll.html │ │ │ │ │ ├── setting.edit.enable.html │ │ │ │ │ ├── setting.edit.removeTitle.html │ │ │ │ │ ├── setting.edit.renameTitle.html │ │ │ │ │ ├── setting.edit.showRemoveBtn.html │ │ │ │ │ ├── setting.edit.showRenameBtn.html │ │ │ │ │ ├── setting.treeId.html │ │ │ │ │ ├── setting.treeObj.html │ │ │ │ │ ├── setting.view.addDiyDom.html │ │ │ │ │ ├── setting.view.addHoverDom.html │ │ │ │ │ ├── setting.view.autoCancelSelected.html │ │ │ │ │ ├── setting.view.dblClickExpand.html │ │ │ │ │ ├── setting.view.expandSpeed.html │ │ │ │ │ ├── setting.view.fontCss.html │ │ │ │ │ ├── setting.view.nameIsHTML.html │ │ │ │ │ ├── setting.view.removeHoverDom.html │ │ │ │ │ ├── setting.view.selectedMulti.html │ │ │ │ │ ├── setting.view.showIcon.html │ │ │ │ │ ├── setting.view.showLine.html │ │ │ │ │ ├── setting.view.showTitle.html │ │ │ │ │ ├── setting.view.txtSelectedEnable.html │ │ │ │ │ ├── treeNode.check_Child_State.html │ │ │ │ │ ├── treeNode.check_Focus.html │ │ │ │ │ ├── treeNode.checked.html │ │ │ │ │ ├── treeNode.checkedOld.html │ │ │ │ │ ├── treeNode.children.html │ │ │ │ │ ├── treeNode.chkDisabled.html │ │ │ │ │ ├── treeNode.click.html │ │ │ │ │ ├── treeNode.diy.html │ │ │ │ │ ├── treeNode.editNameFlag.html │ │ │ │ │ ├── treeNode.getCheckStatus.html │ │ │ │ │ ├── treeNode.getNextNode.html │ │ │ │ │ ├── treeNode.getParentNode.html │ │ │ │ │ ├── treeNode.getPreNode.html │ │ │ │ │ ├── treeNode.halfCheck.html │ │ │ │ │ ├── treeNode.icon.html │ │ │ │ │ ├── treeNode.iconClose.html │ │ │ │ │ ├── treeNode.iconOpen.html │ │ │ │ │ ├── treeNode.iconSkin.html │ │ │ │ │ ├── treeNode.isAjaxing.html │ │ │ │ │ ├── treeNode.isFirstNode.html │ │ │ │ │ ├── treeNode.isHidden.html │ │ │ │ │ ├── treeNode.isHover.html │ │ │ │ │ ├── treeNode.isLastNode.html │ │ │ │ │ ├── treeNode.isParent.html │ │ │ │ │ ├── treeNode.level.html │ │ │ │ │ ├── treeNode.name.html │ │ │ │ │ ├── treeNode.nocheck.html │ │ │ │ │ ├── treeNode.open.html │ │ │ │ │ ├── treeNode.parentTId.html │ │ │ │ │ ├── treeNode.tId.html │ │ │ │ │ ├── treeNode.target.html │ │ │ │ │ ├── treeNode.url.html │ │ │ │ │ ├── treeNode.zAsync.html │ │ │ │ │ ├── zTreeObj.addNodes.html │ │ │ │ │ ├── zTreeObj.cancelEditName.html │ │ │ │ │ ├── zTreeObj.cancelSelectedNode.html │ │ │ │ │ ├── zTreeObj.checkAllNodes.html │ │ │ │ │ ├── zTreeObj.checkNode.html │ │ │ │ │ ├── zTreeObj.copyNode.html │ │ │ │ │ ├── zTreeObj.destroy.html │ │ │ │ │ ├── zTreeObj.editName.html │ │ │ │ │ ├── zTreeObj.expandAll.html │ │ │ │ │ ├── zTreeObj.expandNode.html │ │ │ │ │ ├── zTreeObj.getChangeCheckedNodes.html │ │ │ │ │ ├── zTreeObj.getCheckedNodes.html │ │ │ │ │ ├── zTreeObj.getNodeByParam.html │ │ │ │ │ ├── zTreeObj.getNodeByTId.html │ │ │ │ │ ├── zTreeObj.getNodeIndex.html │ │ │ │ │ ├── zTreeObj.getNodes.html │ │ │ │ │ ├── zTreeObj.getNodesByFilter.html │ │ │ │ │ ├── zTreeObj.getNodesByParam.html │ │ │ │ │ ├── zTreeObj.getNodesByParamFuzzy.html │ │ │ │ │ ├── zTreeObj.getSelectedNodes.html │ │ │ │ │ ├── zTreeObj.hideNode.html │ │ │ │ │ ├── zTreeObj.hideNodes.html │ │ │ │ │ ├── zTreeObj.moveNode.html │ │ │ │ │ ├── zTreeObj.reAsyncChildNodes.html │ │ │ │ │ ├── zTreeObj.refresh.html │ │ │ │ │ ├── zTreeObj.removeChildNodes.html │ │ │ │ │ ├── zTreeObj.removeNode.html │ │ │ │ │ ├── zTreeObj.selectNode.html │ │ │ │ │ ├── zTreeObj.setChkDisabled.html │ │ │ │ │ ├── zTreeObj.setEditable.html │ │ │ │ │ ├── zTreeObj.setting.html │ │ │ │ │ ├── zTreeObj.showNode.html │ │ │ │ │ ├── zTreeObj.showNodes.html │ │ │ │ │ ├── zTreeObj.transformToArray.html │ │ │ │ │ ├── zTreeObj.transformTozTreeNodes.html │ │ │ │ │ └── zTreeObj.updateNode.html │ │ │ │ └── en │ │ │ │ │ ├── fn.zTree._z.html │ │ │ │ │ ├── fn.zTree.destroy.html │ │ │ │ │ ├── fn.zTree.getZTreeObj.html │ │ │ │ │ ├── fn.zTree.init.html │ │ │ │ │ ├── setting.async.autoParam.html │ │ │ │ │ ├── setting.async.contentType.html │ │ │ │ │ ├── setting.async.dataFilter.html │ │ │ │ │ ├── setting.async.dataType.html │ │ │ │ │ ├── setting.async.enable.html │ │ │ │ │ ├── setting.async.otherParam.html │ │ │ │ │ ├── setting.async.type.html │ │ │ │ │ ├── setting.async.url.html │ │ │ │ │ ├── setting.callback.beforeAsync.html │ │ │ │ │ ├── setting.callback.beforeCheck.html │ │ │ │ │ ├── setting.callback.beforeClick.html │ │ │ │ │ ├── setting.callback.beforeCollapse.html │ │ │ │ │ ├── setting.callback.beforeDblClick.html │ │ │ │ │ ├── setting.callback.beforeDrag.html │ │ │ │ │ ├── setting.callback.beforeDragOpen.html │ │ │ │ │ ├── setting.callback.beforeDrop.html │ │ │ │ │ ├── setting.callback.beforeEditName.html │ │ │ │ │ ├── setting.callback.beforeExpand.html │ │ │ │ │ ├── setting.callback.beforeMouseDown.html │ │ │ │ │ ├── setting.callback.beforeMouseUp.html │ │ │ │ │ ├── setting.callback.beforeRemove.html │ │ │ │ │ ├── setting.callback.beforeRename.html │ │ │ │ │ ├── setting.callback.beforeRightClick.html │ │ │ │ │ ├── setting.callback.onAsyncError.html │ │ │ │ │ ├── setting.callback.onAsyncSuccess.html │ │ │ │ │ ├── setting.callback.onCheck.html │ │ │ │ │ ├── setting.callback.onClick.html │ │ │ │ │ ├── setting.callback.onCollapse.html │ │ │ │ │ ├── setting.callback.onDblClick.html │ │ │ │ │ ├── setting.callback.onDrag.html │ │ │ │ │ ├── setting.callback.onDrop.html │ │ │ │ │ ├── setting.callback.onExpand.html │ │ │ │ │ ├── setting.callback.onMouseDown.html │ │ │ │ │ ├── setting.callback.onMouseUp.html │ │ │ │ │ ├── setting.callback.onNodeCreated.html │ │ │ │ │ ├── setting.callback.onRemove.html │ │ │ │ │ ├── setting.callback.onRename.html │ │ │ │ │ ├── setting.callback.onRightClick.html │ │ │ │ │ ├── setting.check.autoCheckTrigger.html │ │ │ │ │ ├── setting.check.chkDisabledInherit.html │ │ │ │ │ ├── setting.check.chkStyle.html │ │ │ │ │ ├── setting.check.chkboxType.html │ │ │ │ │ ├── setting.check.enable.html │ │ │ │ │ ├── setting.check.nocheckInherit.html │ │ │ │ │ ├── setting.check.radioType.html │ │ │ │ │ ├── setting.data.keep.leaf.html │ │ │ │ │ ├── setting.data.keep.parent.html │ │ │ │ │ ├── setting.data.key.checked.html │ │ │ │ │ ├── setting.data.key.children.html │ │ │ │ │ ├── setting.data.key.name.html │ │ │ │ │ ├── setting.data.key.title.html │ │ │ │ │ ├── setting.data.key.url.html │ │ │ │ │ ├── setting.data.simpleData.enable.html │ │ │ │ │ ├── setting.data.simpleData.idKey.html │ │ │ │ │ ├── setting.data.simpleData.pIdKey.html │ │ │ │ │ ├── setting.data.simpleData.rootPId.html │ │ │ │ │ ├── setting.edit.drag.autoExpandTrigger.html │ │ │ │ │ ├── setting.edit.drag.autoOpenTime.html │ │ │ │ │ ├── setting.edit.drag.borderMax.html │ │ │ │ │ ├── setting.edit.drag.borderMin.html │ │ │ │ │ ├── setting.edit.drag.inner.html │ │ │ │ │ ├── setting.edit.drag.isCopy.html │ │ │ │ │ ├── setting.edit.drag.isMove.html │ │ │ │ │ ├── setting.edit.drag.maxShowNodeNum.html │ │ │ │ │ ├── setting.edit.drag.minMoveSize.html │ │ │ │ │ ├── setting.edit.drag.next.html │ │ │ │ │ ├── setting.edit.drag.prev.html │ │ │ │ │ ├── setting.edit.editNameSelectAll.html │ │ │ │ │ ├── setting.edit.enable.html │ │ │ │ │ ├── setting.edit.removeTitle.html │ │ │ │ │ ├── setting.edit.renameTitle.html │ │ │ │ │ ├── setting.edit.showRemoveBtn.html │ │ │ │ │ ├── setting.edit.showRenameBtn.html │ │ │ │ │ ├── setting.treeId.html │ │ │ │ │ ├── setting.treeObj.html │ │ │ │ │ ├── setting.view.addDiyDom.html │ │ │ │ │ ├── setting.view.addHoverDom.html │ │ │ │ │ ├── setting.view.autoCancelSelected.html │ │ │ │ │ ├── setting.view.dblClickExpand.html │ │ │ │ │ ├── setting.view.expandSpeed.html │ │ │ │ │ ├── setting.view.fontCss.html │ │ │ │ │ ├── setting.view.nameIsHTML.html │ │ │ │ │ ├── setting.view.removeHoverDom.html │ │ │ │ │ ├── setting.view.selectedMulti.html │ │ │ │ │ ├── setting.view.showIcon.html │ │ │ │ │ ├── setting.view.showLine.html │ │ │ │ │ ├── setting.view.showTitle.html │ │ │ │ │ ├── setting.view.txtSelectedEnable.html │ │ │ │ │ ├── treeNode.check_Child_State.html │ │ │ │ │ ├── treeNode.check_Focus.html │ │ │ │ │ ├── treeNode.checked.html │ │ │ │ │ ├── treeNode.checkedOld.html │ │ │ │ │ ├── treeNode.children.html │ │ │ │ │ ├── treeNode.chkDisabled.html │ │ │ │ │ ├── treeNode.click.html │ │ │ │ │ ├── treeNode.diy.html │ │ │ │ │ ├── treeNode.editNameFlag.html │ │ │ │ │ ├── treeNode.getCheckStatus.html │ │ │ │ │ ├── treeNode.getNextNode.html │ │ │ │ │ ├── treeNode.getParentNode.html │ │ │ │ │ ├── treeNode.getPreNode.html │ │ │ │ │ ├── treeNode.halfCheck.html │ │ │ │ │ ├── treeNode.icon.html │ │ │ │ │ ├── treeNode.iconClose.html │ │ │ │ │ ├── treeNode.iconOpen.html │ │ │ │ │ ├── treeNode.iconSkin.html │ │ │ │ │ ├── treeNode.isAjaxing.html │ │ │ │ │ ├── treeNode.isFirstNode.html │ │ │ │ │ ├── treeNode.isHidden.html │ │ │ │ │ ├── treeNode.isHover.html │ │ │ │ │ ├── treeNode.isLastNode.html │ │ │ │ │ ├── treeNode.isParent.html │ │ │ │ │ ├── treeNode.level.html │ │ │ │ │ ├── treeNode.name.html │ │ │ │ │ ├── treeNode.nocheck.html │ │ │ │ │ ├── treeNode.open.html │ │ │ │ │ ├── treeNode.parentTId.html │ │ │ │ │ ├── treeNode.tId.html │ │ │ │ │ ├── treeNode.target.html │ │ │ │ │ ├── treeNode.url.html │ │ │ │ │ ├── treeNode.zAsync.html │ │ │ │ │ ├── zTreeObj.addNodes.html │ │ │ │ │ ├── zTreeObj.cancelEditName.html │ │ │ │ │ ├── zTreeObj.cancelSelectedNode.html │ │ │ │ │ ├── zTreeObj.checkAllNodes.html │ │ │ │ │ ├── zTreeObj.checkNode.html │ │ │ │ │ ├── zTreeObj.copyNode.html │ │ │ │ │ ├── zTreeObj.destroy.html │ │ │ │ │ ├── zTreeObj.editName.html │ │ │ │ │ ├── zTreeObj.expandAll.html │ │ │ │ │ ├── zTreeObj.expandNode.html │ │ │ │ │ ├── zTreeObj.getChangeCheckedNodes.html │ │ │ │ │ ├── zTreeObj.getCheckedNodes.html │ │ │ │ │ ├── zTreeObj.getNodeByParam.html │ │ │ │ │ ├── zTreeObj.getNodeByTId.html │ │ │ │ │ ├── zTreeObj.getNodeIndex.html │ │ │ │ │ ├── zTreeObj.getNodes.html │ │ │ │ │ ├── zTreeObj.getNodesByFilter.html │ │ │ │ │ ├── zTreeObj.getNodesByParam.html │ │ │ │ │ ├── zTreeObj.getNodesByParamFuzzy.html │ │ │ │ │ ├── zTreeObj.getSelectedNodes.html │ │ │ │ │ ├── zTreeObj.hideNode.html │ │ │ │ │ ├── zTreeObj.hideNodes.html │ │ │ │ │ ├── zTreeObj.moveNode.html │ │ │ │ │ ├── zTreeObj.reAsyncChildNodes.html │ │ │ │ │ ├── zTreeObj.refresh.html │ │ │ │ │ ├── zTreeObj.removeChildNodes.html │ │ │ │ │ ├── zTreeObj.removeNode.html │ │ │ │ │ ├── zTreeObj.selectNode.html │ │ │ │ │ ├── zTreeObj.setChkDisabled.html │ │ │ │ │ ├── zTreeObj.setEditable.html │ │ │ │ │ ├── zTreeObj.setting.html │ │ │ │ │ ├── zTreeObj.showNode.html │ │ │ │ │ ├── zTreeObj.showNodes.html │ │ │ │ │ ├── zTreeObj.transformToArray.html │ │ │ │ │ ├── zTreeObj.transformTozTreeNodes.html │ │ │ │ │ └── zTreeObj.updateNode.html │ │ │ ├── css │ │ │ │ ├── demo.css │ │ │ │ └── zTreeStyle │ │ │ │ │ ├── img │ │ │ │ │ ├── diy │ │ │ │ │ │ ├── 1_close.png │ │ │ │ │ │ ├── 1_open.png │ │ │ │ │ │ ├── 2.png │ │ │ │ │ │ ├── 3.png │ │ │ │ │ │ ├── 4.png │ │ │ │ │ │ ├── 5.png │ │ │ │ │ │ ├── 6.png │ │ │ │ │ │ ├── 7.png │ │ │ │ │ │ ├── 8.png │ │ │ │ │ │ └── 9.png │ │ │ │ │ ├── line_conn.gif │ │ │ │ │ ├── loading.gif │ │ │ │ │ ├── zTreeStandard.gif │ │ │ │ │ └── zTreeStandard.png │ │ │ │ │ └── zTreeStyle.css │ │ │ ├── demo │ │ │ │ ├── cn │ │ │ │ │ ├── asyncData │ │ │ │ │ │ ├── getNodes.php │ │ │ │ │ │ └── getNodesForBigData.php │ │ │ │ │ ├── bigdata │ │ │ │ │ │ ├── common.html │ │ │ │ │ │ ├── diy_async.html │ │ │ │ │ │ └── page.html │ │ │ │ │ ├── core │ │ │ │ │ │ ├── async.html │ │ │ │ │ │ ├── async_fun.html │ │ │ │ │ │ ├── click.html │ │ │ │ │ │ ├── custom_font.html │ │ │ │ │ │ ├── custom_icon.html │ │ │ │ │ │ ├── custom_iconSkin.html │ │ │ │ │ │ ├── expand.html │ │ │ │ │ │ ├── noicon.html │ │ │ │ │ │ ├── noline.html │ │ │ │ │ │ ├── otherMouse.html │ │ │ │ │ │ ├── searchNodes.html │ │ │ │ │ │ ├── simpleData.html │ │ │ │ │ │ ├── standardData.html │ │ │ │ │ │ ├── update_fun.html │ │ │ │ │ │ └── url.html │ │ │ │ │ ├── excheck │ │ │ │ │ │ ├── checkbox.html │ │ │ │ │ │ ├── checkbox_chkDisabled.html │ │ │ │ │ │ ├── checkbox_count.html │ │ │ │ │ │ ├── checkbox_fun.html │ │ │ │ │ │ ├── checkbox_halfCheck.html │ │ │ │ │ │ ├── checkbox_nocheck.html │ │ │ │ │ │ ├── radio.html │ │ │ │ │ │ ├── radio_chkDisabled.html │ │ │ │ │ │ ├── radio_fun.html │ │ │ │ │ │ ├── radio_halfCheck.html │ │ │ │ │ │ └── radio_nocheck.html │ │ │ │ │ ├── exedit │ │ │ │ │ │ ├── async_edit.html │ │ │ │ │ │ ├── drag.html │ │ │ │ │ │ ├── drag_fun.html │ │ │ │ │ │ ├── drag_super.html │ │ │ │ │ │ ├── edit.html │ │ │ │ │ │ ├── edit_fun.html │ │ │ │ │ │ ├── edit_super.html │ │ │ │ │ │ └── multiTree.html │ │ │ │ │ ├── exhide │ │ │ │ │ │ ├── checkbox.html │ │ │ │ │ │ ├── common.html │ │ │ │ │ │ └── radio.html │ │ │ │ │ ├── index.html │ │ │ │ │ └── super │ │ │ │ │ │ ├── asyncForAll.html │ │ │ │ │ │ ├── checkbox_radio.html │ │ │ │ │ │ ├── diydom.html │ │ │ │ │ │ ├── dragWithOther.html │ │ │ │ │ │ ├── left_menu.html │ │ │ │ │ │ ├── left_menuForOutLook.gif │ │ │ │ │ │ ├── left_menuForOutLook.html │ │ │ │ │ │ ├── left_menuForOutLook.png │ │ │ │ │ │ ├── oneclick.html │ │ │ │ │ │ ├── oneroot.html │ │ │ │ │ │ ├── rightClickMenu.html │ │ │ │ │ │ ├── select_menu.html │ │ │ │ │ │ ├── select_menu_checkbox.html │ │ │ │ │ │ ├── select_menu_radio.html │ │ │ │ │ │ └── singlepath.html │ │ │ │ └── en │ │ │ │ │ ├── asyncData │ │ │ │ │ ├── getNodes.php │ │ │ │ │ └── getNodesForBigData.php │ │ │ │ │ ├── bigdata │ │ │ │ │ ├── common.html │ │ │ │ │ ├── diy_async.html │ │ │ │ │ └── page.html │ │ │ │ │ ├── core │ │ │ │ │ ├── async.html │ │ │ │ │ ├── async_fun.html │ │ │ │ │ ├── click.html │ │ │ │ │ ├── custom_font.html │ │ │ │ │ ├── custom_icon.html │ │ │ │ │ ├── custom_iconSkin.html │ │ │ │ │ ├── expand.html │ │ │ │ │ ├── noicon.html │ │ │ │ │ ├── noline.html │ │ │ │ │ ├── otherMouse.html │ │ │ │ │ ├── searchNodes.html │ │ │ │ │ ├── simpleData.html │ │ │ │ │ ├── standardData.html │ │ │ │ │ ├── update_fun.html │ │ │ │ │ └── url.html │ │ │ │ │ ├── excheck │ │ │ │ │ ├── checkbox.html │ │ │ │ │ ├── checkbox_chkDisabled.html │ │ │ │ │ ├── checkbox_count.html │ │ │ │ │ ├── checkbox_fun.html │ │ │ │ │ ├── checkbox_halfCheck.html │ │ │ │ │ ├── checkbox_nocheck.html │ │ │ │ │ ├── radio.html │ │ │ │ │ ├── radio_chkDisabled.html │ │ │ │ │ ├── radio_fun.html │ │ │ │ │ ├── radio_halfCheck.html │ │ │ │ │ └── radio_nocheck.html │ │ │ │ │ ├── exedit │ │ │ │ │ ├── async_edit.html │ │ │ │ │ ├── drag.html │ │ │ │ │ ├── drag_fun.html │ │ │ │ │ ├── drag_super.html │ │ │ │ │ ├── edit.html │ │ │ │ │ ├── edit_fun.html │ │ │ │ │ ├── edit_super.html │ │ │ │ │ └── multiTree.html │ │ │ │ │ ├── exhide │ │ │ │ │ ├── checkbox.html │ │ │ │ │ ├── common.html │ │ │ │ │ └── radio.html │ │ │ │ │ ├── index.html │ │ │ │ │ └── super │ │ │ │ │ ├── asyncForAll.html │ │ │ │ │ ├── checkbox_radio.html │ │ │ │ │ ├── diydom.html │ │ │ │ │ ├── dragWithOther.html │ │ │ │ │ ├── left_menu.html │ │ │ │ │ ├── left_menuForOutLook.gif │ │ │ │ │ ├── left_menuForOutLook.html │ │ │ │ │ ├── left_menuForOutLook.png │ │ │ │ │ ├── oneclick.html │ │ │ │ │ ├── oneroot.html │ │ │ │ │ ├── rightClickMenu.html │ │ │ │ │ ├── select_menu.html │ │ │ │ │ ├── select_menu_checkbox.html │ │ │ │ │ ├── select_menu_radio.html │ │ │ │ │ └── singlepath.html │ │ │ ├── js │ │ │ │ ├── jquery-1.4.4.min.js │ │ │ │ ├── jquery.ztree.all-3.5.js │ │ │ │ ├── jquery.ztree.all-3.5.min.js │ │ │ │ ├── jquery.ztree.core-3.5.js │ │ │ │ ├── jquery.ztree.core-3.5.min.js │ │ │ │ ├── jquery.ztree.excheck-3.5.js │ │ │ │ ├── jquery.ztree.excheck-3.5.min.js │ │ │ │ ├── jquery.ztree.exedit-3.5.js │ │ │ │ ├── jquery.ztree.exedit-3.5.min.js │ │ │ │ ├── jquery.ztree.exhide-3.5.js │ │ │ │ └── jquery.ztree.exhide-3.5.min.js │ │ │ └── log v3.x.txt │ │ ├── css │ │ │ ├── css.css │ │ │ └── layout-default-latest.css │ │ ├── jquery-treetable │ │ │ ├── .gitignore │ │ │ ├── CHANGELOG.txt │ │ │ ├── GPL-LICENSE.txt │ │ │ ├── MIT-LICENSE.txt │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── javascripts │ │ │ │ ├── src │ │ │ │ │ └── jquery.treetable.js │ │ │ │ └── test │ │ │ │ │ └── jquery.treetable.test.js │ │ │ ├── stylesheets │ │ │ │ ├── jquery.treetable.css │ │ │ │ ├── jquery.treetable.theme.default.css │ │ │ │ └── screen.css │ │ │ ├── test.html │ │ │ └── treetable.jquery.json │ │ └── js │ │ │ ├── jquery-1.11.0.min.js │ │ │ └── jquery.layout-latest.min.js │ │ ├── tld │ │ └── zhang-functions.tld │ │ └── web.xml │ └── sql │ ├── shiro-data.sql │ └── shiro-schema.sql ├── shiro-example-chapter22 ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── github │ │ │ └── zhangkaitao │ │ │ └── shiro │ │ │ ├── chapter22 │ │ │ ├── Constants.java │ │ │ ├── credentials │ │ │ │ └── RetryLimitHashedCredentialsMatcher.java │ │ │ ├── dao │ │ │ │ ├── OrganizationDao.java │ │ │ │ ├── OrganizationDaoImpl.java │ │ │ │ ├── ResourceDao.java │ │ │ │ ├── ResourceDaoImpl.java │ │ │ │ ├── RoleDao.java │ │ │ │ ├── RoleDaoImpl.java │ │ │ │ ├── UserDao.java │ │ │ │ └── UserDaoImpl.java │ │ │ ├── entity │ │ │ │ ├── Organization.java │ │ │ │ ├── Resource.java │ │ │ │ ├── Role.java │ │ │ │ └── User.java │ │ │ ├── jcaptcha │ │ │ │ ├── GMailEngine.java │ │ │ │ ├── JCaptcha.java │ │ │ │ ├── JCaptchaFilter.java │ │ │ │ ├── JCaptchaValidateFilter.java │ │ │ │ ├── MyFormAuthenticationFilter.java │ │ │ │ └── MyManageableImageCaptchaService.java │ │ │ ├── realm │ │ │ │ └── UserRealm.java │ │ │ ├── service │ │ │ │ ├── OrganizationService.java │ │ │ │ ├── OrganizationServiceImpl.java │ │ │ │ ├── PasswordHelper.java │ │ │ │ ├── ResourceService.java │ │ │ │ ├── ResourceServiceImpl.java │ │ │ │ ├── RoleService.java │ │ │ │ ├── RoleServiceImpl.java │ │ │ │ ├── UserService.java │ │ │ │ └── UserServiceImpl.java │ │ │ └── web │ │ │ │ ├── bind │ │ │ │ ├── annotation │ │ │ │ │ └── CurrentUser.java │ │ │ │ └── method │ │ │ │ │ └── CurrentUserMethodArgumentResolver.java │ │ │ │ ├── controller │ │ │ │ ├── IndexController.java │ │ │ │ ├── LoginController.java │ │ │ │ ├── OrganizationController.java │ │ │ │ ├── ResourceController.java │ │ │ │ ├── RoleController.java │ │ │ │ └── UserController.java │ │ │ │ ├── exception │ │ │ │ └── DefaultExceptionHandler.java │ │ │ │ ├── shiro │ │ │ │ └── filter │ │ │ │ │ └── SysUserFilter.java │ │ │ │ └── taglib │ │ │ │ └── Functions.java │ │ │ └── spring │ │ │ ├── SpringCacheManagerWrapper.java │ │ │ └── SpringUtils.java │ ├── resources │ │ ├── ehcache │ │ │ └── ehcache.xml │ │ ├── resources.properties │ │ ├── spring-config-cache.xml │ │ ├── spring-config-shiro.xml │ │ ├── spring-config.xml │ │ ├── spring-mvc-shiro.xml │ │ └── spring-mvc.xml │ └── webapp │ │ └── WEB-INF │ │ ├── jsp │ │ ├── index.jsp │ │ ├── login.jsp │ │ ├── organization │ │ │ ├── appendChild.jsp │ │ │ ├── index.jsp │ │ │ ├── maintain.jsp │ │ │ ├── move.jsp │ │ │ ├── success.jsp │ │ │ └── tree.jsp │ │ ├── resource │ │ │ ├── edit.jsp │ │ │ └── list.jsp │ │ ├── role │ │ │ ├── edit.jsp │ │ │ └── list.jsp │ │ ├── unauthorized.jsp │ │ ├── user │ │ │ ├── changePassword.jsp │ │ │ ├── edit.jsp │ │ │ └── list.jsp │ │ └── welcome.jsp │ │ ├── static │ │ ├── JQuery zTree v3.5.15 │ │ │ ├── api │ │ │ │ ├── API_cn.html │ │ │ │ ├── API_en.html │ │ │ │ ├── apiCss │ │ │ │ │ ├── api.js │ │ │ │ │ ├── common.css │ │ │ │ │ ├── common_ie6.css │ │ │ │ │ ├── img │ │ │ │ │ │ ├── apiMenu.gif │ │ │ │ │ │ ├── apiMenu.png │ │ │ │ │ │ ├── background.jpg │ │ │ │ │ │ ├── chinese.png │ │ │ │ │ │ ├── close.png │ │ │ │ │ │ ├── contact-bg.png │ │ │ │ │ │ ├── english.png │ │ │ │ │ │ ├── header-bg.png │ │ │ │ │ │ ├── lightbulb.png │ │ │ │ │ │ ├── overlay_arrow.gif │ │ │ │ │ │ ├── overlay_arrow.png │ │ │ │ │ │ ├── overlay_bg.png │ │ │ │ │ │ ├── overlay_close_IE6.gif │ │ │ │ │ │ ├── zTreeStandard.gif │ │ │ │ │ │ └── zTreeStandard.png │ │ │ │ │ ├── jquery-1.6.2.min.js │ │ │ │ │ ├── jquery.ztree.core-3.5.js │ │ │ │ │ └── zTreeStyleForApi.css │ │ │ │ ├── cn │ │ │ │ │ ├── fn.zTree._z.html │ │ │ │ │ ├── fn.zTree.destroy.html │ │ │ │ │ ├── fn.zTree.getZTreeObj.html │ │ │ │ │ ├── fn.zTree.init.html │ │ │ │ │ ├── setting.async.autoParam.html │ │ │ │ │ ├── setting.async.contentType.html │ │ │ │ │ ├── setting.async.dataFilter.html │ │ │ │ │ ├── setting.async.dataType.html │ │ │ │ │ ├── setting.async.enable.html │ │ │ │ │ ├── setting.async.otherParam.html │ │ │ │ │ ├── setting.async.type.html │ │ │ │ │ ├── setting.async.url.html │ │ │ │ │ ├── setting.callback.beforeAsync.html │ │ │ │ │ ├── setting.callback.beforeCheck.html │ │ │ │ │ ├── setting.callback.beforeClick.html │ │ │ │ │ ├── setting.callback.beforeCollapse.html │ │ │ │ │ ├── setting.callback.beforeDblClick.html │ │ │ │ │ ├── setting.callback.beforeDrag.html │ │ │ │ │ ├── setting.callback.beforeDragOpen.html │ │ │ │ │ ├── setting.callback.beforeDrop.html │ │ │ │ │ ├── setting.callback.beforeEditName.html │ │ │ │ │ ├── setting.callback.beforeExpand.html │ │ │ │ │ ├── setting.callback.beforeMouseDown.html │ │ │ │ │ ├── setting.callback.beforeMouseUp.html │ │ │ │ │ ├── setting.callback.beforeRemove.html │ │ │ │ │ ├── setting.callback.beforeRename.html │ │ │ │ │ ├── setting.callback.beforeRightClick.html │ │ │ │ │ ├── setting.callback.onAsyncError.html │ │ │ │ │ ├── setting.callback.onAsyncSuccess.html │ │ │ │ │ ├── setting.callback.onCheck.html │ │ │ │ │ ├── setting.callback.onClick.html │ │ │ │ │ ├── setting.callback.onCollapse.html │ │ │ │ │ ├── setting.callback.onDblClick.html │ │ │ │ │ ├── setting.callback.onDrag.html │ │ │ │ │ ├── setting.callback.onDrop.html │ │ │ │ │ ├── setting.callback.onExpand.html │ │ │ │ │ ├── setting.callback.onMouseDown.html │ │ │ │ │ ├── setting.callback.onMouseUp.html │ │ │ │ │ ├── setting.callback.onNodeCreated.html │ │ │ │ │ ├── setting.callback.onRemove.html │ │ │ │ │ ├── setting.callback.onRename.html │ │ │ │ │ ├── setting.callback.onRightClick.html │ │ │ │ │ ├── setting.check.autoCheckTrigger.html │ │ │ │ │ ├── setting.check.chkDisabledInherit.html │ │ │ │ │ ├── setting.check.chkStyle.html │ │ │ │ │ ├── setting.check.chkboxType.html │ │ │ │ │ ├── setting.check.enable.html │ │ │ │ │ ├── setting.check.nocheckInherit.html │ │ │ │ │ ├── setting.check.radioType.html │ │ │ │ │ ├── setting.data.keep.leaf.html │ │ │ │ │ ├── setting.data.keep.parent.html │ │ │ │ │ ├── setting.data.key.checked.html │ │ │ │ │ ├── setting.data.key.children.html │ │ │ │ │ ├── setting.data.key.name.html │ │ │ │ │ ├── setting.data.key.title.html │ │ │ │ │ ├── setting.data.key.url.html │ │ │ │ │ ├── setting.data.simpleData.enable.html │ │ │ │ │ ├── setting.data.simpleData.idKey.html │ │ │ │ │ ├── setting.data.simpleData.pIdKey.html │ │ │ │ │ ├── setting.data.simpleData.rootPId.html │ │ │ │ │ ├── setting.edit.drag.autoExpandTrigger.html │ │ │ │ │ ├── setting.edit.drag.autoOpenTime.html │ │ │ │ │ ├── setting.edit.drag.borderMax.html │ │ │ │ │ ├── setting.edit.drag.borderMin.html │ │ │ │ │ ├── setting.edit.drag.inner.html │ │ │ │ │ ├── setting.edit.drag.isCopy.html │ │ │ │ │ ├── setting.edit.drag.isMove.html │ │ │ │ │ ├── setting.edit.drag.maxShowNodeNum.html │ │ │ │ │ ├── setting.edit.drag.minMoveSize.html │ │ │ │ │ ├── setting.edit.drag.next.html │ │ │ │ │ ├── setting.edit.drag.prev.html │ │ │ │ │ ├── setting.edit.editNameSelectAll.html │ │ │ │ │ ├── setting.edit.enable.html │ │ │ │ │ ├── setting.edit.removeTitle.html │ │ │ │ │ ├── setting.edit.renameTitle.html │ │ │ │ │ ├── setting.edit.showRemoveBtn.html │ │ │ │ │ ├── setting.edit.showRenameBtn.html │ │ │ │ │ ├── setting.treeId.html │ │ │ │ │ ├── setting.treeObj.html │ │ │ │ │ ├── setting.view.addDiyDom.html │ │ │ │ │ ├── setting.view.addHoverDom.html │ │ │ │ │ ├── setting.view.autoCancelSelected.html │ │ │ │ │ ├── setting.view.dblClickExpand.html │ │ │ │ │ ├── setting.view.expandSpeed.html │ │ │ │ │ ├── setting.view.fontCss.html │ │ │ │ │ ├── setting.view.nameIsHTML.html │ │ │ │ │ ├── setting.view.removeHoverDom.html │ │ │ │ │ ├── setting.view.selectedMulti.html │ │ │ │ │ ├── setting.view.showIcon.html │ │ │ │ │ ├── setting.view.showLine.html │ │ │ │ │ ├── setting.view.showTitle.html │ │ │ │ │ ├── setting.view.txtSelectedEnable.html │ │ │ │ │ ├── treeNode.check_Child_State.html │ │ │ │ │ ├── treeNode.check_Focus.html │ │ │ │ │ ├── treeNode.checked.html │ │ │ │ │ ├── treeNode.checkedOld.html │ │ │ │ │ ├── treeNode.children.html │ │ │ │ │ ├── treeNode.chkDisabled.html │ │ │ │ │ ├── treeNode.click.html │ │ │ │ │ ├── treeNode.diy.html │ │ │ │ │ ├── treeNode.editNameFlag.html │ │ │ │ │ ├── treeNode.getCheckStatus.html │ │ │ │ │ ├── treeNode.getNextNode.html │ │ │ │ │ ├── treeNode.getParentNode.html │ │ │ │ │ ├── treeNode.getPreNode.html │ │ │ │ │ ├── treeNode.halfCheck.html │ │ │ │ │ ├── treeNode.icon.html │ │ │ │ │ ├── treeNode.iconClose.html │ │ │ │ │ ├── treeNode.iconOpen.html │ │ │ │ │ ├── treeNode.iconSkin.html │ │ │ │ │ ├── treeNode.isAjaxing.html │ │ │ │ │ ├── treeNode.isFirstNode.html │ │ │ │ │ ├── treeNode.isHidden.html │ │ │ │ │ ├── treeNode.isHover.html │ │ │ │ │ ├── treeNode.isLastNode.html │ │ │ │ │ ├── treeNode.isParent.html │ │ │ │ │ ├── treeNode.level.html │ │ │ │ │ ├── treeNode.name.html │ │ │ │ │ ├── treeNode.nocheck.html │ │ │ │ │ ├── treeNode.open.html │ │ │ │ │ ├── treeNode.parentTId.html │ │ │ │ │ ├── treeNode.tId.html │ │ │ │ │ ├── treeNode.target.html │ │ │ │ │ ├── treeNode.url.html │ │ │ │ │ ├── treeNode.zAsync.html │ │ │ │ │ ├── zTreeObj.addNodes.html │ │ │ │ │ ├── zTreeObj.cancelEditName.html │ │ │ │ │ ├── zTreeObj.cancelSelectedNode.html │ │ │ │ │ ├── zTreeObj.checkAllNodes.html │ │ │ │ │ ├── zTreeObj.checkNode.html │ │ │ │ │ ├── zTreeObj.copyNode.html │ │ │ │ │ ├── zTreeObj.destroy.html │ │ │ │ │ ├── zTreeObj.editName.html │ │ │ │ │ ├── zTreeObj.expandAll.html │ │ │ │ │ ├── zTreeObj.expandNode.html │ │ │ │ │ ├── zTreeObj.getChangeCheckedNodes.html │ │ │ │ │ ├── zTreeObj.getCheckedNodes.html │ │ │ │ │ ├── zTreeObj.getNodeByParam.html │ │ │ │ │ ├── zTreeObj.getNodeByTId.html │ │ │ │ │ ├── zTreeObj.getNodeIndex.html │ │ │ │ │ ├── zTreeObj.getNodes.html │ │ │ │ │ ├── zTreeObj.getNodesByFilter.html │ │ │ │ │ ├── zTreeObj.getNodesByParam.html │ │ │ │ │ ├── zTreeObj.getNodesByParamFuzzy.html │ │ │ │ │ ├── zTreeObj.getSelectedNodes.html │ │ │ │ │ ├── zTreeObj.hideNode.html │ │ │ │ │ ├── zTreeObj.hideNodes.html │ │ │ │ │ ├── zTreeObj.moveNode.html │ │ │ │ │ ├── zTreeObj.reAsyncChildNodes.html │ │ │ │ │ ├── zTreeObj.refresh.html │ │ │ │ │ ├── zTreeObj.removeChildNodes.html │ │ │ │ │ ├── zTreeObj.removeNode.html │ │ │ │ │ ├── zTreeObj.selectNode.html │ │ │ │ │ ├── zTreeObj.setChkDisabled.html │ │ │ │ │ ├── zTreeObj.setEditable.html │ │ │ │ │ ├── zTreeObj.setting.html │ │ │ │ │ ├── zTreeObj.showNode.html │ │ │ │ │ ├── zTreeObj.showNodes.html │ │ │ │ │ ├── zTreeObj.transformToArray.html │ │ │ │ │ ├── zTreeObj.transformTozTreeNodes.html │ │ │ │ │ └── zTreeObj.updateNode.html │ │ │ │ └── en │ │ │ │ │ ├── fn.zTree._z.html │ │ │ │ │ ├── fn.zTree.destroy.html │ │ │ │ │ ├── fn.zTree.getZTreeObj.html │ │ │ │ │ ├── fn.zTree.init.html │ │ │ │ │ ├── setting.async.autoParam.html │ │ │ │ │ ├── setting.async.contentType.html │ │ │ │ │ ├── setting.async.dataFilter.html │ │ │ │ │ ├── setting.async.dataType.html │ │ │ │ │ ├── setting.async.enable.html │ │ │ │ │ ├── setting.async.otherParam.html │ │ │ │ │ ├── setting.async.type.html │ │ │ │ │ ├── setting.async.url.html │ │ │ │ │ ├── setting.callback.beforeAsync.html │ │ │ │ │ ├── setting.callback.beforeCheck.html │ │ │ │ │ ├── setting.callback.beforeClick.html │ │ │ │ │ ├── setting.callback.beforeCollapse.html │ │ │ │ │ ├── setting.callback.beforeDblClick.html │ │ │ │ │ ├── setting.callback.beforeDrag.html │ │ │ │ │ ├── setting.callback.beforeDragOpen.html │ │ │ │ │ ├── setting.callback.beforeDrop.html │ │ │ │ │ ├── setting.callback.beforeEditName.html │ │ │ │ │ ├── setting.callback.beforeExpand.html │ │ │ │ │ ├── setting.callback.beforeMouseDown.html │ │ │ │ │ ├── setting.callback.beforeMouseUp.html │ │ │ │ │ ├── setting.callback.beforeRemove.html │ │ │ │ │ ├── setting.callback.beforeRename.html │ │ │ │ │ ├── setting.callback.beforeRightClick.html │ │ │ │ │ ├── setting.callback.onAsyncError.html │ │ │ │ │ ├── setting.callback.onAsyncSuccess.html │ │ │ │ │ ├── setting.callback.onCheck.html │ │ │ │ │ ├── setting.callback.onClick.html │ │ │ │ │ ├── setting.callback.onCollapse.html │ │ │ │ │ ├── setting.callback.onDblClick.html │ │ │ │ │ ├── setting.callback.onDrag.html │ │ │ │ │ ├── setting.callback.onDrop.html │ │ │ │ │ ├── setting.callback.onExpand.html │ │ │ │ │ ├── setting.callback.onMouseDown.html │ │ │ │ │ ├── setting.callback.onMouseUp.html │ │ │ │ │ ├── setting.callback.onNodeCreated.html │ │ │ │ │ ├── setting.callback.onRemove.html │ │ │ │ │ ├── setting.callback.onRename.html │ │ │ │ │ ├── setting.callback.onRightClick.html │ │ │ │ │ ├── setting.check.autoCheckTrigger.html │ │ │ │ │ ├── setting.check.chkDisabledInherit.html │ │ │ │ │ ├── setting.check.chkStyle.html │ │ │ │ │ ├── setting.check.chkboxType.html │ │ │ │ │ ├── setting.check.enable.html │ │ │ │ │ ├── setting.check.nocheckInherit.html │ │ │ │ │ ├── setting.check.radioType.html │ │ │ │ │ ├── setting.data.keep.leaf.html │ │ │ │ │ ├── setting.data.keep.parent.html │ │ │ │ │ ├── setting.data.key.checked.html │ │ │ │ │ ├── setting.data.key.children.html │ │ │ │ │ ├── setting.data.key.name.html │ │ │ │ │ ├── setting.data.key.title.html │ │ │ │ │ ├── setting.data.key.url.html │ │ │ │ │ ├── setting.data.simpleData.enable.html │ │ │ │ │ ├── setting.data.simpleData.idKey.html │ │ │ │ │ ├── setting.data.simpleData.pIdKey.html │ │ │ │ │ ├── setting.data.simpleData.rootPId.html │ │ │ │ │ ├── setting.edit.drag.autoExpandTrigger.html │ │ │ │ │ ├── setting.edit.drag.autoOpenTime.html │ │ │ │ │ ├── setting.edit.drag.borderMax.html │ │ │ │ │ ├── setting.edit.drag.borderMin.html │ │ │ │ │ ├── setting.edit.drag.inner.html │ │ │ │ │ ├── setting.edit.drag.isCopy.html │ │ │ │ │ ├── setting.edit.drag.isMove.html │ │ │ │ │ ├── setting.edit.drag.maxShowNodeNum.html │ │ │ │ │ ├── setting.edit.drag.minMoveSize.html │ │ │ │ │ ├── setting.edit.drag.next.html │ │ │ │ │ ├── setting.edit.drag.prev.html │ │ │ │ │ ├── setting.edit.editNameSelectAll.html │ │ │ │ │ ├── setting.edit.enable.html │ │ │ │ │ ├── setting.edit.removeTitle.html │ │ │ │ │ ├── setting.edit.renameTitle.html │ │ │ │ │ ├── setting.edit.showRemoveBtn.html │ │ │ │ │ ├── setting.edit.showRenameBtn.html │ │ │ │ │ ├── setting.treeId.html │ │ │ │ │ ├── setting.treeObj.html │ │ │ │ │ ├── setting.view.addDiyDom.html │ │ │ │ │ ├── setting.view.addHoverDom.html │ │ │ │ │ ├── setting.view.autoCancelSelected.html │ │ │ │ │ ├── setting.view.dblClickExpand.html │ │ │ │ │ ├── setting.view.expandSpeed.html │ │ │ │ │ ├── setting.view.fontCss.html │ │ │ │ │ ├── setting.view.nameIsHTML.html │ │ │ │ │ ├── setting.view.removeHoverDom.html │ │ │ │ │ ├── setting.view.selectedMulti.html │ │ │ │ │ ├── setting.view.showIcon.html │ │ │ │ │ ├── setting.view.showLine.html │ │ │ │ │ ├── setting.view.showTitle.html │ │ │ │ │ ├── setting.view.txtSelectedEnable.html │ │ │ │ │ ├── treeNode.check_Child_State.html │ │ │ │ │ ├── treeNode.check_Focus.html │ │ │ │ │ ├── treeNode.checked.html │ │ │ │ │ ├── treeNode.checkedOld.html │ │ │ │ │ ├── treeNode.children.html │ │ │ │ │ ├── treeNode.chkDisabled.html │ │ │ │ │ ├── treeNode.click.html │ │ │ │ │ ├── treeNode.diy.html │ │ │ │ │ ├── treeNode.editNameFlag.html │ │ │ │ │ ├── treeNode.getCheckStatus.html │ │ │ │ │ ├── treeNode.getNextNode.html │ │ │ │ │ ├── treeNode.getParentNode.html │ │ │ │ │ ├── treeNode.getPreNode.html │ │ │ │ │ ├── treeNode.halfCheck.html │ │ │ │ │ ├── treeNode.icon.html │ │ │ │ │ ├── treeNode.iconClose.html │ │ │ │ │ ├── treeNode.iconOpen.html │ │ │ │ │ ├── treeNode.iconSkin.html │ │ │ │ │ ├── treeNode.isAjaxing.html │ │ │ │ │ ├── treeNode.isFirstNode.html │ │ │ │ │ ├── treeNode.isHidden.html │ │ │ │ │ ├── treeNode.isHover.html │ │ │ │ │ ├── treeNode.isLastNode.html │ │ │ │ │ ├── treeNode.isParent.html │ │ │ │ │ ├── treeNode.level.html │ │ │ │ │ ├── treeNode.name.html │ │ │ │ │ ├── treeNode.nocheck.html │ │ │ │ │ ├── treeNode.open.html │ │ │ │ │ ├── treeNode.parentTId.html │ │ │ │ │ ├── treeNode.tId.html │ │ │ │ │ ├── treeNode.target.html │ │ │ │ │ ├── treeNode.url.html │ │ │ │ │ ├── treeNode.zAsync.html │ │ │ │ │ ├── zTreeObj.addNodes.html │ │ │ │ │ ├── zTreeObj.cancelEditName.html │ │ │ │ │ ├── zTreeObj.cancelSelectedNode.html │ │ │ │ │ ├── zTreeObj.checkAllNodes.html │ │ │ │ │ ├── zTreeObj.checkNode.html │ │ │ │ │ ├── zTreeObj.copyNode.html │ │ │ │ │ ├── zTreeObj.destroy.html │ │ │ │ │ ├── zTreeObj.editName.html │ │ │ │ │ ├── zTreeObj.expandAll.html │ │ │ │ │ ├── zTreeObj.expandNode.html │ │ │ │ │ ├── zTreeObj.getChangeCheckedNodes.html │ │ │ │ │ ├── zTreeObj.getCheckedNodes.html │ │ │ │ │ ├── zTreeObj.getNodeByParam.html │ │ │ │ │ ├── zTreeObj.getNodeByTId.html │ │ │ │ │ ├── zTreeObj.getNodeIndex.html │ │ │ │ │ ├── zTreeObj.getNodes.html │ │ │ │ │ ├── zTreeObj.getNodesByFilter.html │ │ │ │ │ ├── zTreeObj.getNodesByParam.html │ │ │ │ │ ├── zTreeObj.getNodesByParamFuzzy.html │ │ │ │ │ ├── zTreeObj.getSelectedNodes.html │ │ │ │ │ ├── zTreeObj.hideNode.html │ │ │ │ │ ├── zTreeObj.hideNodes.html │ │ │ │ │ ├── zTreeObj.moveNode.html │ │ │ │ │ ├── zTreeObj.reAsyncChildNodes.html │ │ │ │ │ ├── zTreeObj.refresh.html │ │ │ │ │ ├── zTreeObj.removeChildNodes.html │ │ │ │ │ ├── zTreeObj.removeNode.html │ │ │ │ │ ├── zTreeObj.selectNode.html │ │ │ │ │ ├── zTreeObj.setChkDisabled.html │ │ │ │ │ ├── zTreeObj.setEditable.html │ │ │ │ │ ├── zTreeObj.setting.html │ │ │ │ │ ├── zTreeObj.showNode.html │ │ │ │ │ ├── zTreeObj.showNodes.html │ │ │ │ │ ├── zTreeObj.transformToArray.html │ │ │ │ │ ├── zTreeObj.transformTozTreeNodes.html │ │ │ │ │ └── zTreeObj.updateNode.html │ │ │ ├── css │ │ │ │ ├── demo.css │ │ │ │ └── zTreeStyle │ │ │ │ │ ├── img │ │ │ │ │ ├── diy │ │ │ │ │ │ ├── 1_close.png │ │ │ │ │ │ ├── 1_open.png │ │ │ │ │ │ ├── 2.png │ │ │ │ │ │ ├── 3.png │ │ │ │ │ │ ├── 4.png │ │ │ │ │ │ ├── 5.png │ │ │ │ │ │ ├── 6.png │ │ │ │ │ │ ├── 7.png │ │ │ │ │ │ ├── 8.png │ │ │ │ │ │ └── 9.png │ │ │ │ │ ├── line_conn.gif │ │ │ │ │ ├── loading.gif │ │ │ │ │ ├── zTreeStandard.gif │ │ │ │ │ └── zTreeStandard.png │ │ │ │ │ └── zTreeStyle.css │ │ │ ├── demo │ │ │ │ ├── cn │ │ │ │ │ ├── asyncData │ │ │ │ │ │ ├── getNodes.php │ │ │ │ │ │ └── getNodesForBigData.php │ │ │ │ │ ├── bigdata │ │ │ │ │ │ ├── common.html │ │ │ │ │ │ ├── diy_async.html │ │ │ │ │ │ └── page.html │ │ │ │ │ ├── core │ │ │ │ │ │ ├── async.html │ │ │ │ │ │ ├── async_fun.html │ │ │ │ │ │ ├── click.html │ │ │ │ │ │ ├── custom_font.html │ │ │ │ │ │ ├── custom_icon.html │ │ │ │ │ │ ├── custom_iconSkin.html │ │ │ │ │ │ ├── expand.html │ │ │ │ │ │ ├── noicon.html │ │ │ │ │ │ ├── noline.html │ │ │ │ │ │ ├── otherMouse.html │ │ │ │ │ │ ├── searchNodes.html │ │ │ │ │ │ ├── simpleData.html │ │ │ │ │ │ ├── standardData.html │ │ │ │ │ │ ├── update_fun.html │ │ │ │ │ │ └── url.html │ │ │ │ │ ├── excheck │ │ │ │ │ │ ├── checkbox.html │ │ │ │ │ │ ├── checkbox_chkDisabled.html │ │ │ │ │ │ ├── checkbox_count.html │ │ │ │ │ │ ├── checkbox_fun.html │ │ │ │ │ │ ├── checkbox_halfCheck.html │ │ │ │ │ │ ├── checkbox_nocheck.html │ │ │ │ │ │ ├── radio.html │ │ │ │ │ │ ├── radio_chkDisabled.html │ │ │ │ │ │ ├── radio_fun.html │ │ │ │ │ │ ├── radio_halfCheck.html │ │ │ │ │ │ └── radio_nocheck.html │ │ │ │ │ ├── exedit │ │ │ │ │ │ ├── async_edit.html │ │ │ │ │ │ ├── drag.html │ │ │ │ │ │ ├── drag_fun.html │ │ │ │ │ │ ├── drag_super.html │ │ │ │ │ │ ├── edit.html │ │ │ │ │ │ ├── edit_fun.html │ │ │ │ │ │ ├── edit_super.html │ │ │ │ │ │ └── multiTree.html │ │ │ │ │ ├── exhide │ │ │ │ │ │ ├── checkbox.html │ │ │ │ │ │ ├── common.html │ │ │ │ │ │ └── radio.html │ │ │ │ │ ├── index.html │ │ │ │ │ └── super │ │ │ │ │ │ ├── asyncForAll.html │ │ │ │ │ │ ├── checkbox_radio.html │ │ │ │ │ │ ├── diydom.html │ │ │ │ │ │ ├── dragWithOther.html │ │ │ │ │ │ ├── left_menu.html │ │ │ │ │ │ ├── left_menuForOutLook.gif │ │ │ │ │ │ ├── left_menuForOutLook.html │ │ │ │ │ │ ├── left_menuForOutLook.png │ │ │ │ │ │ ├── oneclick.html │ │ │ │ │ │ ├── oneroot.html │ │ │ │ │ │ ├── rightClickMenu.html │ │ │ │ │ │ ├── select_menu.html │ │ │ │ │ │ ├── select_menu_checkbox.html │ │ │ │ │ │ ├── select_menu_radio.html │ │ │ │ │ │ └── singlepath.html │ │ │ │ └── en │ │ │ │ │ ├── asyncData │ │ │ │ │ ├── getNodes.php │ │ │ │ │ └── getNodesForBigData.php │ │ │ │ │ ├── bigdata │ │ │ │ │ ├── common.html │ │ │ │ │ ├── diy_async.html │ │ │ │ │ └── page.html │ │ │ │ │ ├── core │ │ │ │ │ ├── async.html │ │ │ │ │ ├── async_fun.html │ │ │ │ │ ├── click.html │ │ │ │ │ ├── custom_font.html │ │ │ │ │ ├── custom_icon.html │ │ │ │ │ ├── custom_iconSkin.html │ │ │ │ │ ├── expand.html │ │ │ │ │ ├── noicon.html │ │ │ │ │ ├── noline.html │ │ │ │ │ ├── otherMouse.html │ │ │ │ │ ├── searchNodes.html │ │ │ │ │ ├── simpleData.html │ │ │ │ │ ├── standardData.html │ │ │ │ │ ├── update_fun.html │ │ │ │ │ └── url.html │ │ │ │ │ ├── excheck │ │ │ │ │ ├── checkbox.html │ │ │ │ │ ├── checkbox_chkDisabled.html │ │ │ │ │ ├── checkbox_count.html │ │ │ │ │ ├── checkbox_fun.html │ │ │ │ │ ├── checkbox_halfCheck.html │ │ │ │ │ ├── checkbox_nocheck.html │ │ │ │ │ ├── radio.html │ │ │ │ │ ├── radio_chkDisabled.html │ │ │ │ │ ├── radio_fun.html │ │ │ │ │ ├── radio_halfCheck.html │ │ │ │ │ └── radio_nocheck.html │ │ │ │ │ ├── exedit │ │ │ │ │ ├── async_edit.html │ │ │ │ │ ├── drag.html │ │ │ │ │ ├── drag_fun.html │ │ │ │ │ ├── drag_super.html │ │ │ │ │ ├── edit.html │ │ │ │ │ ├── edit_fun.html │ │ │ │ │ ├── edit_super.html │ │ │ │ │ └── multiTree.html │ │ │ │ │ ├── exhide │ │ │ │ │ ├── checkbox.html │ │ │ │ │ ├── common.html │ │ │ │ │ └── radio.html │ │ │ │ │ ├── index.html │ │ │ │ │ └── super │ │ │ │ │ ├── asyncForAll.html │ │ │ │ │ ├── checkbox_radio.html │ │ │ │ │ ├── diydom.html │ │ │ │ │ ├── dragWithOther.html │ │ │ │ │ ├── left_menu.html │ │ │ │ │ ├── left_menuForOutLook.gif │ │ │ │ │ ├── left_menuForOutLook.html │ │ │ │ │ ├── left_menuForOutLook.png │ │ │ │ │ ├── oneclick.html │ │ │ │ │ ├── oneroot.html │ │ │ │ │ ├── rightClickMenu.html │ │ │ │ │ ├── select_menu.html │ │ │ │ │ ├── select_menu_checkbox.html │ │ │ │ │ ├── select_menu_radio.html │ │ │ │ │ └── singlepath.html │ │ │ ├── js │ │ │ │ ├── jquery-1.4.4.min.js │ │ │ │ ├── jquery.ztree.all-3.5.js │ │ │ │ ├── jquery.ztree.all-3.5.min.js │ │ │ │ ├── jquery.ztree.core-3.5.js │ │ │ │ ├── jquery.ztree.core-3.5.min.js │ │ │ │ ├── jquery.ztree.excheck-3.5.js │ │ │ │ ├── jquery.ztree.excheck-3.5.min.js │ │ │ │ ├── jquery.ztree.exedit-3.5.js │ │ │ │ ├── jquery.ztree.exedit-3.5.min.js │ │ │ │ ├── jquery.ztree.exhide-3.5.js │ │ │ │ └── jquery.ztree.exhide-3.5.min.js │ │ │ └── log v3.x.txt │ │ ├── css │ │ │ ├── css.css │ │ │ └── layout-default-latest.css │ │ ├── jquery-treetable │ │ │ ├── .gitignore │ │ │ ├── CHANGELOG.txt │ │ │ ├── GPL-LICENSE.txt │ │ │ ├── MIT-LICENSE.txt │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── javascripts │ │ │ │ ├── src │ │ │ │ │ └── jquery.treetable.js │ │ │ │ └── test │ │ │ │ │ └── jquery.treetable.test.js │ │ │ ├── stylesheets │ │ │ │ ├── jquery.treetable.css │ │ │ │ ├── jquery.treetable.theme.default.css │ │ │ │ └── screen.css │ │ │ ├── test.html │ │ │ └── treetable.jquery.json │ │ └── js │ │ │ ├── jquery-1.11.0.min.js │ │ │ └── jquery.layout-latest.min.js │ │ ├── tld │ │ └── zhang-functions.tld │ │ └── web.xml │ └── sql │ ├── shiro-data.sql │ └── shiro-schema.sql ├── shiro-example-chapter23-app1 ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── github │ │ └── zhangkaitao │ │ └── shiro │ │ └── chapter23 │ │ └── app1 │ │ └── web │ │ ├── controller │ │ └── HelloController.java │ │ └── exception │ │ └── DefaultExceptionHandler.java │ ├── resources │ ├── client │ │ └── shiro-client.properties │ └── spring-mvc.xml │ └── webapp │ ├── WEB-INF │ └── web.xml │ ├── success.jsp │ └── unauthorized.jsp ├── shiro-example-chapter23-app2 ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── github │ │ └── zhangkaitao │ │ └── shiro │ │ └── chapter23 │ │ └── app2 │ │ └── web │ │ ├── controller │ │ └── HelloController.java │ │ └── exception │ │ └── DefaultExceptionHandler.java │ ├── resources │ ├── client │ │ └── shiro-client.properties │ └── spring-mvc.xml │ └── webapp │ ├── WEB-INF │ └── web.xml │ ├── success.jsp │ └── unauthorized.jsp ├── shiro-example-chapter23-client ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── github │ │ └── zhangkaitao │ │ └── shiro │ │ └── chapter23 │ │ └── client │ │ ├── ClientAuthenticationFilter.java │ │ ├── ClientRealm.java │ │ ├── ClientSessionDAO.java │ │ └── ClientShiroFilterFactoryBean.java │ └── resources │ └── client │ ├── shiro-client-default.properties │ ├── spring-client-remote-service.xml │ ├── spring-client-shiro.xml │ └── spring-client.xml ├── shiro-example-chapter23-core ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── github │ └── zhangkaitao │ └── shiro │ └── chapter23 │ ├── core │ └── ClientSavedRequest.java │ └── remote │ ├── PermissionContext.java │ └── RemoteServiceInterface.java ├── shiro-example-chapter23-nginx ├── nginx-1.5.11.rar └── pom.xml ├── shiro-example-chapter23-pom └── pom.xml ├── shiro-example-chapter23-server ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── github │ │ │ └── zhangkaitao │ │ │ └── shiro │ │ │ ├── chapter23 │ │ │ ├── Constants.java │ │ │ ├── credentials │ │ │ │ └── RetryLimitHashedCredentialsMatcher.java │ │ │ ├── dao │ │ │ │ ├── AppDao.java │ │ │ │ ├── AppDaoImpl.java │ │ │ │ ├── AuthorizationDao.java │ │ │ │ ├── AuthorizationDaoImpl.java │ │ │ │ ├── OrganizationDao.java │ │ │ │ ├── OrganizationDaoImpl.java │ │ │ │ ├── ResourceDao.java │ │ │ │ ├── ResourceDaoImpl.java │ │ │ │ ├── RoleDao.java │ │ │ │ ├── RoleDaoImpl.java │ │ │ │ ├── UserDao.java │ │ │ │ └── UserDaoImpl.java │ │ │ ├── entity │ │ │ │ ├── App.java │ │ │ │ ├── Authorization.java │ │ │ │ ├── Organization.java │ │ │ │ ├── Resource.java │ │ │ │ ├── Role.java │ │ │ │ └── User.java │ │ │ ├── realm │ │ │ │ └── UserRealm.java │ │ │ ├── remote │ │ │ │ └── RemoteService.java │ │ │ ├── service │ │ │ │ ├── AppService.java │ │ │ │ ├── AppServiceImpl.java │ │ │ │ ├── AuthorizationService.java │ │ │ │ ├── AuthorizationServiceImpl.java │ │ │ │ ├── OrganizationService.java │ │ │ │ ├── OrganizationServiceImpl.java │ │ │ │ ├── PasswordHelper.java │ │ │ │ ├── ResourceService.java │ │ │ │ ├── ResourceServiceImpl.java │ │ │ │ ├── RoleService.java │ │ │ │ ├── RoleServiceImpl.java │ │ │ │ ├── UserService.java │ │ │ │ └── UserServiceImpl.java │ │ │ ├── session │ │ │ │ ├── dao │ │ │ │ │ └── MySqlSessionDAO.java │ │ │ │ └── scheduler │ │ │ │ │ └── MySqlSessionValidationScheduler.java │ │ │ ├── utils │ │ │ │ └── SerializableUtils.java │ │ │ └── web │ │ │ │ ├── bind │ │ │ │ ├── annotation │ │ │ │ │ └── CurrentUser.java │ │ │ │ └── method │ │ │ │ │ └── CurrentUserMethodArgumentResolver.java │ │ │ │ ├── controller │ │ │ │ ├── AppController.java │ │ │ │ ├── AuthorizationController.java │ │ │ │ ├── IndexController.java │ │ │ │ ├── LoginController.java │ │ │ │ ├── OrganizationController.java │ │ │ │ ├── ResourceController.java │ │ │ │ ├── RoleController.java │ │ │ │ └── UserController.java │ │ │ │ ├── exception │ │ │ │ └── DefaultExceptionHandler.java │ │ │ │ ├── shiro │ │ │ │ └── filter │ │ │ │ │ ├── ServerFormAuthenticationFilter.java │ │ │ │ │ └── SysUserFilter.java │ │ │ │ └── taglib │ │ │ │ └── Functions.java │ │ │ └── spring │ │ │ └── SpringUtils.java │ ├── resources │ │ ├── ehcache │ │ │ └── ehcache-shiro.xml │ │ ├── resources.properties │ │ ├── spring-config-shiro.xml │ │ ├── spring-config.xml │ │ ├── spring-mvc-remote-service.xml │ │ ├── spring-mvc-shiro.xml │ │ └── spring-mvc.xml │ └── webapp │ │ └── WEB-INF │ │ ├── jsp │ │ ├── app │ │ │ ├── edit.jsp │ │ │ └── list.jsp │ │ ├── authorization │ │ │ ├── edit.jsp │ │ │ └── list.jsp │ │ ├── index.jsp │ │ ├── login.jsp │ │ ├── organization │ │ │ ├── appendChild.jsp │ │ │ ├── index.jsp │ │ │ ├── maintain.jsp │ │ │ ├── move.jsp │ │ │ ├── success.jsp │ │ │ └── tree.jsp │ │ ├── resource │ │ │ ├── edit.jsp │ │ │ └── list.jsp │ │ ├── role │ │ │ ├── edit.jsp │ │ │ └── list.jsp │ │ ├── unauthorized.jsp │ │ ├── user │ │ │ ├── changePassword.jsp │ │ │ ├── edit.jsp │ │ │ └── list.jsp │ │ └── welcome.jsp │ │ ├── static │ │ ├── JQuery zTree v3.5.15 │ │ │ ├── api │ │ │ │ ├── API_cn.html │ │ │ │ ├── API_en.html │ │ │ │ ├── apiCss │ │ │ │ │ ├── api.js │ │ │ │ │ ├── common.css │ │ │ │ │ ├── common_ie6.css │ │ │ │ │ ├── img │ │ │ │ │ │ ├── apiMenu.gif │ │ │ │ │ │ ├── apiMenu.png │ │ │ │ │ │ ├── background.jpg │ │ │ │ │ │ ├── chinese.png │ │ │ │ │ │ ├── close.png │ │ │ │ │ │ ├── contact-bg.png │ │ │ │ │ │ ├── english.png │ │ │ │ │ │ ├── header-bg.png │ │ │ │ │ │ ├── lightbulb.png │ │ │ │ │ │ ├── overlay_arrow.gif │ │ │ │ │ │ ├── overlay_arrow.png │ │ │ │ │ │ ├── overlay_bg.png │ │ │ │ │ │ ├── overlay_close_IE6.gif │ │ │ │ │ │ ├── zTreeStandard.gif │ │ │ │ │ │ └── zTreeStandard.png │ │ │ │ │ ├── jquery-1.6.2.min.js │ │ │ │ │ ├── jquery.ztree.core-3.5.js │ │ │ │ │ └── zTreeStyleForApi.css │ │ │ │ ├── cn │ │ │ │ │ ├── fn.zTree._z.html │ │ │ │ │ ├── fn.zTree.destroy.html │ │ │ │ │ ├── fn.zTree.getZTreeObj.html │ │ │ │ │ ├── fn.zTree.init.html │ │ │ │ │ ├── setting.async.autoParam.html │ │ │ │ │ ├── setting.async.contentType.html │ │ │ │ │ ├── setting.async.dataFilter.html │ │ │ │ │ ├── setting.async.dataType.html │ │ │ │ │ ├── setting.async.enable.html │ │ │ │ │ ├── setting.async.otherParam.html │ │ │ │ │ ├── setting.async.type.html │ │ │ │ │ ├── setting.async.url.html │ │ │ │ │ ├── setting.callback.beforeAsync.html │ │ │ │ │ ├── setting.callback.beforeCheck.html │ │ │ │ │ ├── setting.callback.beforeClick.html │ │ │ │ │ ├── setting.callback.beforeCollapse.html │ │ │ │ │ ├── setting.callback.beforeDblClick.html │ │ │ │ │ ├── setting.callback.beforeDrag.html │ │ │ │ │ ├── setting.callback.beforeDragOpen.html │ │ │ │ │ ├── setting.callback.beforeDrop.html │ │ │ │ │ ├── setting.callback.beforeEditName.html │ │ │ │ │ ├── setting.callback.beforeExpand.html │ │ │ │ │ ├── setting.callback.beforeMouseDown.html │ │ │ │ │ ├── setting.callback.beforeMouseUp.html │ │ │ │ │ ├── setting.callback.beforeRemove.html │ │ │ │ │ ├── setting.callback.beforeRename.html │ │ │ │ │ ├── setting.callback.beforeRightClick.html │ │ │ │ │ ├── setting.callback.onAsyncError.html │ │ │ │ │ ├── setting.callback.onAsyncSuccess.html │ │ │ │ │ ├── setting.callback.onCheck.html │ │ │ │ │ ├── setting.callback.onClick.html │ │ │ │ │ ├── setting.callback.onCollapse.html │ │ │ │ │ ├── setting.callback.onDblClick.html │ │ │ │ │ ├── setting.callback.onDrag.html │ │ │ │ │ ├── setting.callback.onDrop.html │ │ │ │ │ ├── setting.callback.onExpand.html │ │ │ │ │ ├── setting.callback.onMouseDown.html │ │ │ │ │ ├── setting.callback.onMouseUp.html │ │ │ │ │ ├── setting.callback.onNodeCreated.html │ │ │ │ │ ├── setting.callback.onRemove.html │ │ │ │ │ ├── setting.callback.onRename.html │ │ │ │ │ ├── setting.callback.onRightClick.html │ │ │ │ │ ├── setting.check.autoCheckTrigger.html │ │ │ │ │ ├── setting.check.chkDisabledInherit.html │ │ │ │ │ ├── setting.check.chkStyle.html │ │ │ │ │ ├── setting.check.chkboxType.html │ │ │ │ │ ├── setting.check.enable.html │ │ │ │ │ ├── setting.check.nocheckInherit.html │ │ │ │ │ ├── setting.check.radioType.html │ │ │ │ │ ├── setting.data.keep.leaf.html │ │ │ │ │ ├── setting.data.keep.parent.html │ │ │ │ │ ├── setting.data.key.checked.html │ │ │ │ │ ├── setting.data.key.children.html │ │ │ │ │ ├── setting.data.key.name.html │ │ │ │ │ ├── setting.data.key.title.html │ │ │ │ │ ├── setting.data.key.url.html │ │ │ │ │ ├── setting.data.simpleData.enable.html │ │ │ │ │ ├── setting.data.simpleData.idKey.html │ │ │ │ │ ├── setting.data.simpleData.pIdKey.html │ │ │ │ │ ├── setting.data.simpleData.rootPId.html │ │ │ │ │ ├── setting.edit.drag.autoExpandTrigger.html │ │ │ │ │ ├── setting.edit.drag.autoOpenTime.html │ │ │ │ │ ├── setting.edit.drag.borderMax.html │ │ │ │ │ ├── setting.edit.drag.borderMin.html │ │ │ │ │ ├── setting.edit.drag.inner.html │ │ │ │ │ ├── setting.edit.drag.isCopy.html │ │ │ │ │ ├── setting.edit.drag.isMove.html │ │ │ │ │ ├── setting.edit.drag.maxShowNodeNum.html │ │ │ │ │ ├── setting.edit.drag.minMoveSize.html │ │ │ │ │ ├── setting.edit.drag.next.html │ │ │ │ │ ├── setting.edit.drag.prev.html │ │ │ │ │ ├── setting.edit.editNameSelectAll.html │ │ │ │ │ ├── setting.edit.enable.html │ │ │ │ │ ├── setting.edit.removeTitle.html │ │ │ │ │ ├── setting.edit.renameTitle.html │ │ │ │ │ ├── setting.edit.showRemoveBtn.html │ │ │ │ │ ├── setting.edit.showRenameBtn.html │ │ │ │ │ ├── setting.treeId.html │ │ │ │ │ ├── setting.treeObj.html │ │ │ │ │ ├── setting.view.addDiyDom.html │ │ │ │ │ ├── setting.view.addHoverDom.html │ │ │ │ │ ├── setting.view.autoCancelSelected.html │ │ │ │ │ ├── setting.view.dblClickExpand.html │ │ │ │ │ ├── setting.view.expandSpeed.html │ │ │ │ │ ├── setting.view.fontCss.html │ │ │ │ │ ├── setting.view.nameIsHTML.html │ │ │ │ │ ├── setting.view.removeHoverDom.html │ │ │ │ │ ├── setting.view.selectedMulti.html │ │ │ │ │ ├── setting.view.showIcon.html │ │ │ │ │ ├── setting.view.showLine.html │ │ │ │ │ ├── setting.view.showTitle.html │ │ │ │ │ ├── setting.view.txtSelectedEnable.html │ │ │ │ │ ├── treeNode.check_Child_State.html │ │ │ │ │ ├── treeNode.check_Focus.html │ │ │ │ │ ├── treeNode.checked.html │ │ │ │ │ ├── treeNode.checkedOld.html │ │ │ │ │ ├── treeNode.children.html │ │ │ │ │ ├── treeNode.chkDisabled.html │ │ │ │ │ ├── treeNode.click.html │ │ │ │ │ ├── treeNode.diy.html │ │ │ │ │ ├── treeNode.editNameFlag.html │ │ │ │ │ ├── treeNode.getCheckStatus.html │ │ │ │ │ ├── treeNode.getNextNode.html │ │ │ │ │ ├── treeNode.getParentNode.html │ │ │ │ │ ├── treeNode.getPreNode.html │ │ │ │ │ ├── treeNode.halfCheck.html │ │ │ │ │ ├── treeNode.icon.html │ │ │ │ │ ├── treeNode.iconClose.html │ │ │ │ │ ├── treeNode.iconOpen.html │ │ │ │ │ ├── treeNode.iconSkin.html │ │ │ │ │ ├── treeNode.isAjaxing.html │ │ │ │ │ ├── treeNode.isFirstNode.html │ │ │ │ │ ├── treeNode.isHidden.html │ │ │ │ │ ├── treeNode.isHover.html │ │ │ │ │ ├── treeNode.isLastNode.html │ │ │ │ │ ├── treeNode.isParent.html │ │ │ │ │ ├── treeNode.level.html │ │ │ │ │ ├── treeNode.name.html │ │ │ │ │ ├── treeNode.nocheck.html │ │ │ │ │ ├── treeNode.open.html │ │ │ │ │ ├── treeNode.parentTId.html │ │ │ │ │ ├── treeNode.tId.html │ │ │ │ │ ├── treeNode.target.html │ │ │ │ │ ├── treeNode.url.html │ │ │ │ │ ├── treeNode.zAsync.html │ │ │ │ │ ├── zTreeObj.addNodes.html │ │ │ │ │ ├── zTreeObj.cancelEditName.html │ │ │ │ │ ├── zTreeObj.cancelSelectedNode.html │ │ │ │ │ ├── zTreeObj.checkAllNodes.html │ │ │ │ │ ├── zTreeObj.checkNode.html │ │ │ │ │ ├── zTreeObj.copyNode.html │ │ │ │ │ ├── zTreeObj.destroy.html │ │ │ │ │ ├── zTreeObj.editName.html │ │ │ │ │ ├── zTreeObj.expandAll.html │ │ │ │ │ ├── zTreeObj.expandNode.html │ │ │ │ │ ├── zTreeObj.getChangeCheckedNodes.html │ │ │ │ │ ├── zTreeObj.getCheckedNodes.html │ │ │ │ │ ├── zTreeObj.getNodeByParam.html │ │ │ │ │ ├── zTreeObj.getNodeByTId.html │ │ │ │ │ ├── zTreeObj.getNodeIndex.html │ │ │ │ │ ├── zTreeObj.getNodes.html │ │ │ │ │ ├── zTreeObj.getNodesByFilter.html │ │ │ │ │ ├── zTreeObj.getNodesByParam.html │ │ │ │ │ ├── zTreeObj.getNodesByParamFuzzy.html │ │ │ │ │ ├── zTreeObj.getSelectedNodes.html │ │ │ │ │ ├── zTreeObj.hideNode.html │ │ │ │ │ ├── zTreeObj.hideNodes.html │ │ │ │ │ ├── zTreeObj.moveNode.html │ │ │ │ │ ├── zTreeObj.reAsyncChildNodes.html │ │ │ │ │ ├── zTreeObj.refresh.html │ │ │ │ │ ├── zTreeObj.removeChildNodes.html │ │ │ │ │ ├── zTreeObj.removeNode.html │ │ │ │ │ ├── zTreeObj.selectNode.html │ │ │ │ │ ├── zTreeObj.setChkDisabled.html │ │ │ │ │ ├── zTreeObj.setEditable.html │ │ │ │ │ ├── zTreeObj.setting.html │ │ │ │ │ ├── zTreeObj.showNode.html │ │ │ │ │ ├── zTreeObj.showNodes.html │ │ │ │ │ ├── zTreeObj.transformToArray.html │ │ │ │ │ ├── zTreeObj.transformTozTreeNodes.html │ │ │ │ │ └── zTreeObj.updateNode.html │ │ │ │ └── en │ │ │ │ │ ├── fn.zTree._z.html │ │ │ │ │ ├── fn.zTree.destroy.html │ │ │ │ │ ├── fn.zTree.getZTreeObj.html │ │ │ │ │ ├── fn.zTree.init.html │ │ │ │ │ ├── setting.async.autoParam.html │ │ │ │ │ ├── setting.async.contentType.html │ │ │ │ │ ├── setting.async.dataFilter.html │ │ │ │ │ ├── setting.async.dataType.html │ │ │ │ │ ├── setting.async.enable.html │ │ │ │ │ ├── setting.async.otherParam.html │ │ │ │ │ ├── setting.async.type.html │ │ │ │ │ ├── setting.async.url.html │ │ │ │ │ ├── setting.callback.beforeAsync.html │ │ │ │ │ ├── setting.callback.beforeCheck.html │ │ │ │ │ ├── setting.callback.beforeClick.html │ │ │ │ │ ├── setting.callback.beforeCollapse.html │ │ │ │ │ ├── setting.callback.beforeDblClick.html │ │ │ │ │ ├── setting.callback.beforeDrag.html │ │ │ │ │ ├── setting.callback.beforeDragOpen.html │ │ │ │ │ ├── setting.callback.beforeDrop.html │ │ │ │ │ ├── setting.callback.beforeEditName.html │ │ │ │ │ ├── setting.callback.beforeExpand.html │ │ │ │ │ ├── setting.callback.beforeMouseDown.html │ │ │ │ │ ├── setting.callback.beforeMouseUp.html │ │ │ │ │ ├── setting.callback.beforeRemove.html │ │ │ │ │ ├── setting.callback.beforeRename.html │ │ │ │ │ ├── setting.callback.beforeRightClick.html │ │ │ │ │ ├── setting.callback.onAsyncError.html │ │ │ │ │ ├── setting.callback.onAsyncSuccess.html │ │ │ │ │ ├── setting.callback.onCheck.html │ │ │ │ │ ├── setting.callback.onClick.html │ │ │ │ │ ├── setting.callback.onCollapse.html │ │ │ │ │ ├── setting.callback.onDblClick.html │ │ │ │ │ ├── setting.callback.onDrag.html │ │ │ │ │ ├── setting.callback.onDrop.html │ │ │ │ │ ├── setting.callback.onExpand.html │ │ │ │ │ ├── setting.callback.onMouseDown.html │ │ │ │ │ ├── setting.callback.onMouseUp.html │ │ │ │ │ ├── setting.callback.onNodeCreated.html │ │ │ │ │ ├── setting.callback.onRemove.html │ │ │ │ │ ├── setting.callback.onRename.html │ │ │ │ │ ├── setting.callback.onRightClick.html │ │ │ │ │ ├── setting.check.autoCheckTrigger.html │ │ │ │ │ ├── setting.check.chkDisabledInherit.html │ │ │ │ │ ├── setting.check.chkStyle.html │ │ │ │ │ ├── setting.check.chkboxType.html │ │ │ │ │ ├── setting.check.enable.html │ │ │ │ │ ├── setting.check.nocheckInherit.html │ │ │ │ │ ├── setting.check.radioType.html │ │ │ │ │ ├── setting.data.keep.leaf.html │ │ │ │ │ ├── setting.data.keep.parent.html │ │ │ │ │ ├── setting.data.key.checked.html │ │ │ │ │ ├── setting.data.key.children.html │ │ │ │ │ ├── setting.data.key.name.html │ │ │ │ │ ├── setting.data.key.title.html │ │ │ │ │ ├── setting.data.key.url.html │ │ │ │ │ ├── setting.data.simpleData.enable.html │ │ │ │ │ ├── setting.data.simpleData.idKey.html │ │ │ │ │ ├── setting.data.simpleData.pIdKey.html │ │ │ │ │ ├── setting.data.simpleData.rootPId.html │ │ │ │ │ ├── setting.edit.drag.autoExpandTrigger.html │ │ │ │ │ ├── setting.edit.drag.autoOpenTime.html │ │ │ │ │ ├── setting.edit.drag.borderMax.html │ │ │ │ │ ├── setting.edit.drag.borderMin.html │ │ │ │ │ ├── setting.edit.drag.inner.html │ │ │ │ │ ├── setting.edit.drag.isCopy.html │ │ │ │ │ ├── setting.edit.drag.isMove.html │ │ │ │ │ ├── setting.edit.drag.maxShowNodeNum.html │ │ │ │ │ ├── setting.edit.drag.minMoveSize.html │ │ │ │ │ ├── setting.edit.drag.next.html │ │ │ │ │ ├── setting.edit.drag.prev.html │ │ │ │ │ ├── setting.edit.editNameSelectAll.html │ │ │ │ │ ├── setting.edit.enable.html │ │ │ │ │ ├── setting.edit.removeTitle.html │ │ │ │ │ ├── setting.edit.renameTitle.html │ │ │ │ │ ├── setting.edit.showRemoveBtn.html │ │ │ │ │ ├── setting.edit.showRenameBtn.html │ │ │ │ │ ├── setting.treeId.html │ │ │ │ │ ├── setting.treeObj.html │ │ │ │ │ ├── setting.view.addDiyDom.html │ │ │ │ │ ├── setting.view.addHoverDom.html │ │ │ │ │ ├── setting.view.autoCancelSelected.html │ │ │ │ │ ├── setting.view.dblClickExpand.html │ │ │ │ │ ├── setting.view.expandSpeed.html │ │ │ │ │ ├── setting.view.fontCss.html │ │ │ │ │ ├── setting.view.nameIsHTML.html │ │ │ │ │ ├── setting.view.removeHoverDom.html │ │ │ │ │ ├── setting.view.selectedMulti.html │ │ │ │ │ ├── setting.view.showIcon.html │ │ │ │ │ ├── setting.view.showLine.html │ │ │ │ │ ├── setting.view.showTitle.html │ │ │ │ │ ├── setting.view.txtSelectedEnable.html │ │ │ │ │ ├── treeNode.check_Child_State.html │ │ │ │ │ ├── treeNode.check_Focus.html │ │ │ │ │ ├── treeNode.checked.html │ │ │ │ │ ├── treeNode.checkedOld.html │ │ │ │ │ ├── treeNode.children.html │ │ │ │ │ ├── treeNode.chkDisabled.html │ │ │ │ │ ├── treeNode.click.html │ │ │ │ │ ├── treeNode.diy.html │ │ │ │ │ ├── treeNode.editNameFlag.html │ │ │ │ │ ├── treeNode.getCheckStatus.html │ │ │ │ │ ├── treeNode.getNextNode.html │ │ │ │ │ ├── treeNode.getParentNode.html │ │ │ │ │ ├── treeNode.getPreNode.html │ │ │ │ │ ├── treeNode.halfCheck.html │ │ │ │ │ ├── treeNode.icon.html │ │ │ │ │ ├── treeNode.iconClose.html │ │ │ │ │ ├── treeNode.iconOpen.html │ │ │ │ │ ├── treeNode.iconSkin.html │ │ │ │ │ ├── treeNode.isAjaxing.html │ │ │ │ │ ├── treeNode.isFirstNode.html │ │ │ │ │ ├── treeNode.isHidden.html │ │ │ │ │ ├── treeNode.isHover.html │ │ │ │ │ ├── treeNode.isLastNode.html │ │ │ │ │ ├── treeNode.isParent.html │ │ │ │ │ ├── treeNode.level.html │ │ │ │ │ ├── treeNode.name.html │ │ │ │ │ ├── treeNode.nocheck.html │ │ │ │ │ ├── treeNode.open.html │ │ │ │ │ ├── treeNode.parentTId.html │ │ │ │ │ ├── treeNode.tId.html │ │ │ │ │ ├── treeNode.target.html │ │ │ │ │ ├── treeNode.url.html │ │ │ │ │ ├── treeNode.zAsync.html │ │ │ │ │ ├── zTreeObj.addNodes.html │ │ │ │ │ ├── zTreeObj.cancelEditName.html │ │ │ │ │ ├── zTreeObj.cancelSelectedNode.html │ │ │ │ │ ├── zTreeObj.checkAllNodes.html │ │ │ │ │ ├── zTreeObj.checkNode.html │ │ │ │ │ ├── zTreeObj.copyNode.html │ │ │ │ │ ├── zTreeObj.destroy.html │ │ │ │ │ ├── zTreeObj.editName.html │ │ │ │ │ ├── zTreeObj.expandAll.html │ │ │ │ │ ├── zTreeObj.expandNode.html │ │ │ │ │ ├── zTreeObj.getChangeCheckedNodes.html │ │ │ │ │ ├── zTreeObj.getCheckedNodes.html │ │ │ │ │ ├── zTreeObj.getNodeByParam.html │ │ │ │ │ ├── zTreeObj.getNodeByTId.html │ │ │ │ │ ├── zTreeObj.getNodeIndex.html │ │ │ │ │ ├── zTreeObj.getNodes.html │ │ │ │ │ ├── zTreeObj.getNodesByFilter.html │ │ │ │ │ ├── zTreeObj.getNodesByParam.html │ │ │ │ │ ├── zTreeObj.getNodesByParamFuzzy.html │ │ │ │ │ ├── zTreeObj.getSelectedNodes.html │ │ │ │ │ ├── zTreeObj.hideNode.html │ │ │ │ │ ├── zTreeObj.hideNodes.html │ │ │ │ │ ├── zTreeObj.moveNode.html │ │ │ │ │ ├── zTreeObj.reAsyncChildNodes.html │ │ │ │ │ ├── zTreeObj.refresh.html │ │ │ │ │ ├── zTreeObj.removeChildNodes.html │ │ │ │ │ ├── zTreeObj.removeNode.html │ │ │ │ │ ├── zTreeObj.selectNode.html │ │ │ │ │ ├── zTreeObj.setChkDisabled.html │ │ │ │ │ ├── zTreeObj.setEditable.html │ │ │ │ │ ├── zTreeObj.setting.html │ │ │ │ │ ├── zTreeObj.showNode.html │ │ │ │ │ ├── zTreeObj.showNodes.html │ │ │ │ │ ├── zTreeObj.transformToArray.html │ │ │ │ │ ├── zTreeObj.transformTozTreeNodes.html │ │ │ │ │ └── zTreeObj.updateNode.html │ │ │ ├── css │ │ │ │ ├── demo.css │ │ │ │ └── zTreeStyle │ │ │ │ │ ├── img │ │ │ │ │ ├── diy │ │ │ │ │ │ ├── 1_close.png │ │ │ │ │ │ ├── 1_open.png │ │ │ │ │ │ ├── 2.png │ │ │ │ │ │ ├── 3.png │ │ │ │ │ │ ├── 4.png │ │ │ │ │ │ ├── 5.png │ │ │ │ │ │ ├── 6.png │ │ │ │ │ │ ├── 7.png │ │ │ │ │ │ ├── 8.png │ │ │ │ │ │ └── 9.png │ │ │ │ │ ├── line_conn.gif │ │ │ │ │ ├── loading.gif │ │ │ │ │ ├── zTreeStandard.gif │ │ │ │ │ └── zTreeStandard.png │ │ │ │ │ └── zTreeStyle.css │ │ │ ├── demo │ │ │ │ ├── cn │ │ │ │ │ ├── asyncData │ │ │ │ │ │ ├── getNodes.php │ │ │ │ │ │ └── getNodesForBigData.php │ │ │ │ │ ├── bigdata │ │ │ │ │ │ ├── common.html │ │ │ │ │ │ ├── diy_async.html │ │ │ │ │ │ └── page.html │ │ │ │ │ ├── core │ │ │ │ │ │ ├── async.html │ │ │ │ │ │ ├── async_fun.html │ │ │ │ │ │ ├── click.html │ │ │ │ │ │ ├── custom_font.html │ │ │ │ │ │ ├── custom_icon.html │ │ │ │ │ │ ├── custom_iconSkin.html │ │ │ │ │ │ ├── expand.html │ │ │ │ │ │ ├── noicon.html │ │ │ │ │ │ ├── noline.html │ │ │ │ │ │ ├── otherMouse.html │ │ │ │ │ │ ├── searchNodes.html │ │ │ │ │ │ ├── simpleData.html │ │ │ │ │ │ ├── standardData.html │ │ │ │ │ │ ├── update_fun.html │ │ │ │ │ │ └── url.html │ │ │ │ │ ├── excheck │ │ │ │ │ │ ├── checkbox.html │ │ │ │ │ │ ├── checkbox_chkDisabled.html │ │ │ │ │ │ ├── checkbox_count.html │ │ │ │ │ │ ├── checkbox_fun.html │ │ │ │ │ │ ├── checkbox_halfCheck.html │ │ │ │ │ │ ├── checkbox_nocheck.html │ │ │ │ │ │ ├── radio.html │ │ │ │ │ │ ├── radio_chkDisabled.html │ │ │ │ │ │ ├── radio_fun.html │ │ │ │ │ │ ├── radio_halfCheck.html │ │ │ │ │ │ └── radio_nocheck.html │ │ │ │ │ ├── exedit │ │ │ │ │ │ ├── async_edit.html │ │ │ │ │ │ ├── drag.html │ │ │ │ │ │ ├── drag_fun.html │ │ │ │ │ │ ├── drag_super.html │ │ │ │ │ │ ├── edit.html │ │ │ │ │ │ ├── edit_fun.html │ │ │ │ │ │ ├── edit_super.html │ │ │ │ │ │ └── multiTree.html │ │ │ │ │ ├── exhide │ │ │ │ │ │ ├── checkbox.html │ │ │ │ │ │ ├── common.html │ │ │ │ │ │ └── radio.html │ │ │ │ │ ├── index.html │ │ │ │ │ └── super │ │ │ │ │ │ ├── asyncForAll.html │ │ │ │ │ │ ├── checkbox_radio.html │ │ │ │ │ │ ├── diydom.html │ │ │ │ │ │ ├── dragWithOther.html │ │ │ │ │ │ ├── left_menu.html │ │ │ │ │ │ ├── left_menuForOutLook.gif │ │ │ │ │ │ ├── left_menuForOutLook.html │ │ │ │ │ │ ├── left_menuForOutLook.png │ │ │ │ │ │ ├── oneclick.html │ │ │ │ │ │ ├── oneroot.html │ │ │ │ │ │ ├── rightClickMenu.html │ │ │ │ │ │ ├── select_menu.html │ │ │ │ │ │ ├── select_menu_checkbox.html │ │ │ │ │ │ ├── select_menu_radio.html │ │ │ │ │ │ └── singlepath.html │ │ │ │ └── en │ │ │ │ │ ├── asyncData │ │ │ │ │ ├── getNodes.php │ │ │ │ │ └── getNodesForBigData.php │ │ │ │ │ ├── bigdata │ │ │ │ │ ├── common.html │ │ │ │ │ ├── diy_async.html │ │ │ │ │ └── page.html │ │ │ │ │ ├── core │ │ │ │ │ ├── async.html │ │ │ │ │ ├── async_fun.html │ │ │ │ │ ├── click.html │ │ │ │ │ ├── custom_font.html │ │ │ │ │ ├── custom_icon.html │ │ │ │ │ ├── custom_iconSkin.html │ │ │ │ │ ├── expand.html │ │ │ │ │ ├── noicon.html │ │ │ │ │ ├── noline.html │ │ │ │ │ ├── otherMouse.html │ │ │ │ │ ├── searchNodes.html │ │ │ │ │ ├── simpleData.html │ │ │ │ │ ├── standardData.html │ │ │ │ │ ├── update_fun.html │ │ │ │ │ └── url.html │ │ │ │ │ ├── excheck │ │ │ │ │ ├── checkbox.html │ │ │ │ │ ├── checkbox_chkDisabled.html │ │ │ │ │ ├── checkbox_count.html │ │ │ │ │ ├── checkbox_fun.html │ │ │ │ │ ├── checkbox_halfCheck.html │ │ │ │ │ ├── checkbox_nocheck.html │ │ │ │ │ ├── radio.html │ │ │ │ │ ├── radio_chkDisabled.html │ │ │ │ │ ├── radio_fun.html │ │ │ │ │ ├── radio_halfCheck.html │ │ │ │ │ └── radio_nocheck.html │ │ │ │ │ ├── exedit │ │ │ │ │ ├── async_edit.html │ │ │ │ │ ├── drag.html │ │ │ │ │ ├── drag_fun.html │ │ │ │ │ ├── drag_super.html │ │ │ │ │ ├── edit.html │ │ │ │ │ ├── edit_fun.html │ │ │ │ │ ├── edit_super.html │ │ │ │ │ └── multiTree.html │ │ │ │ │ ├── exhide │ │ │ │ │ ├── checkbox.html │ │ │ │ │ ├── common.html │ │ │ │ │ └── radio.html │ │ │ │ │ ├── index.html │ │ │ │ │ └── super │ │ │ │ │ ├── asyncForAll.html │ │ │ │ │ ├── checkbox_radio.html │ │ │ │ │ ├── diydom.html │ │ │ │ │ ├── dragWithOther.html │ │ │ │ │ ├── left_menu.html │ │ │ │ │ ├── left_menuForOutLook.gif │ │ │ │ │ ├── left_menuForOutLook.html │ │ │ │ │ ├── left_menuForOutLook.png │ │ │ │ │ ├── oneclick.html │ │ │ │ │ ├── oneroot.html │ │ │ │ │ ├── rightClickMenu.html │ │ │ │ │ ├── select_menu.html │ │ │ │ │ ├── select_menu_checkbox.html │ │ │ │ │ ├── select_menu_radio.html │ │ │ │ │ └── singlepath.html │ │ │ ├── js │ │ │ │ ├── jquery-1.4.4.min.js │ │ │ │ ├── jquery.ztree.all-3.5.js │ │ │ │ ├── jquery.ztree.all-3.5.min.js │ │ │ │ ├── jquery.ztree.core-3.5.js │ │ │ │ ├── jquery.ztree.core-3.5.min.js │ │ │ │ ├── jquery.ztree.excheck-3.5.js │ │ │ │ ├── jquery.ztree.excheck-3.5.min.js │ │ │ │ ├── jquery.ztree.exedit-3.5.js │ │ │ │ ├── jquery.ztree.exedit-3.5.min.js │ │ │ │ ├── jquery.ztree.exhide-3.5.js │ │ │ │ └── jquery.ztree.exhide-3.5.min.js │ │ │ └── log v3.x.txt │ │ ├── css │ │ │ ├── css.css │ │ │ └── layout-default-latest.css │ │ ├── jquery-treetable │ │ │ ├── .gitignore │ │ │ ├── CHANGELOG.txt │ │ │ ├── GPL-LICENSE.txt │ │ │ ├── MIT-LICENSE.txt │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── javascripts │ │ │ │ ├── src │ │ │ │ │ └── jquery.treetable.js │ │ │ │ └── test │ │ │ │ │ └── jquery.treetable.test.js │ │ │ ├── stylesheets │ │ │ │ ├── jquery.treetable.css │ │ │ │ ├── jquery.treetable.theme.default.css │ │ │ │ └── screen.css │ │ │ ├── test.html │ │ │ └── treetable.jquery.json │ │ └── js │ │ │ ├── jquery-1.11.0.min.js │ │ │ └── jquery.layout-latest.min.js │ │ ├── tld │ │ └── zhang-functions.tld │ │ └── web.xml │ └── sql │ ├── design.txt │ ├── shiro-data.sql │ └── shiro-schema.sql ├── shiro-example-chapter24 ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── github │ │ │ └── zhangkaitao │ │ │ └── shiro │ │ │ ├── chapter24 │ │ │ ├── Constants.java │ │ │ ├── credentials │ │ │ │ └── RetryLimitHashedCredentialsMatcher.java │ │ │ ├── dao │ │ │ │ ├── OrganizationDao.java │ │ │ │ ├── OrganizationDaoImpl.java │ │ │ │ ├── ResourceDao.java │ │ │ │ ├── ResourceDaoImpl.java │ │ │ │ ├── RoleDao.java │ │ │ │ ├── RoleDaoImpl.java │ │ │ │ ├── UserDao.java │ │ │ │ └── UserDaoImpl.java │ │ │ ├── entity │ │ │ │ ├── Organization.java │ │ │ │ ├── Resource.java │ │ │ │ ├── Role.java │ │ │ │ └── User.java │ │ │ ├── realm │ │ │ │ └── UserRealm.java │ │ │ ├── service │ │ │ │ ├── OrganizationService.java │ │ │ │ ├── OrganizationServiceImpl.java │ │ │ │ ├── PasswordHelper.java │ │ │ │ ├── ResourceService.java │ │ │ │ ├── ResourceServiceImpl.java │ │ │ │ ├── RoleService.java │ │ │ │ ├── RoleServiceImpl.java │ │ │ │ ├── UserService.java │ │ │ │ └── UserServiceImpl.java │ │ │ └── web │ │ │ │ ├── bind │ │ │ │ ├── annotation │ │ │ │ │ └── CurrentUser.java │ │ │ │ └── method │ │ │ │ │ └── CurrentUserMethodArgumentResolver.java │ │ │ │ ├── controller │ │ │ │ ├── IndexController.java │ │ │ │ ├── LoginController.java │ │ │ │ ├── OrganizationController.java │ │ │ │ ├── ResourceController.java │ │ │ │ ├── RoleController.java │ │ │ │ ├── SessionController.java │ │ │ │ └── UserController.java │ │ │ │ ├── exception │ │ │ │ └── DefaultExceptionHandler.java │ │ │ │ ├── shiro │ │ │ │ └── filter │ │ │ │ │ ├── ForceLogoutFilter.java │ │ │ │ │ └── SysUserFilter.java │ │ │ │ └── taglib │ │ │ │ └── Functions.java │ │ │ └── spring │ │ │ ├── SpringCacheManagerWrapper.java │ │ │ └── SpringUtils.java │ ├── resources │ │ ├── ehcache │ │ │ └── ehcache.xml │ │ ├── resources.properties │ │ ├── spring-config-cache.xml │ │ ├── spring-config-shiro.xml │ │ ├── spring-config.xml │ │ ├── spring-mvc-shiro.xml │ │ └── spring-mvc.xml │ └── webapp │ │ └── WEB-INF │ │ ├── jsp │ │ ├── index.jsp │ │ ├── login.jsp │ │ ├── organization │ │ │ ├── appendChild.jsp │ │ │ ├── index.jsp │ │ │ ├── maintain.jsp │ │ │ ├── move.jsp │ │ │ ├── success.jsp │ │ │ └── tree.jsp │ │ ├── resource │ │ │ ├── edit.jsp │ │ │ └── list.jsp │ │ ├── role │ │ │ ├── edit.jsp │ │ │ └── list.jsp │ │ ├── sessions │ │ │ └── list.jsp │ │ ├── unauthorized.jsp │ │ ├── user │ │ │ ├── changePassword.jsp │ │ │ ├── edit.jsp │ │ │ └── list.jsp │ │ └── welcome.jsp │ │ ├── static │ │ ├── JQuery zTree v3.5.15 │ │ │ ├── api │ │ │ │ ├── API_cn.html │ │ │ │ ├── API_en.html │ │ │ │ ├── apiCss │ │ │ │ │ ├── api.js │ │ │ │ │ ├── common.css │ │ │ │ │ ├── common_ie6.css │ │ │ │ │ ├── img │ │ │ │ │ │ ├── apiMenu.gif │ │ │ │ │ │ ├── apiMenu.png │ │ │ │ │ │ ├── background.jpg │ │ │ │ │ │ ├── chinese.png │ │ │ │ │ │ ├── close.png │ │ │ │ │ │ ├── contact-bg.png │ │ │ │ │ │ ├── english.png │ │ │ │ │ │ ├── header-bg.png │ │ │ │ │ │ ├── lightbulb.png │ │ │ │ │ │ ├── overlay_arrow.gif │ │ │ │ │ │ ├── overlay_arrow.png │ │ │ │ │ │ ├── overlay_bg.png │ │ │ │ │ │ ├── overlay_close_IE6.gif │ │ │ │ │ │ ├── zTreeStandard.gif │ │ │ │ │ │ └── zTreeStandard.png │ │ │ │ │ ├── jquery-1.6.2.min.js │ │ │ │ │ ├── jquery.ztree.core-3.5.js │ │ │ │ │ └── zTreeStyleForApi.css │ │ │ │ ├── cn │ │ │ │ │ ├── fn.zTree._z.html │ │ │ │ │ ├── fn.zTree.destroy.html │ │ │ │ │ ├── fn.zTree.getZTreeObj.html │ │ │ │ │ ├── fn.zTree.init.html │ │ │ │ │ ├── setting.async.autoParam.html │ │ │ │ │ ├── setting.async.contentType.html │ │ │ │ │ ├── setting.async.dataFilter.html │ │ │ │ │ ├── setting.async.dataType.html │ │ │ │ │ ├── setting.async.enable.html │ │ │ │ │ ├── setting.async.otherParam.html │ │ │ │ │ ├── setting.async.type.html │ │ │ │ │ ├── setting.async.url.html │ │ │ │ │ ├── setting.callback.beforeAsync.html │ │ │ │ │ ├── setting.callback.beforeCheck.html │ │ │ │ │ ├── setting.callback.beforeClick.html │ │ │ │ │ ├── setting.callback.beforeCollapse.html │ │ │ │ │ ├── setting.callback.beforeDblClick.html │ │ │ │ │ ├── setting.callback.beforeDrag.html │ │ │ │ │ ├── setting.callback.beforeDragOpen.html │ │ │ │ │ ├── setting.callback.beforeDrop.html │ │ │ │ │ ├── setting.callback.beforeEditName.html │ │ │ │ │ ├── setting.callback.beforeExpand.html │ │ │ │ │ ├── setting.callback.beforeMouseDown.html │ │ │ │ │ ├── setting.callback.beforeMouseUp.html │ │ │ │ │ ├── setting.callback.beforeRemove.html │ │ │ │ │ ├── setting.callback.beforeRename.html │ │ │ │ │ ├── setting.callback.beforeRightClick.html │ │ │ │ │ ├── setting.callback.onAsyncError.html │ │ │ │ │ ├── setting.callback.onAsyncSuccess.html │ │ │ │ │ ├── setting.callback.onCheck.html │ │ │ │ │ ├── setting.callback.onClick.html │ │ │ │ │ ├── setting.callback.onCollapse.html │ │ │ │ │ ├── setting.callback.onDblClick.html │ │ │ │ │ ├── setting.callback.onDrag.html │ │ │ │ │ ├── setting.callback.onDrop.html │ │ │ │ │ ├── setting.callback.onExpand.html │ │ │ │ │ ├── setting.callback.onMouseDown.html │ │ │ │ │ ├── setting.callback.onMouseUp.html │ │ │ │ │ ├── setting.callback.onNodeCreated.html │ │ │ │ │ ├── setting.callback.onRemove.html │ │ │ │ │ ├── setting.callback.onRename.html │ │ │ │ │ ├── setting.callback.onRightClick.html │ │ │ │ │ ├── setting.check.autoCheckTrigger.html │ │ │ │ │ ├── setting.check.chkDisabledInherit.html │ │ │ │ │ ├── setting.check.chkStyle.html │ │ │ │ │ ├── setting.check.chkboxType.html │ │ │ │ │ ├── setting.check.enable.html │ │ │ │ │ ├── setting.check.nocheckInherit.html │ │ │ │ │ ├── setting.check.radioType.html │ │ │ │ │ ├── setting.data.keep.leaf.html │ │ │ │ │ ├── setting.data.keep.parent.html │ │ │ │ │ ├── setting.data.key.checked.html │ │ │ │ │ ├── setting.data.key.children.html │ │ │ │ │ ├── setting.data.key.name.html │ │ │ │ │ ├── setting.data.key.title.html │ │ │ │ │ ├── setting.data.key.url.html │ │ │ │ │ ├── setting.data.simpleData.enable.html │ │ │ │ │ ├── setting.data.simpleData.idKey.html │ │ │ │ │ ├── setting.data.simpleData.pIdKey.html │ │ │ │ │ ├── setting.data.simpleData.rootPId.html │ │ │ │ │ ├── setting.edit.drag.autoExpandTrigger.html │ │ │ │ │ ├── setting.edit.drag.autoOpenTime.html │ │ │ │ │ ├── setting.edit.drag.borderMax.html │ │ │ │ │ ├── setting.edit.drag.borderMin.html │ │ │ │ │ ├── setting.edit.drag.inner.html │ │ │ │ │ ├── setting.edit.drag.isCopy.html │ │ │ │ │ ├── setting.edit.drag.isMove.html │ │ │ │ │ ├── setting.edit.drag.maxShowNodeNum.html │ │ │ │ │ ├── setting.edit.drag.minMoveSize.html │ │ │ │ │ ├── setting.edit.drag.next.html │ │ │ │ │ ├── setting.edit.drag.prev.html │ │ │ │ │ ├── setting.edit.editNameSelectAll.html │ │ │ │ │ ├── setting.edit.enable.html │ │ │ │ │ ├── setting.edit.removeTitle.html │ │ │ │ │ ├── setting.edit.renameTitle.html │ │ │ │ │ ├── setting.edit.showRemoveBtn.html │ │ │ │ │ ├── setting.edit.showRenameBtn.html │ │ │ │ │ ├── setting.treeId.html │ │ │ │ │ ├── setting.treeObj.html │ │ │ │ │ ├── setting.view.addDiyDom.html │ │ │ │ │ ├── setting.view.addHoverDom.html │ │ │ │ │ ├── setting.view.autoCancelSelected.html │ │ │ │ │ ├── setting.view.dblClickExpand.html │ │ │ │ │ ├── setting.view.expandSpeed.html │ │ │ │ │ ├── setting.view.fontCss.html │ │ │ │ │ ├── setting.view.nameIsHTML.html │ │ │ │ │ ├── setting.view.removeHoverDom.html │ │ │ │ │ ├── setting.view.selectedMulti.html │ │ │ │ │ ├── setting.view.showIcon.html │ │ │ │ │ ├── setting.view.showLine.html │ │ │ │ │ ├── setting.view.showTitle.html │ │ │ │ │ ├── setting.view.txtSelectedEnable.html │ │ │ │ │ ├── treeNode.check_Child_State.html │ │ │ │ │ ├── treeNode.check_Focus.html │ │ │ │ │ ├── treeNode.checked.html │ │ │ │ │ ├── treeNode.checkedOld.html │ │ │ │ │ ├── treeNode.children.html │ │ │ │ │ ├── treeNode.chkDisabled.html │ │ │ │ │ ├── treeNode.click.html │ │ │ │ │ ├── treeNode.diy.html │ │ │ │ │ ├── treeNode.editNameFlag.html │ │ │ │ │ ├── treeNode.getCheckStatus.html │ │ │ │ │ ├── treeNode.getNextNode.html │ │ │ │ │ ├── treeNode.getParentNode.html │ │ │ │ │ ├── treeNode.getPreNode.html │ │ │ │ │ ├── treeNode.halfCheck.html │ │ │ │ │ ├── treeNode.icon.html │ │ │ │ │ ├── treeNode.iconClose.html │ │ │ │ │ ├── treeNode.iconOpen.html │ │ │ │ │ ├── treeNode.iconSkin.html │ │ │ │ │ ├── treeNode.isAjaxing.html │ │ │ │ │ ├── treeNode.isFirstNode.html │ │ │ │ │ ├── treeNode.isHidden.html │ │ │ │ │ ├── treeNode.isHover.html │ │ │ │ │ ├── treeNode.isLastNode.html │ │ │ │ │ ├── treeNode.isParent.html │ │ │ │ │ ├── treeNode.level.html │ │ │ │ │ ├── treeNode.name.html │ │ │ │ │ ├── treeNode.nocheck.html │ │ │ │ │ ├── treeNode.open.html │ │ │ │ │ ├── treeNode.parentTId.html │ │ │ │ │ ├── treeNode.tId.html │ │ │ │ │ ├── treeNode.target.html │ │ │ │ │ ├── treeNode.url.html │ │ │ │ │ ├── treeNode.zAsync.html │ │ │ │ │ ├── zTreeObj.addNodes.html │ │ │ │ │ ├── zTreeObj.cancelEditName.html │ │ │ │ │ ├── zTreeObj.cancelSelectedNode.html │ │ │ │ │ ├── zTreeObj.checkAllNodes.html │ │ │ │ │ ├── zTreeObj.checkNode.html │ │ │ │ │ ├── zTreeObj.copyNode.html │ │ │ │ │ ├── zTreeObj.destroy.html │ │ │ │ │ ├── zTreeObj.editName.html │ │ │ │ │ ├── zTreeObj.expandAll.html │ │ │ │ │ ├── zTreeObj.expandNode.html │ │ │ │ │ ├── zTreeObj.getChangeCheckedNodes.html │ │ │ │ │ ├── zTreeObj.getCheckedNodes.html │ │ │ │ │ ├── zTreeObj.getNodeByParam.html │ │ │ │ │ ├── zTreeObj.getNodeByTId.html │ │ │ │ │ ├── zTreeObj.getNodeIndex.html │ │ │ │ │ ├── zTreeObj.getNodes.html │ │ │ │ │ ├── zTreeObj.getNodesByFilter.html │ │ │ │ │ ├── zTreeObj.getNodesByParam.html │ │ │ │ │ ├── zTreeObj.getNodesByParamFuzzy.html │ │ │ │ │ ├── zTreeObj.getSelectedNodes.html │ │ │ │ │ ├── zTreeObj.hideNode.html │ │ │ │ │ ├── zTreeObj.hideNodes.html │ │ │ │ │ ├── zTreeObj.moveNode.html │ │ │ │ │ ├── zTreeObj.reAsyncChildNodes.html │ │ │ │ │ ├── zTreeObj.refresh.html │ │ │ │ │ ├── zTreeObj.removeChildNodes.html │ │ │ │ │ ├── zTreeObj.removeNode.html │ │ │ │ │ ├── zTreeObj.selectNode.html │ │ │ │ │ ├── zTreeObj.setChkDisabled.html │ │ │ │ │ ├── zTreeObj.setEditable.html │ │ │ │ │ ├── zTreeObj.setting.html │ │ │ │ │ ├── zTreeObj.showNode.html │ │ │ │ │ ├── zTreeObj.showNodes.html │ │ │ │ │ ├── zTreeObj.transformToArray.html │ │ │ │ │ ├── zTreeObj.transformTozTreeNodes.html │ │ │ │ │ └── zTreeObj.updateNode.html │ │ │ │ └── en │ │ │ │ │ ├── fn.zTree._z.html │ │ │ │ │ ├── fn.zTree.destroy.html │ │ │ │ │ ├── fn.zTree.getZTreeObj.html │ │ │ │ │ ├── fn.zTree.init.html │ │ │ │ │ ├── setting.async.autoParam.html │ │ │ │ │ ├── setting.async.contentType.html │ │ │ │ │ ├── setting.async.dataFilter.html │ │ │ │ │ ├── setting.async.dataType.html │ │ │ │ │ ├── setting.async.enable.html │ │ │ │ │ ├── setting.async.otherParam.html │ │ │ │ │ ├── setting.async.type.html │ │ │ │ │ ├── setting.async.url.html │ │ │ │ │ ├── setting.callback.beforeAsync.html │ │ │ │ │ ├── setting.callback.beforeCheck.html │ │ │ │ │ ├── setting.callback.beforeClick.html │ │ │ │ │ ├── setting.callback.beforeCollapse.html │ │ │ │ │ ├── setting.callback.beforeDblClick.html │ │ │ │ │ ├── setting.callback.beforeDrag.html │ │ │ │ │ ├── setting.callback.beforeDragOpen.html │ │ │ │ │ ├── setting.callback.beforeDrop.html │ │ │ │ │ ├── setting.callback.beforeEditName.html │ │ │ │ │ ├── setting.callback.beforeExpand.html │ │ │ │ │ ├── setting.callback.beforeMouseDown.html │ │ │ │ │ ├── setting.callback.beforeMouseUp.html │ │ │ │ │ ├── setting.callback.beforeRemove.html │ │ │ │ │ ├── setting.callback.beforeRename.html │ │ │ │ │ ├── setting.callback.beforeRightClick.html │ │ │ │ │ ├── setting.callback.onAsyncError.html │ │ │ │ │ ├── setting.callback.onAsyncSuccess.html │ │ │ │ │ ├── setting.callback.onCheck.html │ │ │ │ │ ├── setting.callback.onClick.html │ │ │ │ │ ├── setting.callback.onCollapse.html │ │ │ │ │ ├── setting.callback.onDblClick.html │ │ │ │ │ ├── setting.callback.onDrag.html │ │ │ │ │ ├── setting.callback.onDrop.html │ │ │ │ │ ├── setting.callback.onExpand.html │ │ │ │ │ ├── setting.callback.onMouseDown.html │ │ │ │ │ ├── setting.callback.onMouseUp.html │ │ │ │ │ ├── setting.callback.onNodeCreated.html │ │ │ │ │ ├── setting.callback.onRemove.html │ │ │ │ │ ├── setting.callback.onRename.html │ │ │ │ │ ├── setting.callback.onRightClick.html │ │ │ │ │ ├── setting.check.autoCheckTrigger.html │ │ │ │ │ ├── setting.check.chkDisabledInherit.html │ │ │ │ │ ├── setting.check.chkStyle.html │ │ │ │ │ ├── setting.check.chkboxType.html │ │ │ │ │ ├── setting.check.enable.html │ │ │ │ │ ├── setting.check.nocheckInherit.html │ │ │ │ │ ├── setting.check.radioType.html │ │ │ │ │ ├── setting.data.keep.leaf.html │ │ │ │ │ ├── setting.data.keep.parent.html │ │ │ │ │ ├── setting.data.key.checked.html │ │ │ │ │ ├── setting.data.key.children.html │ │ │ │ │ ├── setting.data.key.name.html │ │ │ │ │ ├── setting.data.key.title.html │ │ │ │ │ ├── setting.data.key.url.html │ │ │ │ │ ├── setting.data.simpleData.enable.html │ │ │ │ │ ├── setting.data.simpleData.idKey.html │ │ │ │ │ ├── setting.data.simpleData.pIdKey.html │ │ │ │ │ ├── setting.data.simpleData.rootPId.html │ │ │ │ │ ├── setting.edit.drag.autoExpandTrigger.html │ │ │ │ │ ├── setting.edit.drag.autoOpenTime.html │ │ │ │ │ ├── setting.edit.drag.borderMax.html │ │ │ │ │ ├── setting.edit.drag.borderMin.html │ │ │ │ │ ├── setting.edit.drag.inner.html │ │ │ │ │ ├── setting.edit.drag.isCopy.html │ │ │ │ │ ├── setting.edit.drag.isMove.html │ │ │ │ │ ├── setting.edit.drag.maxShowNodeNum.html │ │ │ │ │ ├── setting.edit.drag.minMoveSize.html │ │ │ │ │ ├── setting.edit.drag.next.html │ │ │ │ │ ├── setting.edit.drag.prev.html │ │ │ │ │ ├── setting.edit.editNameSelectAll.html │ │ │ │ │ ├── setting.edit.enable.html │ │ │ │ │ ├── setting.edit.removeTitle.html │ │ │ │ │ ├── setting.edit.renameTitle.html │ │ │ │ │ ├── setting.edit.showRemoveBtn.html │ │ │ │ │ ├── setting.edit.showRenameBtn.html │ │ │ │ │ ├── setting.treeId.html │ │ │ │ │ ├── setting.treeObj.html │ │ │ │ │ ├── setting.view.addDiyDom.html │ │ │ │ │ ├── setting.view.addHoverDom.html │ │ │ │ │ ├── setting.view.autoCancelSelected.html │ │ │ │ │ ├── setting.view.dblClickExpand.html │ │ │ │ │ ├── setting.view.expandSpeed.html │ │ │ │ │ ├── setting.view.fontCss.html │ │ │ │ │ ├── setting.view.nameIsHTML.html │ │ │ │ │ ├── setting.view.removeHoverDom.html │ │ │ │ │ ├── setting.view.selectedMulti.html │ │ │ │ │ ├── setting.view.showIcon.html │ │ │ │ │ ├── setting.view.showLine.html │ │ │ │ │ ├── setting.view.showTitle.html │ │ │ │ │ ├── setting.view.txtSelectedEnable.html │ │ │ │ │ ├── treeNode.check_Child_State.html │ │ │ │ │ ├── treeNode.check_Focus.html │ │ │ │ │ ├── treeNode.checked.html │ │ │ │ │ ├── treeNode.checkedOld.html │ │ │ │ │ ├── treeNode.children.html │ │ │ │ │ ├── treeNode.chkDisabled.html │ │ │ │ │ ├── treeNode.click.html │ │ │ │ │ ├── treeNode.diy.html │ │ │ │ │ ├── treeNode.editNameFlag.html │ │ │ │ │ ├── treeNode.getCheckStatus.html │ │ │ │ │ ├── treeNode.getNextNode.html │ │ │ │ │ ├── treeNode.getParentNode.html │ │ │ │ │ ├── treeNode.getPreNode.html │ │ │ │ │ ├── treeNode.halfCheck.html │ │ │ │ │ ├── treeNode.icon.html │ │ │ │ │ ├── treeNode.iconClose.html │ │ │ │ │ ├── treeNode.iconOpen.html │ │ │ │ │ ├── treeNode.iconSkin.html │ │ │ │ │ ├── treeNode.isAjaxing.html │ │ │ │ │ ├── treeNode.isFirstNode.html │ │ │ │ │ ├── treeNode.isHidden.html │ │ │ │ │ ├── treeNode.isHover.html │ │ │ │ │ ├── treeNode.isLastNode.html │ │ │ │ │ ├── treeNode.isParent.html │ │ │ │ │ ├── treeNode.level.html │ │ │ │ │ ├── treeNode.name.html │ │ │ │ │ ├── treeNode.nocheck.html │ │ │ │ │ ├── treeNode.open.html │ │ │ │ │ ├── treeNode.parentTId.html │ │ │ │ │ ├── treeNode.tId.html │ │ │ │ │ ├── treeNode.target.html │ │ │ │ │ ├── treeNode.url.html │ │ │ │ │ ├── treeNode.zAsync.html │ │ │ │ │ ├── zTreeObj.addNodes.html │ │ │ │ │ ├── zTreeObj.cancelEditName.html │ │ │ │ │ ├── zTreeObj.cancelSelectedNode.html │ │ │ │ │ ├── zTreeObj.checkAllNodes.html │ │ │ │ │ ├── zTreeObj.checkNode.html │ │ │ │ │ ├── zTreeObj.copyNode.html │ │ │ │ │ ├── zTreeObj.destroy.html │ │ │ │ │ ├── zTreeObj.editName.html │ │ │ │ │ ├── zTreeObj.expandAll.html │ │ │ │ │ ├── zTreeObj.expandNode.html │ │ │ │ │ ├── zTreeObj.getChangeCheckedNodes.html │ │ │ │ │ ├── zTreeObj.getCheckedNodes.html │ │ │ │ │ ├── zTreeObj.getNodeByParam.html │ │ │ │ │ ├── zTreeObj.getNodeByTId.html │ │ │ │ │ ├── zTreeObj.getNodeIndex.html │ │ │ │ │ ├── zTreeObj.getNodes.html │ │ │ │ │ ├── zTreeObj.getNodesByFilter.html │ │ │ │ │ ├── zTreeObj.getNodesByParam.html │ │ │ │ │ ├── zTreeObj.getNodesByParamFuzzy.html │ │ │ │ │ ├── zTreeObj.getSelectedNodes.html │ │ │ │ │ ├── zTreeObj.hideNode.html │ │ │ │ │ ├── zTreeObj.hideNodes.html │ │ │ │ │ ├── zTreeObj.moveNode.html │ │ │ │ │ ├── zTreeObj.reAsyncChildNodes.html │ │ │ │ │ ├── zTreeObj.refresh.html │ │ │ │ │ ├── zTreeObj.removeChildNodes.html │ │ │ │ │ ├── zTreeObj.removeNode.html │ │ │ │ │ ├── zTreeObj.selectNode.html │ │ │ │ │ ├── zTreeObj.setChkDisabled.html │ │ │ │ │ ├── zTreeObj.setEditable.html │ │ │ │ │ ├── zTreeObj.setting.html │ │ │ │ │ ├── zTreeObj.showNode.html │ │ │ │ │ ├── zTreeObj.showNodes.html │ │ │ │ │ ├── zTreeObj.transformToArray.html │ │ │ │ │ ├── zTreeObj.transformTozTreeNodes.html │ │ │ │ │ └── zTreeObj.updateNode.html │ │ │ ├── css │ │ │ │ ├── demo.css │ │ │ │ └── zTreeStyle │ │ │ │ │ ├── img │ │ │ │ │ ├── diy │ │ │ │ │ │ ├── 1_close.png │ │ │ │ │ │ ├── 1_open.png │ │ │ │ │ │ ├── 2.png │ │ │ │ │ │ ├── 3.png │ │ │ │ │ │ ├── 4.png │ │ │ │ │ │ ├── 5.png │ │ │ │ │ │ ├── 6.png │ │ │ │ │ │ ├── 7.png │ │ │ │ │ │ ├── 8.png │ │ │ │ │ │ └── 9.png │ │ │ │ │ ├── line_conn.gif │ │ │ │ │ ├── loading.gif │ │ │ │ │ ├── zTreeStandard.gif │ │ │ │ │ └── zTreeStandard.png │ │ │ │ │ └── zTreeStyle.css │ │ │ ├── demo │ │ │ │ ├── cn │ │ │ │ │ ├── asyncData │ │ │ │ │ │ ├── getNodes.php │ │ │ │ │ │ └── getNodesForBigData.php │ │ │ │ │ ├── bigdata │ │ │ │ │ │ ├── common.html │ │ │ │ │ │ ├── diy_async.html │ │ │ │ │ │ └── page.html │ │ │ │ │ ├── core │ │ │ │ │ │ ├── async.html │ │ │ │ │ │ ├── async_fun.html │ │ │ │ │ │ ├── click.html │ │ │ │ │ │ ├── custom_font.html │ │ │ │ │ │ ├── custom_icon.html │ │ │ │ │ │ ├── custom_iconSkin.html │ │ │ │ │ │ ├── expand.html │ │ │ │ │ │ ├── noicon.html │ │ │ │ │ │ ├── noline.html │ │ │ │ │ │ ├── otherMouse.html │ │ │ │ │ │ ├── searchNodes.html │ │ │ │ │ │ ├── simpleData.html │ │ │ │ │ │ ├── standardData.html │ │ │ │ │ │ ├── update_fun.html │ │ │ │ │ │ └── url.html │ │ │ │ │ ├── excheck │ │ │ │ │ │ ├── checkbox.html │ │ │ │ │ │ ├── checkbox_chkDisabled.html │ │ │ │ │ │ ├── checkbox_count.html │ │ │ │ │ │ ├── checkbox_fun.html │ │ │ │ │ │ ├── checkbox_halfCheck.html │ │ │ │ │ │ ├── checkbox_nocheck.html │ │ │ │ │ │ ├── radio.html │ │ │ │ │ │ ├── radio_chkDisabled.html │ │ │ │ │ │ ├── radio_fun.html │ │ │ │ │ │ ├── radio_halfCheck.html │ │ │ │ │ │ └── radio_nocheck.html │ │ │ │ │ ├── exedit │ │ │ │ │ │ ├── async_edit.html │ │ │ │ │ │ ├── drag.html │ │ │ │ │ │ ├── drag_fun.html │ │ │ │ │ │ ├── drag_super.html │ │ │ │ │ │ ├── edit.html │ │ │ │ │ │ ├── edit_fun.html │ │ │ │ │ │ ├── edit_super.html │ │ │ │ │ │ └── multiTree.html │ │ │ │ │ ├── exhide │ │ │ │ │ │ ├── checkbox.html │ │ │ │ │ │ ├── common.html │ │ │ │ │ │ └── radio.html │ │ │ │ │ ├── index.html │ │ │ │ │ └── super │ │ │ │ │ │ ├── asyncForAll.html │ │ │ │ │ │ ├── checkbox_radio.html │ │ │ │ │ │ ├── diydom.html │ │ │ │ │ │ ├── dragWithOther.html │ │ │ │ │ │ ├── left_menu.html │ │ │ │ │ │ ├── left_menuForOutLook.gif │ │ │ │ │ │ ├── left_menuForOutLook.html │ │ │ │ │ │ ├── left_menuForOutLook.png │ │ │ │ │ │ ├── oneclick.html │ │ │ │ │ │ ├── oneroot.html │ │ │ │ │ │ ├── rightClickMenu.html │ │ │ │ │ │ ├── select_menu.html │ │ │ │ │ │ ├── select_menu_checkbox.html │ │ │ │ │ │ ├── select_menu_radio.html │ │ │ │ │ │ └── singlepath.html │ │ │ │ └── en │ │ │ │ │ ├── asyncData │ │ │ │ │ ├── getNodes.php │ │ │ │ │ └── getNodesForBigData.php │ │ │ │ │ ├── bigdata │ │ │ │ │ ├── common.html │ │ │ │ │ ├── diy_async.html │ │ │ │ │ └── page.html │ │ │ │ │ ├── core │ │ │ │ │ ├── async.html │ │ │ │ │ ├── async_fun.html │ │ │ │ │ ├── click.html │ │ │ │ │ ├── custom_font.html │ │ │ │ │ ├── custom_icon.html │ │ │ │ │ ├── custom_iconSkin.html │ │ │ │ │ ├── expand.html │ │ │ │ │ ├── noicon.html │ │ │ │ │ ├── noline.html │ │ │ │ │ ├── otherMouse.html │ │ │ │ │ ├── searchNodes.html │ │ │ │ │ ├── simpleData.html │ │ │ │ │ ├── standardData.html │ │ │ │ │ ├── update_fun.html │ │ │ │ │ └── url.html │ │ │ │ │ ├── excheck │ │ │ │ │ ├── checkbox.html │ │ │ │ │ ├── checkbox_chkDisabled.html │ │ │ │ │ ├── checkbox_count.html │ │ │ │ │ ├── checkbox_fun.html │ │ │ │ │ ├── checkbox_halfCheck.html │ │ │ │ │ ├── checkbox_nocheck.html │ │ │ │ │ ├── radio.html │ │ │ │ │ ├── radio_chkDisabled.html │ │ │ │ │ ├── radio_fun.html │ │ │ │ │ ├── radio_halfCheck.html │ │ │ │ │ └── radio_nocheck.html │ │ │ │ │ ├── exedit │ │ │ │ │ ├── async_edit.html │ │ │ │ │ ├── drag.html │ │ │ │ │ ├── drag_fun.html │ │ │ │ │ ├── drag_super.html │ │ │ │ │ ├── edit.html │ │ │ │ │ ├── edit_fun.html │ │ │ │ │ ├── edit_super.html │ │ │ │ │ └── multiTree.html │ │ │ │ │ ├── exhide │ │ │ │ │ ├── checkbox.html │ │ │ │ │ ├── common.html │ │ │ │ │ └── radio.html │ │ │ │ │ ├── index.html │ │ │ │ │ └── super │ │ │ │ │ ├── asyncForAll.html │ │ │ │ │ ├── checkbox_radio.html │ │ │ │ │ ├── diydom.html │ │ │ │ │ ├── dragWithOther.html │ │ │ │ │ ├── left_menu.html │ │ │ │ │ ├── left_menuForOutLook.gif │ │ │ │ │ ├── left_menuForOutLook.html │ │ │ │ │ ├── left_menuForOutLook.png │ │ │ │ │ ├── oneclick.html │ │ │ │ │ ├── oneroot.html │ │ │ │ │ ├── rightClickMenu.html │ │ │ │ │ ├── select_menu.html │ │ │ │ │ ├── select_menu_checkbox.html │ │ │ │ │ ├── select_menu_radio.html │ │ │ │ │ └── singlepath.html │ │ │ ├── js │ │ │ │ ├── jquery-1.4.4.min.js │ │ │ │ ├── jquery.ztree.all-3.5.js │ │ │ │ ├── jquery.ztree.all-3.5.min.js │ │ │ │ ├── jquery.ztree.core-3.5.js │ │ │ │ ├── jquery.ztree.core-3.5.min.js │ │ │ │ ├── jquery.ztree.excheck-3.5.js │ │ │ │ ├── jquery.ztree.excheck-3.5.min.js │ │ │ │ ├── jquery.ztree.exedit-3.5.js │ │ │ │ ├── jquery.ztree.exedit-3.5.min.js │ │ │ │ ├── jquery.ztree.exhide-3.5.js │ │ │ │ └── jquery.ztree.exhide-3.5.min.js │ │ │ └── log v3.x.txt │ │ ├── css │ │ │ ├── css.css │ │ │ └── layout-default-latest.css │ │ ├── jquery-treetable │ │ │ ├── .gitignore │ │ │ ├── CHANGELOG.txt │ │ │ ├── GPL-LICENSE.txt │ │ │ ├── MIT-LICENSE.txt │ │ │ ├── README.md │ │ │ ├── index.html │ │ │ ├── javascripts │ │ │ │ ├── src │ │ │ │ │ └── jquery.treetable.js │ │ │ │ └── test │ │ │ │ │ └── jquery.treetable.test.js │ │ │ ├── stylesheets │ │ │ │ ├── jquery.treetable.css │ │ │ │ ├── jquery.treetable.theme.default.css │ │ │ │ └── screen.css │ │ │ ├── test.html │ │ │ └── treetable.jquery.json │ │ └── js │ │ │ ├── jquery-1.11.0.min.js │ │ │ └── jquery.layout-latest.min.js │ │ ├── tld │ │ └── zhang-functions.tld │ │ └── web.xml │ └── sql │ ├── shiro-data.sql │ └── shiro-schema.sql ├── shiro-example-chapter3 ├── pom.xml └── src │ ├── sql │ └── shiro-init-data.sql │ └── test │ ├── java │ └── com │ │ └── github │ │ └── zhangkaitao │ │ └── shiro │ │ └── chapter3 │ │ ├── AuthorizerTest.java │ │ ├── BaseTest.java │ │ ├── PermissionTest.java │ │ ├── RoleTest.java │ │ ├── permission │ │ ├── BitAndWildPermissionResolver.java │ │ ├── BitPermission.java │ │ └── MyRolePermissionResolver.java │ │ └── realm │ │ └── MyRealm.java │ └── resources │ ├── shiro-authorizer.ini │ ├── shiro-jdbc-authorizer.ini │ ├── shiro-permission.ini │ └── shiro-role.ini ├── shiro-example-chapter4 ├── pom.xml └── src │ └── test │ ├── java │ └── com │ │ └── github │ │ └── zhangkaitao │ │ └── shiro │ │ └── chapter4 │ │ ├── ConfigurationCreateTest.java │ │ ├── IniMainTest.java │ │ ├── NonConfigurationCreateTest.java │ │ └── authenticator │ │ └── MyAuthenticator.java │ └── resources │ ├── shiro-config-main.ini │ └── shiro-config.ini ├── shiro-example-chapter5 ├── pom.xml └── src │ ├── sql │ └── shiro-init-data.sql │ └── test │ ├── java │ └── com │ │ └── github │ │ └── zhangkaitao │ │ └── shiro │ │ └── chapter5 │ │ └── hash │ │ ├── BaseTest.java │ │ ├── CodecAndCryptoTest.java │ │ ├── PasswordTest.java │ │ ├── credentials │ │ └── RetryLimitHashedCredentialsMatcher.java │ │ └── realm │ │ ├── MyRealm.java │ │ └── MyRealm2.java │ └── resources │ ├── ehcache.xml │ ├── shiro-hashedCredentialsMatcher.ini │ ├── shiro-jdbc-hashedCredentialsMatcher.ini │ ├── shiro-jdbc-passwordservice.ini │ ├── shiro-passwordservice.ini │ └── shiro-retryLimitHashedCredentialsMatcher.ini ├── shiro-example-chapter6 ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── github │ │ │ └── zhangkaitao │ │ │ └── shiro │ │ │ └── chapter6 │ │ │ ├── JdbcTemplateUtils.java │ │ │ ├── credentials │ │ │ └── RetryLimitHashedCredentialsMatcher.java │ │ │ ├── dao │ │ │ ├── PermissionDao.java │ │ │ ├── PermissionDaoImpl.java │ │ │ ├── RoleDao.java │ │ │ ├── RoleDaoImpl.java │ │ │ ├── UserDao.java │ │ │ └── UserDaoImpl.java │ │ │ ├── entity │ │ │ ├── Permission.java │ │ │ ├── Role.java │ │ │ ├── RolePermssion.java │ │ │ ├── User.java │ │ │ └── UserRole.java │ │ │ ├── realm │ │ │ ├── MyRealm1.java │ │ │ ├── MyRealm2.java │ │ │ ├── MyRealm3.java │ │ │ └── UserRealm.java │ │ │ └── service │ │ │ ├── PasswordHelper.java │ │ │ ├── PermissionService.java │ │ │ ├── PermissionServiceImpl.java │ │ │ ├── RoleService.java │ │ │ ├── RoleServiceImpl.java │ │ │ ├── UserService.java │ │ │ └── UserServiceImpl.java │ └── resources │ │ ├── ehcache.xml │ │ ├── shiro-multirealm.ini │ │ └── shiro.ini │ ├── sql │ └── shiro.sql │ └── test │ └── java │ └── com │ └── github │ └── zhangkaitao │ └── shiro │ └── chapter6 │ ├── BaseTest.java │ ├── realm │ ├── PrincialCollectionTest.java │ └── UserRealmTest.java │ └── service │ └── ServiceTest.java ├── shiro-example-chapter7 ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── github │ │ └── zhangkaitao │ │ └── shiro │ │ └── chapter7 │ │ └── web │ │ └── servlet │ │ ├── AuthenticatedServlet.java │ │ ├── FormFilterLoginServlet.java │ │ ├── LoginServlet.java │ │ ├── LogoutServlet.java │ │ ├── PermissionServlet.java │ │ ├── RoleServlet.java │ │ └── UnAuthorizedServlet.java │ ├── resources │ ├── shiro-basicfilterlogin.ini │ ├── shiro-formfilterlogin.ini │ └── shiro.ini │ └── webapp │ ├── WEB-INF │ ├── jsp │ │ ├── authenticated.jsp │ │ ├── formfilterlogin.jsp │ │ ├── hasPermission.jsp │ │ ├── hasRole.jsp │ │ ├── login.jsp │ │ ├── loginSuccess.jsp │ │ ├── logoutSuccess.jsp │ │ └── unauthorized.jsp │ └── web.xml │ └── index.jsp ├── shiro-example-chapter8 ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── github │ │ └── zhangkaitao │ │ └── shiro │ │ └── chapter8 │ │ └── web │ │ ├── env │ │ └── MyIniWebEnvironment.java │ │ └── filter │ │ ├── AnyRolesFilter.java │ │ ├── FormLoginFilter.java │ │ ├── MyAccessControlFilter.java │ │ ├── MyAdviceFilter.java │ │ ├── MyOncePerRequestFilter.java │ │ └── MyPathMatchingFilter.java │ ├── resources │ └── shiro.ini │ └── webapp │ ├── WEB-INF │ └── web.xml │ ├── index.jsp │ ├── login.jsp │ ├── test.jsp │ └── unauthorized.jsp └── shiro-example-chapter9 ├── pom.xml └── src └── main ├── resources └── shiro.ini └── webapp ├── WEB-INF ├── tags │ ├── hasAllPermissions.tag │ ├── hasAllRoles.tag │ └── hasAnyPermissions.tag └── web.xml ├── index.jsp └── login.jsp /.gitignore: -------------------------------------------------------------------------------- 1 | .classpath 2 | .project 3 | .springBeans 4 | .settings/ 5 | target/ 6 | *.iml 7 | .idea/ 8 | -------------------------------------------------------------------------------- /shiro-example-chapter10/src/main/java/com/github/zhangkaitao/shiro/chapter10/web/listener/MySessionListener2.java: -------------------------------------------------------------------------------- 1 | package com.github.zhangkaitao.shiro.chapter10.web.listener; 2 | 3 | import org.apache.shiro.session.Session; 4 | import org.apache.shiro.session.SessionListener; 5 | import org.apache.shiro.session.SessionListenerAdapter; 6 | 7 | /** 8 | *
User: Zhang Kaitao 9 | *
Date: 14-2-8 10 | *
Version: 1.0 11 | */ 12 | public class MySessionListener2 extends SessionListenerAdapter { 13 | @Override 14 | public void onStart(Session session) { 15 | System.out.println("会话创建:" + session.getId()); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /shiro-example-chapter10/src/main/java/org/apache/shiro/ShiroConstants.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2005-2012 https://github.com/zhangkaitao 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | */ 6 | package org.apache.shiro; 7 | 8 | /** 9 | *
User: Zhang Kaitao 10 | *
Date: 13-3-22 上午7:44 11 | *
Version: 1.0
12 | */
13 | public interface ShiroConstants {
14 | /**
15 | * 当前在线会话
16 | */
17 | String ONLINE_SESSION = "online_session";
18 |
19 | /**
20 | * 仅清空本地缓存 不情况数据库的
21 | */
22 | String ONLY_CLEAR_CACHE = "online_session_only_clear_cache";
23 | }
24 |
--------------------------------------------------------------------------------
/shiro-example-chapter10/src/main/resources/ehcache.xml:
--------------------------------------------------------------------------------
1 |
2 |
User: Zhang Kaitao 7 | *
Date: 14-1-28 8 | *
Version: 1.0 9 | */ 10 | public interface PermissionDao { 11 | 12 | public Permission createPermission(Permission permission); 13 | 14 | public void deletePermission(Long permissionId); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /shiro-example-chapter11/src/main/java/com/github/zhangkaitao/shiro/chapter11/dao/RoleDao.java: -------------------------------------------------------------------------------- 1 | package com.github.zhangkaitao.shiro.chapter11.dao; 2 | 3 | import com.github.zhangkaitao.shiro.chapter11.entity.Role; 4 | 5 | /** 6 | *
User: Zhang Kaitao 7 | *
Date: 14-1-28 8 | *
Version: 1.0 9 | */ 10 | public interface RoleDao { 11 | 12 | public Role createRole(Role role); 13 | public void deleteRole(Long roleId); 14 | 15 | public void correlationPermissions(Long roleId, Long... permissionIds); 16 | public void uncorrelationPermissions(Long roleId, Long... permissionIds); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shiro-example-chapter11/src/main/java/com/github/zhangkaitao/shiro/chapter11/service/PermissionService.java: -------------------------------------------------------------------------------- 1 | package com.github.zhangkaitao.shiro.chapter11.service; 2 | 3 | import com.github.zhangkaitao.shiro.chapter11.entity.Permission; 4 | 5 | /** 6 | *
User: Zhang Kaitao 7 | *
Date: 14-1-28 8 | *
Version: 1.0
9 | */
10 | public interface PermissionService {
11 | public Permission createPermission(Permission permission);
12 | public void deletePermission(Long permissionId);
13 | }
14 |
--------------------------------------------------------------------------------
/shiro-example-chapter11/src/main/resources/password-ehcache.xml:
--------------------------------------------------------------------------------
1 |
2 |
User: Zhang Kaitao 7 | *
Date: 14-1-28 8 | *
Version: 1.0 9 | */ 10 | public interface PermissionDao { 11 | 12 | public Permission createPermission(Permission permission); 13 | 14 | public void deletePermission(Long permissionId); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /shiro-example-chapter12/src/main/java/com/github/zhangkaitao/shiro/chapter12/dao/RoleDao.java: -------------------------------------------------------------------------------- 1 | package com.github.zhangkaitao.shiro.chapter12.dao; 2 | 3 | import com.github.zhangkaitao.shiro.chapter12.entity.Role; 4 | 5 | /** 6 | *
User: Zhang Kaitao 7 | *
Date: 14-1-28 8 | *
Version: 1.0 9 | */ 10 | public interface RoleDao { 11 | 12 | public Role createRole(Role role); 13 | public void deleteRole(Long roleId); 14 | 15 | public void correlationPermissions(Long roleId, Long... permissionIds); 16 | public void uncorrelationPermissions(Long roleId, Long... permissionIds); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shiro-example-chapter12/src/main/java/com/github/zhangkaitao/shiro/chapter12/service/PermissionService.java: -------------------------------------------------------------------------------- 1 | package com.github.zhangkaitao.shiro.chapter12.service; 2 | 3 | import com.github.zhangkaitao.shiro.chapter12.entity.Permission; 4 | 5 | /** 6 | *
User: Zhang Kaitao 7 | *
Date: 14-1-28 8 | *
Version: 1.0 9 | */ 10 | public interface PermissionService { 11 | public Permission createPermission(Permission permission); 12 | public void deletePermission(Long permissionId); 13 | } 14 | -------------------------------------------------------------------------------- /shiro-example-chapter12/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 | <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %> 3 | 4 |
5 |User: Zhang Kaitao 7 | *
Date: 14-1-28 8 | *
Version: 1.0 9 | */ 10 | public interface PermissionDao { 11 | 12 | public Permission createPermission(Permission permission); 13 | 14 | public void deletePermission(Long permissionId); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /shiro-example-chapter13/src/main/java/com/github/zhangkaitao/shiro/chapter13/dao/RoleDao.java: -------------------------------------------------------------------------------- 1 | package com.github.zhangkaitao.shiro.chapter13.dao; 2 | 3 | import com.github.zhangkaitao.shiro.chapter13.entity.Role; 4 | 5 | /** 6 | *
User: Zhang Kaitao 7 | *
Date: 14-1-28 8 | *
Version: 1.0 9 | */ 10 | public interface RoleDao { 11 | 12 | public Role createRole(Role role); 13 | public void deleteRole(Long roleId); 14 | 15 | public void correlationPermissions(Long roleId, Long... permissionIds); 16 | public void uncorrelationPermissions(Long roleId, Long... permissionIds); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shiro-example-chapter13/src/main/java/com/github/zhangkaitao/shiro/chapter13/service/PermissionService.java: -------------------------------------------------------------------------------- 1 | package com.github.zhangkaitao.shiro.chapter13.service; 2 | 3 | import com.github.zhangkaitao.shiro.chapter13.entity.Permission; 4 | 5 | /** 6 | *
User: Zhang Kaitao 7 | *
Date: 14-1-28 8 | *
Version: 1.0 9 | */ 10 | public interface PermissionService { 11 | public Permission createPermission(Permission permission); 12 | public void deletePermission(Long permissionId); 13 | } 14 | -------------------------------------------------------------------------------- /shiro-example-chapter13/src/main/webapp/authenticated.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 | 3 |
4 |User: Zhang Kaitao 7 | *
Date: 14-1-28 8 | *
Version: 1.0 9 | */ 10 | public interface PermissionDao { 11 | 12 | public Permission createPermission(Permission permission); 13 | 14 | public void deletePermission(Long permissionId); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /shiro-example-chapter14/src/main/java/com/github/zhangkaitao/shiro/chapter14/dao/RoleDao.java: -------------------------------------------------------------------------------- 1 | package com.github.zhangkaitao.shiro.chapter14.dao; 2 | 3 | import com.github.zhangkaitao.shiro.chapter14.entity.Role; 4 | 5 | /** 6 | *
User: Zhang Kaitao 7 | *
Date: 14-1-28 8 | *
Version: 1.0 9 | */ 10 | public interface RoleDao { 11 | 12 | public Role createRole(Role role); 13 | public void deleteRole(Long roleId); 14 | 15 | public void correlationPermissions(Long roleId, Long... permissionIds); 16 | public void uncorrelationPermissions(Long roleId, Long... permissionIds); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shiro-example-chapter14/src/main/java/com/github/zhangkaitao/shiro/chapter14/service/PermissionService.java: -------------------------------------------------------------------------------- 1 | package com.github.zhangkaitao.shiro.chapter14.service; 2 | 3 | import com.github.zhangkaitao.shiro.chapter14.entity.Permission; 4 | 5 | /** 6 | *
User: Zhang Kaitao 7 | *
Date: 14-1-28 8 | *
Version: 1.0 9 | */ 10 | public interface PermissionService { 11 | public Permission createPermission(Permission permission); 12 | public void deletePermission(Long permissionId); 13 | } 14 | -------------------------------------------------------------------------------- /shiro-example-chapter14/src/main/webapp/authenticated.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 | 3 |
4 |User: Zhang Kaitao 7 | *
Date: 14-1-28 8 | *
Version: 1.0 9 | */ 10 | public interface PermissionDao { 11 | 12 | public Permission createPermission(Permission permission); 13 | 14 | public void deletePermission(Long permissionId); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /shiro-example-chapter15-client/src/main/java/com/github/zhangkaitao/shiro/chapter15/dao/RoleDao.java: -------------------------------------------------------------------------------- 1 | package com.github.zhangkaitao.shiro.chapter15.dao; 2 | 3 | import com.github.zhangkaitao.shiro.chapter15.entity.Role; 4 | 5 | /** 6 | *
User: Zhang Kaitao 7 | *
Date: 14-1-28 8 | *
Version: 1.0 9 | */ 10 | public interface RoleDao { 11 | 12 | public Role createRole(Role role); 13 | public void deleteRole(Long roleId); 14 | 15 | public void correlationPermissions(Long roleId, Long... permissionIds); 16 | public void uncorrelationPermissions(Long roleId, Long... permissionIds); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /shiro-example-chapter15-client/src/main/java/com/github/zhangkaitao/shiro/chapter15/service/PermissionService.java: -------------------------------------------------------------------------------- 1 | package com.github.zhangkaitao.shiro.chapter15.service; 2 | 3 | import com.github.zhangkaitao.shiro.chapter15.entity.Permission; 4 | 5 | /** 6 | *
User: Zhang Kaitao 7 | *
Date: 14-1-28 8 | *
Version: 1.0 9 | */ 10 | public interface PermissionService { 11 | public Permission createPermission(Permission permission); 12 | public void deletePermission(Long permissionId); 13 | } 14 | -------------------------------------------------------------------------------- /shiro-example-chapter15-client/src/main/webapp/casFailure.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 | 3 |
4 |User: Zhang Kaitao 5 | *
Date: 14-2-15 6 | *
Version: 1.0 7 | */ 8 | public class Constants { 9 | public static final String CURRENT_USER = "user"; 10 | } 11 | -------------------------------------------------------------------------------- /shiro-example-chapter16/src/main/java/com/github/zhangkaitao/shiro/chapter16/dao/RoleDao.java: -------------------------------------------------------------------------------- 1 | package com.github.zhangkaitao.shiro.chapter16.dao; 2 | 3 | import com.github.zhangkaitao.shiro.chapter16.entity.Role; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | *
User: Zhang Kaitao 9 | *
Date: 14-1-28 10 | *
Version: 1.0
11 | */
12 | public interface RoleDao {
13 |
14 | public Role createRole(Role role);
15 | public Role updateRole(Role role);
16 | public void deleteRole(Long roleId);
17 |
18 | public Role findOne(Long roleId);
19 | public List User: Zhang Kaitao
9 | * Date: 14-1-28
10 | * Version: 1.0
11 | */
12 | public interface UserDao {
13 |
14 | public User createUser(User user);
15 | public User updateUser(User user);
16 | public void deleteUser(Long userId);
17 |
18 | User findOne(Long userId);
19 |
20 | List zTree v3.x 内部的全部方法都可以通过 $.fn.zTree._z 进行调用,开放出来是为了更便于大家开发制作自己的 zTree 插件。 如无特殊需求请勿使用此对象,以及修改此对象内部的各个函数。 zTree 的唯一标识,初始化后,等于 用户定义的 zTree 容器的 id 属性值。 请勿进行初始化 或 修改,属于内部参数。 zTree 容器的 jQuery 对象,主要功能:便于操作。 请勿进行初始化 或 修改,属于内部参数。 用于保存节点的其他自定义数据信息,不要与 zTree 使用的属性相同即可,用户可随意设定。 zTree 对象使用的 setting 配置数据,详细请参考 “setting 配置详解”中的各个属性详细说明 v3.x 取消了原先操作 setting 的方法,让用户可以较自由的修改参数,但请注意,对于 zTree 初始化有影响的参数后期修改是不会起作用的,请对各个属性有较深入的了解以后再考虑进行修改。 zTree DOM's jQuery object, the main function: easy to internal operations. Do not initialize or modify it, it is an internal argument. User: Zhang Kaitao
7 | * Date: 14-2-18
8 | * Version: 1.0
9 | */
10 | public class OAuth2AuthenticationException extends AuthenticationException {
11 |
12 | public OAuth2AuthenticationException(Throwable cause) {
13 | super(cause);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/shiro-example-chapter17-client/src/main/webapp/index.jsp:
--------------------------------------------------------------------------------
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %>
2 | <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
3 |
4 | User: Zhang Kaitao
5 | * Date: 14-2-17
6 | * Version: 1.0
7 | */
8 | public class Constants {
9 |
10 | public static String RESOURCE_SERVER_NAME = "chapter17-server";
11 | public static final String INVALID_CLIENT_DESCRIPTION = "客户端验证失败,如错误的client_id/client_secret。";
12 | }
13 |
--------------------------------------------------------------------------------
/shiro-example-chapter17-server/src/main/resources/resources.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tencent-rep/zhangkaitao-shiro-example/650a10d3a76546ec4895501e1c221af3d385f8f3/shiro-example-chapter17-server/src/main/resources/resources.properties
--------------------------------------------------------------------------------
/shiro-example-chapter17-server/src/main/webapp/WEB-INF/static/css/css.css:
--------------------------------------------------------------------------------
1 | .table {
2 | width:80%;
3 | font:14px;
4 | color:#333333;
5 | text-align:center;
6 | border-collapse:collapse;
7 | }
8 | .table td,.table th{
9 | border:1px solid #333333;
10 | padding: 10px;
11 | }
12 |
13 | .message {
14 | background: #eee;
15 | border: 1px solid #eee;
16 | margin: 10px 0;
17 | padding: 10px;
18 | }
19 |
20 | .form-group {
21 | margin: 10px 0;
22 | }
23 |
24 | .form-group label {
25 | width: 130px;
26 | float: left;
27 | }
--------------------------------------------------------------------------------
/shiro-example-chapter17-server/src/main/webapp/index.jsp:
--------------------------------------------------------------------------------
1 |
2 | User: Zhang Kaitao
5 | * Date: 14-2-15
6 | * Version: 1.0
7 | */
8 | public class Constants {
9 | public static final String CURRENT_USER = "user";
10 | }
11 |
--------------------------------------------------------------------------------
/shiro-example-chapter18/src/main/java/com/github/zhangkaitao/shiro/chapter18/dao/RoleDao.java:
--------------------------------------------------------------------------------
1 | package com.github.zhangkaitao.shiro.chapter18.dao;
2 |
3 | import com.github.zhangkaitao.shiro.chapter18.entity.Role;
4 |
5 | import java.util.List;
6 |
7 | /**
8 | * User: Zhang Kaitao
9 | * Date: 14-1-28
10 | * Version: 1.0
11 | */
12 | public interface RoleDao {
13 |
14 | public Role createRole(Role role);
15 | public Role updateRole(Role role);
16 | public void deleteRole(Long roleId);
17 |
18 | public Role findOne(Long roleId);
19 | public List User: Zhang Kaitao
9 | * Date: 14-1-28
10 | * Version: 1.0
11 | */
12 | public interface UserDao {
13 |
14 | public User createUser(User user);
15 | public User updateUser(User user);
16 | public void deleteUser(Long userId);
17 |
18 | User findOne(Long userId);
19 |
20 | List zTree v3.x 内部的全部方法都可以通过 $.fn.zTree._z 进行调用,开放出来是为了更便于大家开发制作自己的 zTree 插件。 如无特殊需求请勿使用此对象,以及修改此对象内部的各个函数。 zTree 的唯一标识,初始化后,等于 用户定义的 zTree 容器的 id 属性值。 请勿进行初始化 或 修改,属于内部参数。 zTree 容器的 jQuery 对象,主要功能:便于操作。 请勿进行初始化 或 修改,属于内部参数。 用于保存节点的其他自定义数据信息,不要与 zTree 使用的属性相同即可,用户可随意设定。 zTree 对象使用的 setting 配置数据,详细请参考 “setting 配置详解”中的各个属性详细说明 v3.x 取消了原先操作 setting 的方法,让用户可以较自由的修改参数,但请注意,对于 zTree 初始化有影响的参数后期修改是不会起作用的,请对各个属性有较深入的了解以后再考虑进行修改。 zTree DOM's jQuery object, the main function: easy to internal operations. Do not initialize or modify it, it is an internal argument. User: Zhang Kaitao
5 | * Date: 14-2-15
6 | * Version: 1.0
7 | */
8 | public class Constants {
9 | public static final String CURRENT_USER = "user";
10 | }
11 |
--------------------------------------------------------------------------------
/shiro-example-chapter19/src/main/java/com/github/zhangkaitao/shiro/chapter19/dao/UserDao.java:
--------------------------------------------------------------------------------
1 | package com.github.zhangkaitao.shiro.chapter19.dao;
2 |
3 | import com.github.zhangkaitao.shiro.chapter19.entity.User;
4 |
5 | import java.util.List;
6 |
7 | /**
8 | * User: Zhang Kaitao
9 | * Date: 14-1-28
10 | * Version: 1.0
11 | */
12 | public interface UserDao {
13 |
14 | public User createUser(User user);
15 | public User updateUser(User user);
16 | public void deleteUser(Long userId);
17 |
18 | User findOne(Long userId);
19 |
20 | List zTree v3.x 内部的全部方法都可以通过 $.fn.zTree._z 进行调用,开放出来是为了更便于大家开发制作自己的 zTree 插件。 如无特殊需求请勿使用此对象,以及修改此对象内部的各个函数。 zTree 的唯一标识,初始化后,等于 用户定义的 zTree 容器的 id 属性值。 请勿进行初始化 或 修改,属于内部参数。 zTree 容器的 jQuery 对象,主要功能:便于操作。 请勿进行初始化 或 修改,属于内部参数。 用于保存节点的其他自定义数据信息,不要与 zTree 使用的属性相同即可,用户可随意设定。 zTree 对象使用的 setting 配置数据,详细请参考 “setting 配置详解”中的各个属性详细说明 v3.x 取消了原先操作 setting 的方法,让用户可以较自由的修改参数,但请注意,对于 zTree 初始化有影响的参数后期修改是不会起作用的,请对各个属性有较深入的了解以后再考虑进行修改。 zTree DOM's jQuery object, the main function: easy to internal operations. Do not initialize or modify it, it is an internal argument. User: Zhang Kaitao
5 | * Date: 14-2-26
6 | * Version: 1.0
7 | */
8 | public class Constants {
9 | public static final String PARAM_DIGEST = "digest";
10 | public static final String PARAM_USERNAME = "username";
11 | }
12 |
--------------------------------------------------------------------------------
/shiro-example-chapter20/src/main/java/com/github/zhangkaitao/shiro/chapter20/web/controller/ServiceController.java:
--------------------------------------------------------------------------------
1 | package com.github.zhangkaitao.shiro.chapter20.web.controller;
2 |
3 | import org.springframework.web.bind.annotation.RequestMapping;
4 | import org.springframework.web.bind.annotation.RestController;
5 |
6 | /**
7 | * User: Zhang Kaitao
8 | * Date: 14-2-26
9 | * Version: 1.0
10 | */
11 | @RestController
12 | public class ServiceController {
13 |
14 | @RequestMapping("/hello")
15 | public String hello1(String[] param1, String param2) {
16 | return "hello" + param1[0] + param1[1] + param2;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/shiro-example-chapter21/src/main/java/com/github/zhangkaitao/shiro/chapter21/Constants.java:
--------------------------------------------------------------------------------
1 | package com.github.zhangkaitao.shiro.chapter21;
2 |
3 | /**
4 | * User: Zhang Kaitao
5 | * Date: 14-2-15
6 | * Version: 1.0
7 | */
8 | public class Constants {
9 | public static final String CURRENT_USER = "user";
10 | }
11 |
--------------------------------------------------------------------------------
/shiro-example-chapter21/src/main/java/com/github/zhangkaitao/shiro/chapter21/dao/RoleDao.java:
--------------------------------------------------------------------------------
1 | package com.github.zhangkaitao.shiro.chapter21.dao;
2 |
3 | import com.github.zhangkaitao.shiro.chapter21.entity.Role;
4 |
5 | import java.util.List;
6 |
7 | /**
8 | * User: Zhang Kaitao
9 | * Date: 14-1-28
10 | * Version: 1.0
11 | */
12 | public interface RoleDao {
13 |
14 | public Role createRole(Role role);
15 | public Role updateRole(Role role);
16 | public void deleteRole(Long roleId);
17 |
18 | public Role findOne(Long roleId);
19 | public List User: Zhang Kaitao
9 | * Date: 14-1-28
10 | * Version: 1.0
11 | */
12 | public interface UserDao {
13 |
14 | public User createUser(User user);
15 | public User updateUser(User user);
16 | public void deleteUser(Long userId);
17 |
18 | User findOne(Long userId);
19 |
20 | List zTree v3.x 内部的全部方法都可以通过 $.fn.zTree._z 进行调用,开放出来是为了更便于大家开发制作自己的 zTree 插件。 如无特殊需求请勿使用此对象,以及修改此对象内部的各个函数。 zTree 的唯一标识,初始化后,等于 用户定义的 zTree 容器的 id 属性值。 请勿进行初始化 或 修改,属于内部参数。 zTree 容器的 jQuery 对象,主要功能:便于操作。 请勿进行初始化 或 修改,属于内部参数。 用于保存节点的其他自定义数据信息,不要与 zTree 使用的属性相同即可,用户可随意设定。 zTree 对象使用的 setting 配置数据,详细请参考 “setting 配置详解”中的各个属性详细说明 v3.x 取消了原先操作 setting 的方法,让用户可以较自由的修改参数,但请注意,对于 zTree 初始化有影响的参数后期修改是不会起作用的,请对各个属性有较深入的了解以后再考虑进行修改。 zTree DOM's jQuery object, the main function: easy to internal operations. Do not initialize or modify it, it is an internal argument. User: Zhang Kaitao
5 | * Date: 14-2-15
6 | * Version: 1.0
7 | */
8 | public class Constants {
9 | public static final String CURRENT_USER = "user";
10 | }
11 |
--------------------------------------------------------------------------------
/shiro-example-chapter22/src/main/java/com/github/zhangkaitao/shiro/chapter22/dao/RoleDao.java:
--------------------------------------------------------------------------------
1 | package com.github.zhangkaitao.shiro.chapter22.dao;
2 |
3 | import com.github.zhangkaitao.shiro.chapter22.entity.Role;
4 |
5 | import java.util.List;
6 |
7 | /**
8 | * User: Zhang Kaitao
9 | * Date: 14-1-28
10 | * Version: 1.0
11 | */
12 | public interface RoleDao {
13 |
14 | public Role createRole(Role role);
15 | public Role updateRole(Role role);
16 | public void deleteRole(Long roleId);
17 |
18 | public Role findOne(Long roleId);
19 | public List zTree v3.x 内部的全部方法都可以通过 $.fn.zTree._z 进行调用,开放出来是为了更便于大家开发制作自己的 zTree 插件。 如无特殊需求请勿使用此对象,以及修改此对象内部的各个函数。 zTree 的唯一标识,初始化后,等于 用户定义的 zTree 容器的 id 属性值。 请勿进行初始化 或 修改,属于内部参数。 zTree 容器的 jQuery 对象,主要功能:便于操作。 请勿进行初始化 或 修改,属于内部参数。 用于保存节点的其他自定义数据信息,不要与 zTree 使用的属性相同即可,用户可随意设定。 zTree 对象使用的 setting 配置数据,详细请参考 “setting 配置详解”中的各个属性详细说明 v3.x 取消了原先操作 setting 的方法,让用户可以较自由的修改参数,但请注意,对于 zTree 初始化有影响的参数后期修改是不会起作用的,请对各个属性有较深入的了解以后再考虑进行修改。 zTree DOM's jQuery object, the main function: easy to internal operations. Do not initialize or modify it, it is an internal argument. User: Zhang Kaitao
5 | * Date: 14-2-15
6 | * Version: 1.0
7 | */
8 | public class Constants {
9 | public static final String CURRENT_USER = "user";
10 |
11 | public static final String SERVER_APP_KEY = "645ba616-370a-43a8-a8e0-993e7a590cf0";
12 | }
13 |
--------------------------------------------------------------------------------
/shiro-example-chapter23-server/src/main/java/com/github/zhangkaitao/shiro/chapter23/dao/AppDao.java:
--------------------------------------------------------------------------------
1 | package com.github.zhangkaitao.shiro.chapter23.dao;
2 |
3 | import com.github.zhangkaitao.shiro.chapter23.entity.App;
4 |
5 | import java.util.List;
6 |
7 | /**
8 | * User: Zhang Kaitao
9 | * Date: 14-1-28
10 | * Version: 1.0
11 | */
12 | public interface AppDao {
13 |
14 | public App createApp(App app);
15 | public App updateApp(App app);
16 | public void deleteApp(Long appId);
17 |
18 | public App findOne(Long appId);
19 | public List User: Zhang Kaitao
9 | * Date: 14-1-28
10 | * Version: 1.0
11 | */
12 | public interface RoleDao {
13 |
14 | public Role createRole(Role role);
15 | public Role updateRole(Role role);
16 | public void deleteRole(Long roleId);
17 |
18 | public Role findOne(Long roleId);
19 | public List zTree v3.x 内部的全部方法都可以通过 $.fn.zTree._z 进行调用,开放出来是为了更便于大家开发制作自己的 zTree 插件。 如无特殊需求请勿使用此对象,以及修改此对象内部的各个函数。 zTree 的唯一标识,初始化后,等于 用户定义的 zTree 容器的 id 属性值。 请勿进行初始化 或 修改,属于内部参数。 zTree 容器的 jQuery 对象,主要功能:便于操作。 请勿进行初始化 或 修改,属于内部参数。 用于保存节点的其他自定义数据信息,不要与 zTree 使用的属性相同即可,用户可随意设定。 zTree 对象使用的 setting 配置数据,详细请参考 “setting 配置详解”中的各个属性详细说明 v3.x 取消了原先操作 setting 的方法,让用户可以较自由的修改参数,但请注意,对于 zTree 初始化有影响的参数后期修改是不会起作用的,请对各个属性有较深入的了解以后再考虑进行修改。 zTree DOM's jQuery object, the main function: easy to internal operations. Do not initialize or modify it, it is an internal argument. User: Zhang Kaitao
5 | * Date: 14-2-15
6 | * Version: 1.0
7 | */
8 | public class Constants {
9 | public static final String CURRENT_USER = "user";
10 | public static final String SESSION_FORCE_LOGOUT_KEY = "session.force.logout";
11 | }
12 |
--------------------------------------------------------------------------------
/shiro-example-chapter24/src/main/java/com/github/zhangkaitao/shiro/chapter24/dao/RoleDao.java:
--------------------------------------------------------------------------------
1 | package com.github.zhangkaitao.shiro.chapter24.dao;
2 |
3 | import com.github.zhangkaitao.shiro.chapter24.entity.Role;
4 |
5 | import java.util.List;
6 |
7 | /**
8 | * User: Zhang Kaitao
9 | * Date: 14-1-28
10 | * Version: 1.0
11 | */
12 | public interface RoleDao {
13 |
14 | public Role createRole(Role role);
15 | public Role updateRole(Role role);
16 | public void deleteRole(Long roleId);
17 |
18 | public Role findOne(Long roleId);
19 | public List zTree v3.x 内部的全部方法都可以通过 $.fn.zTree._z 进行调用,开放出来是为了更便于大家开发制作自己的 zTree 插件。 如无特殊需求请勿使用此对象,以及修改此对象内部的各个函数。 zTree 的唯一标识,初始化后,等于 用户定义的 zTree 容器的 id 属性值。 请勿进行初始化 或 修改,属于内部参数。 zTree 容器的 jQuery 对象,主要功能:便于操作。 请勿进行初始化 或 修改,属于内部参数。 用于保存节点的其他自定义数据信息,不要与 zTree 使用的属性相同即可,用户可随意设定。 zTree 对象使用的 setting 配置数据,详细请参考 “setting 配置详解”中的各个属性详细说明 v3.x 取消了原先操作 setting 的方法,让用户可以较自由的修改参数,但请注意,对于 zTree 初始化有影响的参数后期修改是不会起作用的,请对各个属性有较深入的了解以后再考虑进行修改。 zTree DOM's jQuery object, the main function: easy to internal operations. Do not initialize or modify it, it is an internal argument. User: Zhang Kaitao
7 | * Date: 14-1-28
8 | * Version: 1.0
9 | */
10 | public interface PermissionDao {
11 |
12 | public Permission createPermission(Permission permission);
13 |
14 | public void deletePermission(Long permissionId);
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/shiro-example-chapter6/src/main/java/com/github/zhangkaitao/shiro/chapter6/dao/RoleDao.java:
--------------------------------------------------------------------------------
1 | package com.github.zhangkaitao.shiro.chapter6.dao;
2 |
3 | import com.github.zhangkaitao.shiro.chapter6.entity.Role;
4 |
5 | /**
6 | * User: Zhang Kaitao
7 | * Date: 14-1-28
8 | * Version: 1.0
9 | */
10 | public interface RoleDao {
11 |
12 | public Role createRole(Role role);
13 | public void deleteRole(Long roleId);
14 |
15 | public void correlationPermissions(Long roleId, Long... permissionIds);
16 | public void uncorrelationPermissions(Long roleId, Long... permissionIds);
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/shiro-example-chapter6/src/main/java/com/github/zhangkaitao/shiro/chapter6/service/PermissionService.java:
--------------------------------------------------------------------------------
1 | package com.github.zhangkaitao.shiro.chapter6.service;
2 |
3 | import com.github.zhangkaitao.shiro.chapter6.entity.Permission;
4 |
5 | /**
6 | * User: Zhang Kaitao
7 | * Date: 14-1-28
8 | * Version: 1.0
9 | */
10 | public interface PermissionService {
11 | public Permission createPermission(Permission permission);
12 | public void deletePermission(Long permissionId);
13 | }
14 |
--------------------------------------------------------------------------------
/shiro-example-chapter6/src/main/resources/ehcache.xml:
--------------------------------------------------------------------------------
1 |
2 | JSON$.fn.zTree._z
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | Stringsetting.treeId
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | Objectsetting.treeObj
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | ?treeNode.* DIY *
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | treeNode 举例
12 | 1. 设置节点的备用英文名称
13 |
14 | var node = { "id":1, "name":"test1", "ename":"test eName"};
JSONzTreeObj.setting
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | Objectsetting.treeObj
4 | Overview[ depends on jquery.ztree.core js ]
5 |
7 |
10 |
9 | Hello World!
4 |
5 |
6 |
--------------------------------------------------------------------------------
/shiro-example-chapter17-server/src/sql/shiro-data.sql:
--------------------------------------------------------------------------------
1 | DELIMITER ;
2 | delete from oauth2_user;
3 | delete from oauth2_client;
4 |
5 | insert into oauth2_user values(1,'admin','d3c59d25033dbf980d29554025c23a75','8d78869f470951332959580424d4bf4f');
6 | insert into oauth2_client values(1,'chapter17-client','c1ebe466-1cdc-4bd3-ab69-77c3561b9dee','d8346ea2-6017-43ed-ad68-19c0f971738b');
--------------------------------------------------------------------------------
/shiro-example-chapter18/src/main/java/com/github/zhangkaitao/shiro/chapter18/Constants.java:
--------------------------------------------------------------------------------
1 | package com.github.zhangkaitao.shiro.chapter18;
2 |
3 | /**
4 | * JSON$.fn.zTree._z
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | Stringsetting.treeId
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | Objectsetting.treeObj
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | ?treeNode.* DIY *
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | treeNode 举例
12 | 1. 设置节点的备用英文名称
13 |
14 | var node = { "id":1, "name":"test1", "ename":"test eName"};
JSONzTreeObj.setting
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | Objectsetting.treeObj
4 | Overview[ depends on jquery.ztree.core js ]
5 | JSON$.fn.zTree._z
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | Stringsetting.treeId
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | Objectsetting.treeObj
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | ?treeNode.* DIY *
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | treeNode 举例
12 | 1. 设置节点的备用英文名称
13 |
14 | var node = { "id":1, "name":"test1", "ename":"test eName"};
JSONzTreeObj.setting
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | Objectsetting.treeObj
4 | Overview[ depends on jquery.ztree.core js ]
5 | JSON$.fn.zTree._z
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | Stringsetting.treeId
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | Objectsetting.treeObj
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | ?treeNode.* DIY *
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | treeNode 举例
12 | 1. 设置节点的备用英文名称
13 |
14 | var node = { "id":1, "name":"test1", "ename":"test eName"};
JSONzTreeObj.setting
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | Objectsetting.treeObj
4 | Overview[ depends on jquery.ztree.core js ]
5 | JSON$.fn.zTree._z
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | Stringsetting.treeId
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | Objectsetting.treeObj
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | ?treeNode.* DIY *
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | treeNode 举例
12 | 1. 设置节点的备用英文名称
13 |
14 | var node = { "id":1, "name":"test1", "ename":"test eName"};
JSONzTreeObj.setting
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | Objectsetting.treeObj
4 | Overview[ depends on jquery.ztree.core js ]
5 | JSON$.fn.zTree._z
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | Stringsetting.treeId
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | Objectsetting.treeObj
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | ?treeNode.* DIY *
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | treeNode 举例
12 | 1. 设置节点的备用英文名称
13 |
14 | var node = { "id":1, "name":"test1", "ename":"test eName"};
JSONzTreeObj.setting
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | Objectsetting.treeObj
4 | Overview[ depends on jquery.ztree.core js ]
5 | JSON$.fn.zTree._z
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | Stringsetting.treeId
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | Objectsetting.treeObj
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | ?treeNode.* DIY *
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | treeNode 举例
12 | 1. 设置节点的备用英文名称
13 |
14 | var node = { "id":1, "name":"test1", "ename":"test eName"};
JSONzTreeObj.setting
4 | 概述[ 依赖 jquery.ztree.core 核心 js ]
5 | Objectsetting.treeObj
4 | Overview[ depends on jquery.ztree.core js ]
5 |
9 | 已身份认证
10 | 角色授权
11 | 权限授权
12 |
13 |
14 |
--------------------------------------------------------------------------------
/shiro-example-chapter8/src/main/webapp/index.jsp:
--------------------------------------------------------------------------------
1 |
2 |
3 | login
4 |
5 |
6 |
--------------------------------------------------------------------------------
/shiro-example-chapter8/src/main/webapp/login.jsp:
--------------------------------------------------------------------------------
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %>
2 |
3 |
4 |