Mac怎么搭建网站开发环境怎么做网站二维码
news/
2025/9/23 19:30:08/
文章来源:
Mac怎么搭建网站开发环境,怎么做网站二维码,网页设计实训报告心得体会,淄博营销网站建设用户与角色之间的关系 我们在做用户模块的时候#xff0c;漏掉了最后一个功能。在新增功能中是可以选择角色的。 用户与角色之间的关系也是多对多 一个用户对应多个角色一个角色可以被多个用户使用。现在呢#xff0c;我们的用户表已经是写的了。我们最好就不要修改原有的用户… 用户与角色之间的关系 我们在做用户模块的时候漏掉了最后一个功能。在新增功能中是可以选择角色的。 用户与角色之间的关系也是多对多 一个用户对应多个角色一个角色可以被多个用户使用。 现在呢我们的用户表已经是写的了。我们最好就不要修改原有的用户表数据。那我们在不修改用户表代码的情况下又怎么来实现多对多呢 跟角色与权限是一样的。使用中间表来维护它们的关系就行了。 用户user用户id,名称...1 用户12 用户2用户角色user_role用户id,角色id1 11 22 2角色role角色Id,名称1 管理员2 一般用户 设计中间表
public class UserRole implements Serializable {private UserRoleId userRoleId;public UserRoleId getUserRoleId() {return userRoleId;}public void setUserRoleId(UserRoleId userRoleId) {this.userRoleId userRoleId;}
}主键表
public class UserRoleId implements Serializable {private String user_id;//在使用的时候Role相关的数据会用得特别多。为了方便使用了Role对象。而user就不需要使用User对象了。private Role role;Overridepublic boolean equals(Object o) {if (this o) return true;if (o null || getClass() ! o.getClass()) return false;UserRoleId that (UserRoleId) o;if (user_id ! null ? !user_id.equals(that.user_id) : that.user_id ! null) return false;return role ! null ? role.equals(that.role) : that.role null;}Overridepublic int hashCode() {int result user_id ! null ? user_id.hashCode() : 0;result 31 * result (role ! null ? role.hashCode() : 0);return result;}public String getUser_id() {return user_id;}public void setUser_id(String user_id) {this.user_id user_id;}public Role getRole() {return role;}public void setRole(Role role) {this.role role;}
} 映射文件 ?xml version1.0 encodingutf-8?!DOCTYPE hibernate-mapping PUBLIC -//Hibernate/Hibernate Mapping DTD 3.0//ENhttp://hibernate.sourceforge.net/hibernate-mapping-3.0.dtdhibernate-mappingclass namezhongfucheng.user.entity.UserRole tableuser_rolecomposite-id nameuserRoleId classzhongfucheng.user.entity.UserRoleId!--manytoone可以生成外键字段。--key-many-to-one namerole classzhongfucheng.role.entity.Role columnrole_id lazyfalse/key-property nameuser_id columnuser_id typejava.lang.String//composite-id/class/hibernate-mapping增加模块 在跳转到JSP页面的前把所有的角色找出来。放到request域对象中让JSP页面显示出来。 public String addUI() {//把所有的角色查询出来带过去给JSP页面显示ActionContext.getContext().getContextMap().put(roleList, roleServiceImpl.findObjects());return addUI;} %--list是集合对象name是要带给服务器端的字符串数组。listkey 是集合元素对象的idlistValue 是集合元素对象的名字--%s:checkboxlist list#roleList nameuserRoleIds listKeyroleId listValuename/ 编辑模块 编辑回显数据 在编辑模块中需要将该用户所拥有的角色查询出来。然后把查询出来的id值放到数组中。 public String editUI() {//把所有的角色查询出来带过去给JSP页面显示ActionContext.getContext().getContextMap().put(roleList, roleServiceImpl.findObjects());//外边已经传了id过来了我们要找到id对应的Userif (user ! null user.getId() ! null ) {//直接获取出来后面JSP会根据User有getter就能读取对应的信息user userServiceImpl.findObjectById(user.getId());//通过用户的id得到所拥有UserRoleListUserRole roles userServiceImpl.findRoleById(user.getId());//把用户拥有角色的id填充到数组中数组最后回显到JSP页面int i0;userRoleIds new String[roles.size()];for (UserRole role : roles) {userRoleIds[i] role.getUserRoleId().getRole().getRoleId();}}return editUI;} JSP通过checkboxlist进行回显指定了name值就能够自动判定我们的用户拥有的角色是什么了。 s:checkboxlist list#roleList nameuserRoleIds listKeyroleId listValuename/s:checkboxlist处理编辑操作 在更新之前首先删除用户与角色之间的关系【历史遗留问题】如果不删除那么用户所拥有的角色就一直保留着。无论你在JSP页面有没有勾选。 public String edit() throws IOException {//Struts2会自动把JSP带过来的数据封装到User对象上if (user.getId() ! null user ! null) {if (headImg ! null) {//得到要把头像上传到服务器的路径javax.servlet.ServletContext servletContext ServletActionContext.getServletContext();String realPath servletContext.getRealPath(upload/user);//由于用户上传的名字可能会相同如果相同就被覆盖掉因此我们要修改上传文件的名字【独一无二】headImgFileName UUID.randomUUID().toString() headImgFileName.substring(headImgFileName.lastIndexOf(.));FileUtils.copyFile(headImg, new File(realPath, headImgFileName));//设置图片与用户的关系user.setHeadImg(headImgFileName);}if (userRoleIds ! null) {//删除用户与角色之间的关系【历史遗留问题】userServiceImpl.deleteUserRoleById(userRoleIds);//保存用户与角色。userServiceImpl.saveUserAndRole(user,userRoleIds);}}return list;} 调用保存用户与角色的关系。如果id不是为空的那么就执行更新如果id为空就执行保存。 Overridepublic void saveUserAndRole(User user, String... userRoleIds) {//保存或更新用户if (user.getId() ! null) {userDaoImpl.update(user);} else {userDaoImpl.save(user);}//判断有没有把id带过来if (userRoleIds ! null) {for (String userRoleId : userRoleIds) {System.out.println(userRoleId);userDaoImpl.saveUserRole(new UserRole(new UserRoleId(user.getId(), new Role(userRoleId))));}}} 转载于:https://www.cnblogs.com/zhong-fucheng/p/7202917.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/913632.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!