0
点赞
收藏
分享

微信扫一扫

Java spring MVC+easyUI+mybatis实现网站后台管理系统(菜单管理、操作员管理、角色管理、操作员授权)

@TOC

spring MVC+easyUI+mybatis实现网站后台管理系统

最近开发一个通用的后台管理系统,管理员登录后,可以对角色、菜单按钮进行控制和管理,十分的方便

功能实现截图

登录页面:
在这里插入图片描述
修改用户密码:
在这里插入图片描述
菜单管理:
在这里插入图片描述
操作员管理:
在这里插入图片描述
角色管理:
在这里插入图片描述
操作员授权:
在这里插入图片描述
编辑菜单:
在这里插入图片描述
编辑角色:
在这里插入图片描述

技术点介绍

使用Java平台,采用SpringMVC+Mybatis等主流框架
数据库:使用免费MYSQL
前端:使用Jquery和Easyui技术.界面清晰简洁,易操作
权限:对菜单,按钮控制.仅展示有权限的菜单和按钮.
拦截:对所有无权限URL进行拦截,防止手动发送HTTP请求,确保系统全性.
代码生成:根据表生成对应的Bean,Service,Mapper,Action,XML等。提高开发效率.

主要代码

mode层:
BaseMode.java

package com.yiya.model;

import org.apache.commons.lang.StringUtils;

import com.yiya.utils.Pager;
import com.yiya.utils.StringUtil;

public class BaseModel {

    private Integer page = 1;

    private Integer rows =10;

    private String sort;

    private String order;

    /**
     * 分页导航
     */
    private Pager pager = new Pager();

    public Pager getPager() {
        pager.setPageId(getPage());
        pager.setPageSize(getRows());
        String orderField="";
        if(StringUtils.isNotBlank(sort)){
            orderField = sort;
        }
        if(StringUtils.isNotBlank(orderField) && StringUtils.isNotBlank(order)){
            orderField +=" "+ order;
        }
        pager.setOrderField(orderField);
        return pager;
    }

    public void setPager(Pager pager) {
        this.pager = pager;
    }

    public Integer getPage() {
        return page;
    }

    public void setPage(Integer page) {
        this.page = page;
    }

    public Integer getRows() {
        return rows;
    }

    public void setRows(Integer rows) {
        this.rows = rows;
    }

    public String getSort() {
        return sort;
    }

    public void setSort(String sort) {
        this.sort = sort;
    }

    public String getOrder() {
        return order;
    }

    public void setOrder(String order) {
        this.order = order;
    }

}

SysMenuModel.java

package com.yiya.model;

public class SysMenuModel extends BaseModel {

    private Integer id;//   主键
    private String name;//   菜单名称
    private String url;//   系统url
    private Integer parentId;//   父id 关联sys_menu.id
    private Integer deleted;//   是否删除,0=未删除,1=已删除
    private java.sql.Timestamp createTime;//   创建时间
    private java.sql.Timestamp updateTime;//   修改时间
    private Integer rank;//   排序
    private String actions; //注册Action 按钮|分隔

    public String getActions() {
        return actions;
    }
    public void setActions(String actions) {
        this.actions = actions;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public Integer getParentId() {
        return parentId;
    }
    public void setParentId(Integer parentId) {
        this.parentId = parentId;
    }
    public Integer getDeleted() {
        return deleted;
    }
    public void setDeleted(Integer deleted) {
        this.deleted = deleted;
    }
    public java.sql.Timestamp getCreateTime() {
        return createTime;
    }
    public void setCreateTime(java.sql.Timestamp createTime) {
        this.createTime = createTime;
    }
    public java.sql.Timestamp getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(java.sql.Timestamp updateTime) {
        this.updateTime = updateTime;
    }
    public Integer getRank() {
        return rank;
    }
    public void setRank(Integer rank) {
        this.rank = rank;
    }

}

service层
sysMenuService.java

package com.yiya.service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.yiya.bean.SysMenu;
import com.yiya.bean.SysMenuBtn;
import com.yiya.bean.SysRoleRel;
import com.yiya.bean.SysRoleRel.RelType;
import com.yiya.mapper.SysMenuMapper;

/**
 * 
 * <br>
 * <b>功能:</b>SysMenuService<br>
 * <b>作者:</b>罗泽军<br>
 * <b>日期:</b> Dec 9, 2011 <br>
 * <b>版权所有:<b>版权所有(C) 2011,WWW.VOWO.COM<br>
 */
@Service("sysMenuService")
public class SysMenuService<T> extends BaseService<T> {
    private final static Logger log= Logger.getLogger(SysMenuService.class);

    @Autowired
    private SysRoleRelService<SysRoleRel> sysRoleRelService;

    @Autowired
    private SysMenuBtnService<SysMenuBtn> sysMenuBtnService;

    @Autowired
    private SysMenuMapper<T> mapper;

