网上书城(二)

网上书城设计登录和角色权限的查询看,新增

登录

第一步

到入23个架包,13个工具类,一个mvc.xml文件,一个js文件

架包
在这里插入图片描述
13个工具类

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

第二步

建实体类,首先创将一个角色类(User)拥于登录,一个权限类(Permission)
显示权限,一个下拉框类(Category),一个中间类(RolePermisson)。

User

		package com.yinbangchi.entity;
		
		public class User {
		//给属性赋值
			private long id;
			private String name;
			private String pwd;
			private int type;

	//封装
			public long getId() {
				return id;
			}
			public void setId(long id) {
				this.id = id;
			}
			public String getName() {
				return name;
			}
			public void setName(String name) {
				this.name = name;
			}
			public String getPwd() {
				return pwd;
			}
			public void setPwd(String pwd) {
				this.pwd = pwd;
			}
			public int getType() {
				return type;
			}
			public void setType(int type) {
				this.type = type;
			}
			//构造方法
			public User(long id, String name, String pwd, int type) {
				super();
				this.id = id;
				this.name = name;
				this.pwd = pwd;
				this.type = type;
			}
			
			public User(String name, String pwd, int type) {
				super();
				this.name = name;
				this.pwd = pwd;
				this.type = type;
			}
			public User(String name, String pwd) {
				super();
				this.name = name;
				this.pwd = pwd;
			}
			//无参的
			public User() {
				super();
			}

			//输出
			@Override
			public String toString() {
				return "User [id=" + id + ", name=" + name + ", pwd=" + pwd + ", type=" + type + "]";
			}
			
	}

Permisson

				package com.yinbangchi.entity;
				
				
				public class Permission{
				
					private long id;
					private String name;
					private String description;
					private String url;
					private long pid;
					private int ismenu;
					private long displayno;
					public long getId() {
						return id;
					}
					public void setId(long id) {
						this.id = id;
					}
					public String getName() {
						return name;
					}
					public void setName(String name) {
						this.name = name;
					}
					public String getDescription() {
						return description;
					}
					public void setDescription(String description) {
						this.description = description;
					}
					public String getUrl() {
						return url;
					}
					public void setUrl(String url) {
						this.url = url;
					}
					public long getPid() {
						return pid;
					}
					public void setPid(long pid) {
						this.pid = pid;
					}
					public int getIsmenu() {
						return ismenu;
					}
					public void setIsmenu(int ismenu) {
						this.ismenu = ismenu;
					}
					public long getDisplayno() {
						return displayno;
					}
					public void setDisplayno(long displayno) {
						this.displayno = displayno;
					}
					
					public Permission() {
						super();
					}
					public Permission(long id, String name, String description, String url, long pid, int ismenu, long displayno) {
						this.id = id;
						this.name = name;
						this.description = description;
						this.url = url;
						this.pid = pid;
						this.ismenu = ismenu;
						this.displayno = displayno;
					}
					@Override
					public String toString() {
						return "Permission [id=" + id + ", name=" + name + ", description=" + description + ", url=" + url + ", pid="
								+ pid + ", ismenu=" + ismenu + ", displayno=" + displayno + "]";
					}
					
				}

RolePermission

		package com.yinbangchi.entity;
		
		public class RolePermission {
		
			private long rid;
			private long pid;
			public long getRid() {
				return rid;
			}
			public void setRid(long rid) {
				this.rid = rid;
			}
			public long getPid() {
				return pid;
			}
			public void setPid(long pid) {
				this.pid = pid;
			}
			public RolePermission(long rid, long pid) {
				super();
				this.rid = rid;
				this.pid = pid;
			}
			public RolePermission() {
				super();
			}
			@Override
			public String toString() {
				return "RolePermission [rid=" + rid + ", pid=" + pid + "]";
			}
			
			
		}

第三步

创建以上四个类的dao方法。

