1.导入相关依赖
前言:这个案例写了一个用户表,和角色表,根据用户的所拥有权限展示菜单
用户的权限通过该用户所绑定的角色获得
角色绑定权限,用户通过角色间接获得权限 记住按钮和菜单同属于一张表所以要用 type做区分
自定义标签依赖:代码如下
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zrh</groupId>
<artifactId>Struts</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>Struts Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.13</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<!--我们需要自定义标签库一定要引用这个jar包 -->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jsp-api</artifactId>
<version>8.0.47</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.4</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.5.16</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
</dependencies>
<build>
<finalName>Struts</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
2.dao层去访问数据
userDao.java
package com.zrh.crud.dao;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import com.zrh.crud.entity.User;
import com.zrh.crud.util.JsonBaseDao;
import com.zrh.crud.util.JsonUtils;
import com.zrh.crud.util.PageBean;
import com.zrh.util.StringUtils;
public class userDao extends JsonBaseDao {
/**
*登录
*
* @param paramMap
* @return
* @throws Exception
*/
public User login(Map<String, String[]> paramMap) throws Exception {
// String administrator_id = JsonUtils.getParamVal(paramMap, "administrator_id");
String sql = "select * from administrator where administrator_name = ? and pwd = ? and statu = 1";
List<Map<String, Object>> list = super.executeQuery(sql, new String[] {"administrator_name", "pwd"}, paramMap,null);
if (list != null && list.size() > 0) {
Map<String, Object> map = list.get(0);
bindingStr(map.get("administrator_id").toString(), map);
return new User(map);
}
return null;
}
/**
* 角色数据绑定
*
* @return
*/
private void bindingStr(String administrator_id, Map<String, Object> map) throws Exception {
String sql = "select a.part_id, a.part_name from part a, administrator_and_part b where a.part_id = b.part_id and b.administrator_id = "
+ administrator_id;
List<Map<String, Object>> list = super.executeQuery(sql, null);
String part_names = "";
String part_ids = "";
for (Map<String, Object> m : list) {
part_names += "," + m.get("part_name");
part_ids += "," + m.get("part_id");
}
if (part_names.length() > 0) {
part_ids = part_ids.substring(1);
part_names = part_names.substring(1);
}
map.put("part_names", part_names);
map.put("part_ids", part_ids);
}
/**
*查询
*
* @param paramMap
* @param pageBean
* @return
* @throws Exception
*/
public List<Map<String, Object>> list(Map<String, String[]> paMap, PageBean pageBean) throws Exception {
String sql = "select * from administrator where true ";
String administrator_name = JsonUtils.getParamVal(paMap, "administrator_name");
if (StringUtils.isNotBlank(administrator_name)) {
sql += " and administrator_name like '%" + administrator_name + "%' ";
}
String administrator_id = JsonUtils.getParamVal(paMap, "administrator_id");
if (StringUtils.isNotBlank(administrator_id)) {
sql += " and administrator_id = " + administrator_id;
}
//带角色查询
String part_ids = JsonUtils.getParamVal(paMap, "part_ids");
if (StringUtils.isNotBlank(part_ids)) {
sql += " and administrator_id in (" +
" select administrator_id from administrator_and_part where part_id in ("+part_ids+") " +
")";
}
List<Map<String, Object>> listt = super.executeQuery(sql, pageBean);
//用户的角色对应数据绑定(角色名和id)
for (Map<String, Object> map : listt) {
bindingStr(map.get("administrator_id").toString(), map);
}
return listt;
}
//增加
public int add(Map<String, String[]> paMap) throws Exception {
String sql = "insert into administrator (administrator_name, pwd, statu)values (?, ?, 1)";
int n = super.executeUpdate(sql, new String[] { "administrator_name", "pwd" }, paMap);
//获取当前插入id
int maxId = executeByInteger("select max(administrator_id) from administrator ");
// 角色数据插入
String[] part_ids = JsonUtils.getParamVal(paMap, "part_ids").split(",");
bindingPart(maxId + "", part_ids);
return n;
}
/**
*
* @param administrator_id
* @param part_ids
*/
public void bindingPart(String administrator_id, String[] part_ids) {
String sql = "delete from administrator_and_part where administrator_id = " + administrator_id;
super.executeUpdate(sql);
for (String part_id : part_ids) {
super.executeUpdate("insert into administrator_and_part values(" + administrator_id + "," + part_id + ")");
}
}
/**
* 修改
* @param clz
* @return
* @throws NoSuchFieldException
* @throws SecurityException
* @throws IllegalArgumentException
* @throws IllegalAccessException
* @throws SQLException
*/
public int edit(Map<String, String[]> paMap) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, SQLException {
String sql = "update administrator set administrator_name=?,pwd=? where administrator_id=?";
int n = super.executeUpdate(sql, new String[] { "administrator_name", "pwd", "administrator_id" }, paMap);
String[] part_ids = JsonUtils.getParamVal(paMap, "part_ids").split(",");
bindingPart(JsonUtils.getParamVal(paMap, "administrator_id"), part_ids);
return n;
}
/**
* 删除
* @param clz
* @return
* @throws NoSuchFieldException
* @throws SecurityException
* @throws IllegalArgumentException
* @throws IllegalAccessException
* @throws SQLException
*/
public int del(Map<String, String[]> paMap) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, SQLException {
String sql = "delete from administrator where administrator_id=?";
return super.executeUpdate(sql, new String[] {"administrator_id"}, paMap);
}
/**
* 修改状态
*
* @param paramMap
* @return
* @throws Exception
*/
public int eidtStatu(Map<String, String[]> paramMap) throws Exception {
String sql = "update administrator set statu = ? where administrator_id = ?";
return super.executeUpdate(sql, new String[] { "statu", "administrator_id" }, paramMap);
}
}
typeDao.java这个是角色
package com.zrh.crud.dao;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import com.zrh.crud.util.JsonBaseDao;
import com.zrh.crud.util.JsonUtils;
import com.zrh.crud.util.PageBean;
import com.zrh.util.StringUtils;
public class typeDao extends JsonBaseDao{
/**
* 查询分页方法,查询单挑数据公用的方法
* @param clz
* @param pagebean
* @return
* @throws InstantiationException
* @throws IllegalAccessException
* @throws SQLException
*/
public List<Map<String, Object>> list(Map<String, String[]> paMap,PageBean pageBean) throws InstantiationException, IllegalAccessException, SQLException{
String sql ="select * from part where true";
String part_name = JsonUtils.getParamVal(paMap, "part_name");
String part_id = JsonUtils.getParamVal(paMap, "part_id");
if(StringUtils.isNotBlank(part_id)) {
sql += " and part_id = "+part_id+"";
}
if(StringUtils.isNotBlank(part_name)) {
sql += " and part_name like '%"+part_name+"%'";
}
return super.executeQuery(sql , pageBean);
}
/**
* 增加
* @param clz
* @return
* @throws NoSuchFieldException
* @throws SecurityException
* @throws IllegalArgumentException
* @throws IllegalAccessException
* @throws SQLException
*/
public int add(Map<String, String[]> paMap) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, SQLException {
String sql="insert into part (part_name,remarks,statu) values(?,?,1)";
return super.executeUpdate(sql, new String[] {"part_name","remarks"}, paMap);
}
/**
* 修改
* @param clz
* @return
* @throws NoSuchFieldException
* @throws SecurityException
* @throws IllegalArgumentException
* @throws IllegalAccessException
* @throws SQLException
*/
public int edit(Map<String, String[]> paMap) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, SQLException {
String sql = "update part set part_name=?,remarks=? where part_id=?";
return super.executeUpdate(sql, new String[] {"part_name","remarks","part_id"}, paMap);
}
/**
* 移除
*
* @param paramMap
* @return
* @throws Exception
*/
public int del(Map<String, String[]> paMap) throws Exception {
super.executeUpdate("delete from administrator_and_part where part_id =" + JsonUtils.getParamVal(paMap, "part_id"));
super.executeUpdate("delete from part_and_permission where part_id = " + JsonUtils.getParamVal(paMap, "part_id"));
return super.executeUpdate("delete from part where part_id = ?", new String[] { "part_id" }, paMap);
}
/**
*获取角色下拉 只有可用的返回
* @return
* @throws Exception
*/
public List<Map<String, Object>> select() throws Exception {
String sql = "select part_id, part_name from part where statu = 2";
return super.executeQuery(sql, null);
}
/**
* 角色名是否存在
*
* @return
*/
public boolean isName(Map<String, String[]> paMap) throws Exception {
List<Map<String, Object>> list = null;
if(StringUtils.isNotBlank(JsonUtils.getParamVal(paMap, "part_id"))) {
String sql = "select part_id from part where part_id != ? and part_name = ?";
list = super.executeQuery(sql, new String[] { "part_id", "part_name" }, paMap, null);
}else {
String sql = "select part_id from part where part_name = ?";
list = super.executeQuery(sql, new String[] {"part_name" }, paMap, null);
}
return list != null && list.size() > 0;
}
/**
* 修改状态
*
* @param paramMap
* @return
* @throws Exception
*/
public int eidtStatu(Map<String, String[]> paMap) throws Exception {
String sql = "update part set statu = ? where part_id = ?";
return super.executeUpdate(sql, new String[] { "statu", "part_id" }, paMap);
}
}
MenuDao.java
package com.zrh.crud.dao;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.zrh.crud.entity.TreeNode;
import com.zrh.crud.util.JsonBaseDao;
import com.zrh.crud.util.JsonUtil