    /**
     * 保存菜单btn
     * @param btns
     * @throws Exception 
     */
    public void saveBtns(Integer menuid,List<SysMenuBtn> btns) throws Exception{
        if(btns == null || btns.isEmpty()){
            return;
        }
        for (SysMenuBtn btn : btns) {
            if(btn.getId()!= null && "1".equals(btn.getDeleteFlag())){
                sysMenuBtnService.delete(btn.getId());
                continue;
            }
            btn.setMenuid(menuid);
            if(btn.getId() == null){
                sysMenuBtnService.add(btn);
            }else{
                sysMenuBtnService.update(btn);
            }
        }

    }

    public void add(SysMenu menu) throws Exception {
        super.add((T)menu);
        saveBtns(menu.getId(),menu.getBtns());
    }

    public void update(SysMenu menu) throws Exception {
        super.update((T)menu);
        saveBtns(menu.getId(),menu.getBtns());
    }

    /**
     * 查询所有系统菜单列表
     * @return
     */
    public List<T> queryByAll(){
        return mapper.queryByAll();
    }

    /**
     * 获取顶级菜单
     * @return
     */
    public List<T> getRootMenu(Integer menuId){
        Map<String, Integer> map = new HashMap<String, Integer>();
        map.put("menuId", menuId);
        return mapper.getRootMenu(map);
    }

    /**
     * 获取子菜单
     * @return
     */
    public List<T> getChildMenu(){
        return mapper.getChildMenu();
    }

    /**
     * 根据用户id查询父菜单
     * @param roleId
     * @return
     */
    public List<T> getRootMenuByUser(Integer userId){
        return getMapper().getRootMenuByUser(userId);
    }

    /**
     * 根据用户id查询子菜单
     * @param roleId
     * @return
     */
    public List<T> getChildMenuByUser(Integer userId){
        return getMapper().getChildMenuByUser(userId);
    }

    /**
     * 根据权限id查询菜单
     * @param roleId
     * @return
     */
    public List<T> getMenuByRoleId(Integer roleId){
        return getMapper().getMenuByRoleId(roleId);
    }

    @Override
    public void delete(Object[] ids) throws Exception {
        super.delete(ids);
        //删除关联关系
        for(Object id : ids){
            sysRoleRelService.deleteByObjId((Integer)id, RelType.MENU.key);
            sysMenuBtnService.deleteByMenuid((Integer)id);
        }
    }

    public SysMenuMapper<T> getMapper() {
        return mapper;
    }

}

action层
SysMenuAction.java

package com.yiya.action;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.math.NumberUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.yiya.bean.SysMenu;
import com.yiya.bean.SysMenuBtn;
import com.yiya.bean.TreeNode;
import com.yiya.bean.BaseBean.DELETED;
import com.yiya.model.SysMenuModel;
import com.yiya.service.SysMenuBtnService;
import com.yiya.service.SysMenuService;
import com.yiya.utils.HtmlUtil;
import com.yiya.utils.TreeUtil;

@Controller
@RequestMapping("/sysMenu") 
public class SysMenuAction extends BaseAction{

    private final static Logger log= Logger.getLogger(SysMenuAction.class);

    // Servrice start
    @Autowired(required=false) //自动注入,不需要生成set方法了,required=false表示没有实现类,也不会报错。
    private SysMenuService<SysMenu> sysMenuService; 

    @Autowired
    private SysMenuBtnService<SysMenuBtn> sysMenuBtnService;

    /**
     * ilook 首页
     * @param url
     * @param classifyId
     * @return
     */
    @RequestMapping("/menu")
    public ModelAndView  menu(SysMenuModel model,HttpServletRequest request) throws Exception{
        Map<String,Object>  context = getRootMap();
        model.setDeleted(DELETED.NO.key);
        List<SysMenu> dataList = sysMenuService.queryByList(model);
        //设置页面数据
        context.put("dataList", dataList);
        return forword("sys/sysMenu",context); 
    }

    /**
     * 顶级菜单 json 
     * @param menuId 此菜单id不查询,可以为空
     * @param response
     * @throws Exception
     */
    @RequestMapping("/rootMenuJson") 
    public void  rootMenu(Integer menuId,HttpServletResponse response) throws Exception{
        List<SysMenu> dataList = sysMenuService.getRootMenu(menuId);
        if(dataList==null){
            dataList = new ArrayList<SysMenu>();
        }
        HtmlUtil.writerJson(response, dataList);
    }

    /**
     * json 列表页面
     * @param url
     * @param classifyId
     * @return
     * @throws Exception 
     */
    @RequestMapping("/dataList") 
    public void  dataList(SysMenuModel model,HttpServletResponse response) throws Exception{
        List<SysMenu> dataList = sysMenuService.queryByList(model);
        //设置页面数据
        Map<String,Object> jsonMap = new HashMap<String,Object>();
        jsonMap.put("total",model.getPager().getRowCount());
        jsonMap.put("rows", dataList);
        HtmlUtil.writerJson(response, jsonMap);
    }

    /**
     * 添加或修改数据
     * @param url
     * @param classifyId
     * @return
     * @throws Exception 
     */
    @RequestMapping("/save")
    public void save(SysMenu bean,HttpServletRequest request,HttpServletResponse response) throws Exception{
        if(true){
            new Exception(" Test Error");
        }
        //设置菜单按钮数据
        List<SysMenuBtn> btns = getReqBtns(request);
        bean.setBtns(btns);
        if(bean.getId() == null){
            bean.setDeleted(DELETED.NO.key);
            sysMenuService.add(bean);
        }else{
            sysMenuService.update(bean);
        }
        sendSuccessMessage(response, "保存成功~");
    }