UserDao类
两个方法,根据name和type两个查询,和一个增加角色的方法。

			package com.yinbangchi.dao;
			
			import java.util.List;
			
			import com.yinbangchi.entity.User;
			import com.yinbangchi.uilt.BaseDao;
			import com.yinbangchi.uilt.StringUtils;
			
			public class UserDao extends BaseDao<User> {
			
				//登陆的dao方法
				public User login(User user) throws Exception {
					String name=user.getName();
					String pwd=user.getPwd();
					//查询全部的sql语句
					String sql="select * from t_easyui_user where true";
					//如果存在name和pwd那就拼接一下sql语句,根据name和pwd查询。
					if(StringUtils.isNotBlank(name)) {
						sql+=" and name= '"+name+"'";
					}
					if(StringUtils.isNotBlank(pwd)) {
						sql+=" and pwd='"+pwd+"'";
					}
					//
				     List<User> list=super.executeQuery(User.class, sql, null);
				     //是否存在数据
				     if(list.size()==0) {
				    	 //不存在返回null
				    	 return null;
				     }
				     //存在返回数据的第一行
				     return list.get(0);
				}
				
				//add增加=注册
				public int add(User user) throws Exception {
					//增加的sql语句
					String sql="insert into t_easyui_user(name,pwd,type) values(?,?,?)";
					return super.executeUpdate(sql, user, new String[] {"name","pwd","type"});
				}
				
				
				
				
				//测试
				public static void main(String[] args) throws Exception {
					UserDao  d=new UserDao();
					User user=new User("yinbangchi", "yinbangchi", 2);
				//测试能否得到数据
					User login = d.login(user);
					System.out.println(login);
				//测试增加的方法	
					d.add(user);
				}
				
				
			}

PermissonDao

			package com.yinbangchi.dao;
			
			import java.util.ArrayList;
			import java.util.HashMap;
			import java.util.List;
			import java.util.Map;
			
			import com.fasterxml.jackson.databind.ObjectMapper;
			import com.yinbangchi.entity.Permission;
			import com.yinbangchi.uilt.BaseDao;
			import com.yinbangchi.uilt.BuildTree;
			import com.yinbangchi.uilt.PageBean;
			import com.yinbangchi.vo.TreeVo;
			
			public class PermissionDao extends BaseDao<Permission> {
			
				/**
				 * 
				 * 是直接从数据库获取到的数据
				 * @param permission
				 * @param pageBean
				 * @return
				 * @throws Exception
				 */
				public List<Permission> list(Permission permission,PageBean pageBean) throws Exception {
					String sql="select * from t_easyui_Permission";
					return super.executeQuery(Permission.class,sql, pageBean);
				}
				
				//根据ids查询得到方法
				public List<Permission> menuTree(String ids) throws Exception {
					//ids是从PermissionAction中的方法截取所得,sql语句得到ids所对应的数据
					String sql="select * from t_easyui_Permission where id in("+ids+")";
					return super.executeQuery(Permission.class,sql, null);
				}
				
			
				//权限的数据编辑方法,能够将数据库中的数据,体现父子结构
			       public  List<TreeVo<Permission>>  topNode2(String ids) throws Exception {
			    	  //调用menuTree方法得到角色所能看到的数据
					List<Permission> list = this.menuTree(ids);
					//实例化一个TreeVo<Permission>集合,将treeVo装入集合。
					List<TreeVo<Permission>> nodes = new ArrayList<TreeVo<Permission>>();
					//实例化一个treeVo类
					TreeVo treeVo = null;
					//循环Permission集合
					for (Permission p : list) {
						treeVo = new TreeVo<>();
						//给TreeVo设置Permission值
						treeVo.setId(p.getId()+"");
						treeVo.setText(p.getName());
						treeVo.setParentId(p.getPid()+"");
						//实例化化一个Map
						Map<String, Object> attributes = new HashMap<String, Object>();
						//调用put方法,将Permission数据传入。
						attributes.put("self", p);
						//存储
						treeVo.setAttributes(attributes);
						nodes.add(treeVo);
					}
					return BuildTree.buildList(nodes, "0");
					
				}
				
			
				//测试
			//	public static void main(String[] args) throws Exception {
			//		PermissionDao  d=new PermissionDao();
			//    	List<Permission> permission = d.menuTree("10,11,12,13");
			//    	
			//
			//		List<TreeVo<Permission>> nodes = new ArrayList<TreeVo<Permission>>();
			//
			//		TreeVo treeVo = null;
			//		
			//		for (Permission p : permission) {
			//			treeVo = new TreeVo<>();
			//			treeVo.setId(p.getId()+"");
			//			treeVo.setText(p.getName());
			//			treeVo.setParentId(p.getPid()+"");
			//			Map<String, Object> attributes = new HashMap<String, Object>();
			//			attributes.put("self", p);
			//			treeVo.setAttributes(attributes);
			//			nodes.add(treeVo);
			//		}
			//		List<TreeVo<Permission>> dss= BuildTree.buildList(nodes, "0");
			//    		ObjectMapper om = new ObjectMapper();
			//    		String jsonstr = om.writeValueAsString(dss);
			//    		System.out.println(jsonstr);
			//		
			//	}
			}

