1、添加maven支持编辑pom.xml文件写持久化类和映射文件写spring的配置文件 该系统要创建的映射文件的包为: com.itheima11.gyl.domain.basedata com.itheima11.gyl.domain.privilege com.itheima11.gyl.domain.xsgl创建一个测试类,生成表框架的搭建dao封装的需求 1、供应链的所有的模块都用到了查询 该查询是分页的 该查询还是按照条件 该查询是按照数据来查询的 2、删除的操作 1、有可能一次性删除很多行记录 2、有可能删除一行记录 3、根据id查询持久化对象 4、增加操作 5、修改操作dao的封装
2、查询的实现PageResultBaseQueryBaseDaoBaseDaoImpl 1、在构造器中 public BaseDaoImpl() /* * this代表子类 * this.getClass().getGenericSuperclass()就是父类: 泛型 * 如果不带T,this.getClass().getGenericSuperclass()返回的是class类型,而不是 ParameterizedType * spring(2.x和3.x)容器不支持带泛型的创建对象 */ ParameterizedType type = (ParameterizedType)this.ge
3、tClass().getGenericSuperclass(); /得到t的实现类型 this.classt = (Class)type.getActualTypeArguments()0; 得到了T的class形式 2、在init方法中 PostConstruct public void init()/初始化方法 this.classMetadata = this.hibernateTemplate.getSessionFactory() .getClassMetadata(this.classt); 得到了元数据的形式 3、getCount方法 方法的参数为BaseQuery,在该Base
4、Query中有一个方法buildWhere,利用 该方法可以得到查询条件的map形式 拼接hql语句的where条件语句 动态的传入参数的值 4、 findPageResult方法 同上增加的实现删除多个数据 根据ids-字符串,利用hibernateTemplate的find方法得到一个list, 再利用hibernateTemplate的deleteAll方法删除list即可。删除一个数据service的封装需求 把service层的crud的方法就可以封装在BaseService中service的封装BaseServiceBaseServiceImpl 1、 public abstrac
5、t BaseDao getBaseDao();这是一个抽象方法,谁继承,谁实现 因为在该类中没有办法实现 2、在spring的配置文件中,添加事务的注解解析器 3、其中的一个方法action的封装的需求 把模型驱动进行封装 把得到session进行封装 把一些字符串封装action的封装BaseAction泛型 就是java语言中的一种类型 ParameterizedType就是泛型ParameterizedType例如: public class BaseDaorawType T-actualTypeArguments 第一种传递参数的方式: public class SubBaseDao
6、extends BaseDao public class DepartmentDao extends SubBaseDao 或者 public class DepartmentDao extends SubBaseDao DeparmentDao departmentDao = new DepartmentDao(); 第二种传递的方式: BaseDao baseDao= new BaseDao项目开发基础数据department模块创建action 1、创建一个包 com.itheima11.gyl.basedata.action 2、创建一个DepartmentAction类测试actio
7、n准备department关于struts2的配置文件准备css文件和images文件准备jsp结构在web-inf/jsp/gyl/basedata/department下创建一个jsp页面准备web.xml文件list.jsp显示department的列表 input type=checkbox name=dids value=$did/tdproperty value=namedescription td class=btn align= 把分页的组件加入到页面中说明: 1、每一个input元素中有一个param属性,根据该属性的值可以知道操作以后 要显示的页面是第几页 2、flag属性
8、是用来标示哪个按钮写一个通用的分页的处理jsGylUtils.js var GylUitls = /基本数据模块 basedata: /分页的处理 dispage: linkNextPage:function() /* * this为当前的按钮 */ var currentPage = $(this).attr(param); var url = $(body).data(url window.location.href = url+?currentPage=+currentPage; 注意的事项:baseQuery.currentPage这种形式传递参数不行 /基本数据模块初始化事假 ini
9、tEvent: /初始化了分页的事件 ;动态的加载checkbox删除buttonsubmit 或者是一个jquery-plugin-delete.js 该插件描述了三个功能: 1、删除功能 如果没有选择checkbox,则提示选择 window.confirm的提示 2、绿色的表示对数据中的checkbox的控制 3、蓝色的表示对控制的checkbox的状态的控制BaseAction 获取被选中的复选框的值,并且把值变成字符串的形式DepartmentAction删除submit增加add.jsp修改jquery-plugin-update.js用户模块持久化和映射文件UserDaoUser
10、DaoImplUserServiceUserServiceImplUserQuery 注意事项: 跳转到增加的页面: action中的代码:userAction: 页面上的值的回显一般情况下是根据页面上的name属性,在后台的action中 必须把值放入到对象栈中。注意事项权限 1、认证(authentication) 登录 用户名和密码的登录 2、授权 给用户权限 权限: 权限和资源是对应的 资源: url 菜单 控制 功能:页面上能够点击的元素 action中的方法 控制 注解的形式 springAop struts2的拦截器 数据权限框架 1、Spring Security 通过过滤器链
11、的方式,内部通过aop的技术把这些过滤器联系在一起的 主要控制url 该权限必须建立在spring容器基础之上 该权限和web容器有关联 2、shiro 与任何框架都没有关系 与web容器也没有关系 3、自己公司开发的权限框架步骤 菜单、功能、url这些元素,如果系统做完了,这些内容就确定了。角色 相当于权限的集合,要以树的形式进行维护给角色分配权限给用户分配角色控制访问权限zTree 是jquery的一个树的插件 创建zTree的步骤 1、准备一个样式文件和两个js文件 2、在页面上准备树的容器 3、写js代码创建树 zNodes描述的是树上的节点 setting为整个树的特性权限实现的详细步骤权限的实现 1、准备持久化类和映射文件(Menuitem) 2、准备一个测试类MenuitemTest.java 3、把准备的数据存放在数据库表menuitem中 4、加载zTree: 1、准备js文件和样式文件 2、准备menuitem.jsp页面 3、准备menuitem的dao
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1