    @RequestMapping("/getId")
    public void getId(Integer id,HttpServletResponse response) throws Exception{
        Map<String,Object>  context = new HashMap<String,Object>();
        SysMenu bean  = sysMenuService.queryById(id);
        if(bean  == null){
            sendFailureMessage(response, "没有找到对应的记录!");
            return;
        }
        List<SysMenuBtn> btns = sysMenuBtnService.queryByMenuid(id);
        bean.setBtns(btns);
        context.put(SUCCESS, true);
        context.put("data", bean);
        HtmlUtil.writerJson(response, context);
    }

    @RequestMapping("/delete")
    public void delete(Integer[] id,HttpServletResponse response) throws Exception{
        if(id != null && id.length > 0){
            sysMenuService.delete(id);
            sendSuccessMessage(response, "删除成功");
        }else{
            sendFailureMessage(response, "未选中记录");
        }
    }

    @RequestMapping("/getMenuTree")
    public void getMenuTree(Integer id,HttpServletResponse response) throws Exception{
        List<TreeNode> menuTree = treeMenu();
        HtmlUtil.writerJson(response, menuTree);
    }

    /**
     * 构建树形菜单
     * @return
     */
    public List<TreeNode> treeMenu(){
        List<SysMenu> rootMenus = sysMenuService.getRootMenu(null);//根节点
        List<SysMenu> childMenus = sysMenuService.getChildMenu();//子节点
        List<SysMenuBtn> childBtns = sysMenuBtnService.queryByAll();
        TreeUtil util = new TreeUtil(rootMenus,childMenus,childBtns);
        return util.getTreeNode();
    }

    /**
     * 获取请求的菜单按钮数据
     * @param request
     * @return
     */
    public List<SysMenuBtn> getReqBtns(HttpServletRequest request){
        List<SysMenuBtn> btnList= new ArrayList<SysMenuBtn>();
        String[] btnId  = request.getParameterValues("btnId");
        String[] btnName  = request.getParameterValues("btnName");
        String[] btnType  = request.getParameterValues("btnType");
        String[] actionUrls  = request.getParameterValues("actionUrls");
        String[] deleteFlag  = request.getParameterValues("deleteFlag");
        for (int i = 0; i < btnId.length; i++) {
            if(StringUtils.isNotBlank(btnName[i]) && StringUtils.isNotBlank(btnType[i])){
                SysMenuBtn btn = new SysMenuBtn();
                if(StringUtils.isNotBlank(btnId[i]) && NumberUtils.isNumber(btnId[i])){
                    btn.setId(NumberUtils.toInt(btnId[i]));
                }
                btn.setBtnName(btnName[i]);
                btn.setBtnType(btnType[i]);
                btn.setActionUrls(actionUrls[i]);
                btn.setDeleteFlag(deleteFlag[i]);
                btnList.add(btn);
            }
        }
        return btnList;
    }
}

dao
BaseDao.java

package com.yiya.utils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class BaseDao {

    static Connection conn = null;
    static Statement stmt = null;
    static ResultSet rs = null;

    static PreparedStatement ps = null;

    private final static String deriver = "com.mysql.jdbc.Driver";
    private final static String url = "jdbc:mysql://59.53.66.227/diyStartext?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true";
    private final static String user = "jony";
    private final static String password = "123456";

    public static Connection getConnection() {

        try {
            Class.forName(deriver);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            if (conn == null) {
                conn = DriverManager.getConnection(url, user, password);
                System.out.println("sussess");
            }

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return conn;
    }

    /**
     * 执行 SQL
     * 
     * @param sql
     * @return
     */
    public static ResultSet getResultSet(String sql) {
        try {
            BaseDao.getConnection();
            ps = conn.prepareStatement(sql);
            rs = ps.executeQuery();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return rs;
    }

    /**
     * 执行 SQL
     * 只取出第一条数据
     * @param sql
     * @return
     */
    public static ResultSet getFirstResultSet(String sql) {
        try {
            BaseDao.getConnection();
            ps = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
            rs = ps.executeQuery();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return rs;
    }

    /**
     * 获取表达式
     * 
     * @return
     */
    public static Statement Statement() {

        try {
            if (conn == null) {
                stmt = conn.createStatement();
            }

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return stmt;
    }

    /**
     * 释放资源
     * 
     */
    public static void closeDBConnection() {

        try {

            if (rs != null) {
                rs.close();
            }
            if (stmt != null) {
                stmt.close();
            }
            if (conn != null) {

                conn.close();
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    public static void main(String[] args) {

        BaseDao.getConnection();
        ResultSet r = BaseDao.getResultSet("select * from babyinfo");
        try {
            while(r.next()){
                System.out.println(rs.getString("name"));
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

写在最后

如果有问题(或需要完整源码参考)可以私信博主V交流或者关注gongzhonghao:程序猿矛盾体

举报

相关推荐

0 条评论