RolePermissionDao

		package com.yinbangchi.dao;
		
		import java.util.List;
		
		import com.yinbangchi.entity.RolePermission;
		import com.yinbangchi.uilt.BaseDao;
		
		public class RolePermissionDao extends BaseDao<RolePermission> {
		
			//查询角色能在t_easyui_role_Permission(中间表)中查看几行数据。根据权限对应的数据,找到数据后在截取出pid。
			public List<RolePermission> getPids(long rid) throws Exception{
				String sql="select *from t_easyui_role_Permission where rid="+rid+"";
				return super.executeQuery(RolePermission.class, sql, null);
			}
			//测试能否得到数据
		//	public static void main(String[] args) throws Exception {
		//		RolePermissionDao  d=new RolePermissionDao();
		//		List<RolePermission> pids = d.getPids(1);
		//		for (RolePermission s : pids) {
		//			System.out.println(s);
		//		}
				
		//	}
			
		}

CategoryDao

一个查询的方法

	package com.yinbangchi.dao;
	
	import java.util.List;
	
	import com.yinbangchi.entity.Category;
	import com.yinbangchi.uilt.BaseDao;
	
	public class CategoryDao extends BaseDao<Category> {
	
		public List<Category> CategoryAll() throws Exception{
			String sql="select *from t_easyui_category";
			return super.executeQuery(Category.class, sql, null);
		}
	}

