package com.er07.book.springmvc.util; import java.io.File; import java.lang.reflect.Method; import java.net.URL; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import com.er07.book.springmvc.service.RightService; /** * 增加权限 * @version 1.0 @author 高元东 * I'm glad to share with you my learning techniques! * @mailto 466862016@qq.com * 2013-3-11 */ public class RegRightUtils { private static final String rootUrl = "/spring"; private static RightService rightService; /*** * * @mailto 466862016@qq.com * @param args * @throws Exception */ public static void main(String[] args) throws Exception { ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); rightService = context.getBean(RightService.class); ClassLoader classLoader = RegRightUtils.class.getClassLoader(); URL url = classLoader.getResource("com/er07/book/springmvc/controller"); String rootPath = url.getPath().toString(); File rootFile = new File(rootPath); File [] files = rootFile.listFiles(); for(File f: files) { System.err.println(f.getName()); String className = f.getName().substring(0, f.getName().indexOf(".class")); Class clazz = Class.forName("com.er07.book.springmvc.controller."+className); parseClass(clazz); //解析 出url } } /** * * 规定 第一个 路径目录为调用的 方法 * 解析 出此类上的requestMapping 注解的value 值 * @mailto 466862016@qq.com * @param clazz */ public static void parseClass(Class clazz) { if(clazz.isAnnotationPresent(Controller.class)) { //是否为一个controller ? String classUrl =""; if(clazz.isAnnotationPresent(RequestMapping.class)) { RequestMapping requestMapping_clazz = (RequestMapping) clazz.getAnnotation(RequestMapping.class); classUrl = requestMapping_clazz.value()[0]; if(classUrl.equals("/")) { //如果是"/" 的话 制空 classUrl =""; } } Method [] ms = clazz.getDeclaredMethods(); for(Method m :ms) { if(m.isAnnotationPresent(RequestMapping.class)) { RequestMapping requestMapping_method = m.getAnnotation(RequestMapping.class); String methodUrl = requestMapping_method.value()[0]; int index = methodUrl.indexOf("/"); index = methodUrl.indexOf("/",index+1); if(index!=-1) { //如果存在 则进行截取前面的url methodUrl = methodUrl.substring(0, index); } String resultUrl = rootUrl+classUrl+methodUrl; rightService.appendRightByUrl(resultUrl); } } } } }
package com.er07.book.springmvc.service.impl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.er07.book.springmvc.dao.RightDao; import com.er07.book.springmvc.model.Right; import com.er07.book.springmvc.service.RightService; import com.er07.book.springmvc.util.StringUtil; import com.er07.book.springmvc.util.ValidateUtil; /** * 权限管理 * @version 1.0 @author 高元东 * I'm glad to share with you my learning techniques! * @mailto 466862016@qq.com * 2013-3-11 */ @Service public class RightServiceImpl implements RightService { @Resource private RightDao rightDao; /** * 保存或者更新权限 根据要求生成权限码 * @mailto 466862016@qq.com * @param right */ public void saveOrUpdateRight(Right right) { long rightCode =1l; int rightPos =0; //是否插入 if(right.getId()==null) { String hql ="select max(r.rightPos),max(r.rightCode) from Right r where r.rightPos = (select max(rr.rightPos) from Right rr)"; Object[] obj = (Object[]) this.rightDao.uniqueResult(hql); Integer topPos = (Integer) obj[0]; Long topCode = (Long) obj[1]; if(topPos==null) { rightCode = 1; rightPos = 0; } else { //达到没有最大值吗? if(topCode>=1l<<60) {//达到最大值 rightPos = topPos+1; rightCode =1l; } else { //没有达到最大值 rightCode = topCode<<1; rightPos = topPos; } } //设置 权限位和权限码 保存在数据库中 right.setRightCode(rightCode); right.setRightPos(rightPos); } this.rightDao.saveOrUpdateEntity(right); } /** * 通过 url 增加或修改权限 */ public void appendRightByUrl(String url) { //查询 此url 在数据库中是否存在 此权限 String hql = "from Right where rightUrl =?"; Right r = (Right) this.rightDao.uniqueResult(hql, url); if(r==null) { //不存在 , 插入数据库中 Right newRight = new Right(); newRight.setRightUrl(url); this.saveOrUpdateRight(newRight); } } /** * 查找在指定范围内的 权限集合 */ public List<Right> findRangeRight(Integer[] ownRightIds) { if(!ValidateUtil.isValid(ownRightIds)) { return null; } else { String hql = "from Right where id in("+StringUtil.arr2Str(ownRightIds)+")"; List<Right> rights = this.rightDao.findEntityByHQL(hql); return rights; } } /*** * 查找所有权限 */ public List<Right> findAllRights() { return this.rightDao.findEntityByHQL("from Right"); } /** * 查找最大的权限位 */ public int findMaxRightPos() { String hql ="select max(rightPos) from Right"; Integer max = (Integer) this.rightDao.uniqueResult(hql); return max==null?0:max; } }
相关推荐
"EasyUI+SpringMVC权限管理"是一个常见的技术组合,用于实现Web应用中的用户权限控制。EasyUI是一款基于jQuery的前端框架,而SpringMVC是Spring框架的一个模块,主要用于处理Web请求。下面将详细阐述这两个技术如何...
【标题】"基于maven做的一个权限 SpringMVC+Spring + hibernate" 涉及的知识点主要包括: 1. Maven:Maven是一个项目管理和综合工具,它管理项目的构建、报告和文档,通过依赖管理和项目信息管理,使得Java开发更加...
1. **日期时间工具类**:在处理日期和时间时,开发者通常会创建一个工具类,如`DateTimeUtil`,它封装了Java 8的`java.time`库或Joda-Time库,提供格式化、解析和日期操作的方法。 2. **字符串工具类**:例如`...
在Java Web开发领域,SpringMVC是Spring框架的一个重要组成部分,它是一个用于构建高效、灵活的Web应用程序的模型-视图-控制器(MVC)实现。手写SpringMVC的过程可以帮助开发者深入理解其工作原理,从而更好地运用和...
1. **SpringMVC的角色**:在权限管理中,SpringMVC可以通过拦截器(Interceptor)实现对请求的预处理。拦截器可以在请求到达目标控制器之前执行某些操作,如检查用户登录状态、验证权限等。通过自定义拦截器,我们...
1、手写springmvc框架及分析springmvc源码.zip1、手写springmvc框架及分析springmvc源码.zip1、手写springmvc框架及分析springmvc源码.zip1、手写springmvc框架及分析springmvc源码.zip1、手写springmvc框架及分析...
本文主要目的是记录自己基于SpringMVC实现的文件上传和下载的工具类的编写,代码经过测试可以直接运行在以后的项目中。开发的主要思路是对上传和下载文件进行抽象,把上传和下载的核心功能抽取出来分装成类。
在本项目中,我们主要探讨的是一个基于SpringMVC、Mybatis、Mysql数据库的完整应用实例,同时涉及到了权限管理和拦截器的实现。这个实例提供了详细的源代码,包括SQL脚本,以及一些实用的工具类,使得开发者可以快速...
在IT行业中,构建一个权限控制系统是企业级应用的常见需求,它用于管理用户对系统资源的访问权限。本文将深入探讨如何使用SpringMVC和Mybatis框架整合来实现这样一个简单的权限控制系统。 首先,SpringMVC作为...
SpringMVC作为Java Web开发中的一个强大框架,能够很好地支持这种架构设计。以下将详细介绍如何在SpringMVC项目中实现读写分离。 **读写分离的基本概念** 读写分离的核心思想是将数据库的读操作和写操作分散到不同...
综上所述,这个基于Spring+SpringMvc+MiniJdbc+Shiro的权限管理系统展示了如何利用现代Java技术栈构建一个功能完备、安全可靠的权限管理解决方案。每个组件都在其职责范围内发挥着关键作用,共同构成了一个高效的...
综上所述,"SpringMVC权限项目"是一个涵盖多个技术层面的综合性任务,涉及到身份验证、授权、角色权限分配、会话管理、异常处理等多个关键环节,旨在构建一个安全、可控的Web应用环境。通过熟练掌握这些知识点,...
通过以上描述,我们可以看出这个项目是一个完整的权限管理系统,结合了SpringMVC的强大功能和Shiro的安全特性,同时还利用了Maven、Mybatis、EasyUI和MySQL等工具,为开发者提供了一个高效的开发环境。通过深入学习...
例如,`Generator`这个文件可能就是一个自动生成工具的配置或执行脚本,通过它,我们可以定制生成规则,如选择数据库、设置命名策略等,然后一键生成所有相关的实体类和其他辅助类。 总的来说,SpringMVC实体层自动...
在提供的"SpringMVC学习的时候写的一个小站源码"中,你可以看到实际的代码示例,如何将上述理论知识应用于实际项目。对于初学者,这是一个很好的起点,可以了解SpringMVC和Freemarker的组合使用,从而加深对Web开发...
在MiniSpringMVC中,我们可以通过一个简单的类来模拟这个过程。 5. **ViewResolver**:最后,ViewResolver负责解析ModelAndView中的视图名,找到实际的视图进行渲染。我们可以实现一个基于文件路径的视图解析器,将...
本项目"springmvc+extjs4mvc实现权限管理"是利用SpringMVC框架和ExtJS4MVC技术来搭建一个完整的权限控制系统,旨在提供精细的用户、角色和资源的权限分配。 首先,SpringMVC作为Java Web开发中的主流MVC框架,以其...
SpringMVC是Spring框架的一部分,它是一个用于构建Web应用程序的轻量级、模型-视图-控制器(MVC)框架。SpringMVC的核心功能包括请求分发、模型绑定、数据验证、本地化、视图解析等。它的设计允许开发者通过简单的...
"Shiro+SpringMVC权限管理"是一个常见的解决方案,用于构建高效、安全的学生信息管理系统。这个系统利用了SpringMVC作为前端控制器框架,而Apache Shiro作为安全组件,实现了用户身份验证、授权和会话管理等功能。 ...
SpringMVC实现用户角色管理(springmvc角色权限管理) SpringMVC用户管理实现 通过SpringMVC与JSP实现用户角色管理 SpringMVC实现用户角色管理(springmvc角色权限管理