登录
第一步
到入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>
运行效果
老板登录
老板看到的权限
客户
新增界面