UserAction
登录的方法:从数据库中查询,存在及登录,跳转到index.jsp,不存在,跳回登录界面

		package com.yinbangchi.web;
		
		import javax.servlet.http.HttpServletRequest;
		import javax.servlet.http.HttpServletResponse;
		
		import com.yinbangchi.dao.UserDao;
		import com.yinbangchi.entity.User;
		import com.yinbangchi.uilt.StringUtils;
		import com.zking.framework.ActionSupport;
		import com.zking.framework.ModelDriven;
		
		public class UserAction extends ActionSupport implements ModelDriven<User> {
		
			//私有化并实例化一个角色类和角色的dao方法
			private User user=new User();
			private UserDao userDao=new UserDao();
					
			//调用接收jsp页面传来的数据的方法。
			@Override
			public User getModel() {
				// TODO Auto-generated method stub
				return user;
			}
			
			//登录的业务处理方法
			public String login(HttpServletRequest req,HttpServletResponse resp) {
				try {
					//调用查询的方法
					User s=this.userDao.login(user);
					//如果不存在数据就登录到login.jsp
					if(s==null) {
						return "login";
					}
					//存储查询到的数据,用于PermissionAction的权限查看的一个方法。
					req.getSession().setAttribute("sUser", s);
				} catch (Exception e) {
					e.printStackTrace();
					//如果报异常跳转到login.jsp
					return "login";
				}
				//如果不存在数据就登录到index.jsp
				return "index";
			}
			
			//注册
			public String add(HttpServletRequest req,HttpServletResponse resp) {
				try {
					//调用增加的方法
					this.userDao.add(user);
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				return "login";
			}
		
		}

PermissionAction

		package com.yinbangchi.web;
		
		import java.util.ArrayList;
		import java.util.List;
		
		import javax.servlet.http.HttpServletRequest;
		import javax.servlet.http.HttpServletResponse;
		
		import com.fasterxml.jackson.databind.ObjectMapper;
		import com.yinbangchi.dao.PermissionDao;
		import com.yinbangchi.dao.RolePermissionDao;
		import com.yinbangchi.entity.Permission;
		import com.yinbangchi.entity.RolePermission;
		import com.yinbangchi.entity.User;
		import com.yinbangchi.uilt.ResponseUtil;
		import com.yinbangchi.vo.TreeVo;
		import com.zking.framework.ActionSupport;
		import com.zking.framework.ModelDriven;
		
		public class PermissionAction extends ActionSupport implements ModelDriven<Permission>{
			//私有化并实例化权限类和他的dao方法
			private Permission ps = new Permission();
			private PermissionDao pd = new PermissionDao();
			private RolePermissionDao rolePermissionDao=new RolePermissionDao(); 
			
			//调用接收jsp页面传来的数据的方法。
			@Override
			public Permission getModel() {
				// TODO Auto-generated method stub
				return ps;
			}
			
			//根据角色查看权限业务处理方法
			public String menuTree(HttpServletRequest req,HttpServletResponse resp) {
				ObjectMapper  om=new ObjectMapper();
				try {	
					//得到角色表的数据
						//User d =(User)req.getSession().getAttribute("sUser");
					//得到type权限id,调用rolePermissionDao中间表的的方法,得到对应权限的所能开到的到几条数据
						List<RolePermission> pids = this.rolePermissionDao.getPids(1);
					//截取
						StringBuilder sb=new StringBuilder();
					//循环RolePermission数据
						for (RolePermission pid : pids) {
							//截取pid列得到,3,4,5,6,7字符串
							sb.append(",").append(pid.getPid());
						}
					//转换为Json形式的字符串								//从,开始截取
						ResponseUtil.writeJson(resp, this.pd.topNode2(sb.substring(1)));
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				return null;
			}
			
							
		}

CategoryAction

		package com.yinbangchi.web;
		
		import java.util.List;
		
		import javax.servlet.http.HttpServletRequest;
		import javax.servlet.http.HttpServletResponse;
		
		import com.yinbangchi.dao.CategoryDao;
		import com.yinbangchi.entity.Category;
		import com.yinbangchi.uilt.ResponseUtil;
		import com.zking.framework.ActionSupport;
		import com.zking.framework.ModelDriven;
		
		public class CategoryAction extends ActionSupport implements ModelDriven<Category>{
		
			private Category category=new Category();
			private CategoryDao  categoryDao=new CategoryDao();
			@Override
			public Category getModel() {
				// TODO Auto-generated method stub
				return category;
			}
			//从数据库中查询,
			public String category(HttpServletRequest req,HttpServletResponse resp) throws Exception {
				List<Category> categoryAll = this.categoryDao.CategoryAll();
				ResponseUtil.writeJson(resp, categoryAll);
				return null;
			}
		}

最后写jsp页面于mvc.xml

登录界面

					<%@ page language="java" contentType="text/html; charset=UTF-8"
					    pageEncoding="UTF-8"%>
					<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
					<html>
					<head>
					<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
					<title>Insert title here</title>
					</head>
					<body>
					   <form action="${pageContext.request.contextPath }/user.action?methodName=login" method="post">
						 姓名:<input type="text" name="name"><br/>
						 密码:<input type="text" name="pwd"><br/>
						 <input type="submit" value="提交">
						</form>
					
					</body>
					</html>

index.jsp

							<%@ page language="java" contentType="text/html; charset=UTF-8"
							    pageEncoding="UTF-8"%>
							<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
							<html>
							<head>
							<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
							<!--全局样式  -->
							<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/static/js/jquery-easyui-1.5.1/themes/default/easyui.css">   
							<!--定义图标  -->
							<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/static/js/jquery-easyui-1.5.1/themes/default/easyui.css">   
							<script type="text/javascript" src="${pageContext.request.contextPath }/static/js/jquery-easyui-1.5.1/jquery.min.js"></script>   
							<!--组建库源码的 js文件 -->
							<script type="text/javascript" src="${pageContext.request.contextPath }/static/js/jquery-easyui-1.5.1/jquery.easyui.min.js"></script>
							<script type="text/javascript" 
							src="${pageContext.request.contextPath }/static/js/index.js"></script>
							
							<title>登录后的主界面</title>
							</head>
							<input type="hidden" id="ctx" value="${pageContext.request.contextPath }"/>
							<body class="easyui-layout">
								<div data-options="region:'north',border:false" style="height:60px;background:#B3DFDA;padding:10px">邦大爷管理系统
								</div>
								<div data-options="region:'west',split:true,title:'West'" style="width:150px;padding:10px;">
									<ul id="tt"></ul> 
								</div>
								<div data-options="region:'east',split:true,collapsed:true,title:'East'" style="width:100px;padding:10px;">east region</div>
								<div data-options="region:'south',border:false" style="height:50px;background:#A9FACD;padding:10px;">south region 邦哥哥最帅了</div>
								<div data-options="region:'center',title:'Center'">
								<div id="nd" class="easyui-tabs" style="width:100%;height:100%;">   
							           <div title="主页" style="padding:20px;display:none;">本站各种数据指标(邦爷爷无敌了) </div>     
							    </div>
								</div>
								
							</body>
							</html>

addBook.jsp

							<%@ page contentType="text/html;charset=UTF-8" language="java" %>
							<html>
							<head>
							    <title>书籍新增</title>
							    <!--全局样式  -->
							<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/static/js/jquery-easyui-1.5.1/themes/default/easyui.css">   
							<!--定义图标  -->
							<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/static/js/jquery-easyui-1.5.1/themes/default/easyui.css">   
							<script type="text/javascript" src="${pageContext.request.contextPath }/static/js/jquery-easyui-1.5.1/jquery.min.js"></script>   
							<!--组建库源码的 js文件 -->
							<script type="text/javascript" src="${pageContext.request.contextPath }/static/js/jquery-easyui-1.5.1/jquery.easyui.min.js"></script>
							<script type="text/javascript" 
							src="${pageContext.request.contextPath }/static/js/add.js"></script>
							 
							 </head>
							<body>
							<input type="hidden" id="czy" value="${pageContext.request.contextPath }">
							<div style="margin:20px 0;"></div>
							<div class="easyui-panel" title="已下架书籍" style="width:100%;padding:30px 60px;">
							    <form id="ff" action="${pageContext.request.contextPath}/book.action?methodName=add" method="post">
							        <div style="margin-bottom:20px">
							            <input class="easyui-textbox" name="name" style="width:100%" data-options="label:'书名:',required:true">
							        </div>
							        <div style="margin-bottom:20px">
							            <input id="cc" name="dept" value="aa">
							        </div>
							        <div style="margin-bottom:20px">
							            <input class="easyui-textbox" name="author" style="width:100%" data-options="label:'作者:',required:true">
							        </div>
							        <div style="margin-bottom:20px">
							            <input class="easyui-textbox" name="price" style="width:100%"
							                   data-options="label:'价格:',required:true">
							        </div>
							        <div style="margin-bottom:20px">
							            <input class="easyui-textbox" name="publishing" style="width:100%"
							                   data-options="label:'出版社:',required:true">
							        </div>
							        <div style="margin-bottom:20px">
							            <input class="easyui-textbox" name="description" style="width:100%;height:60px"
							                   data-options="label:'简介:',required:true">
							        </div>
							        <%--默认未上架--%>
							        <input type="hidden" name="state" value="1">
							        <%--默认起始销量为0--%>
							        <input type="hidden" name="sales" value="0">
							    </form>
							
							    <div style="text-align:center;padding:5px 0">
							        <a href="javascript:void(0)" class="easyui-linkbutton" onclick="submitForm()" style="width:80px">增加(Submit)</a>
							        <a href="javascript:void(0)" class="easyui-linkbutton" onclick="clearForm()" style="width:80px">清空(Clear)</a>
							    </div>
							</div>
							<script>
							    $(function () {
							        $('#cid').combobox({
							            url:'${pageContext.request.contextPath}/category.action?methodName=list',
							            valueField:'id',
							            textField:'name'
							        });
							
							
							    });
							
							    function submitForm() {
							        $('#ff').form('submit',{
							            success:function (param) {
							                $('#ff').form('clear');
							            }
							        });
							    }
							
							    function clearForm() {
							        $('#ff').form('clear');
							    }
							</script>
							</body>
							</html>

运行效果

老板登录
在这里插入图片描述

老板看到的权限

在这里插入图片描述

客户

在这里插入图片描述

在这里插入图片描述

新增界面

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值