📄 menutree.java
字号:
package com.support.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.hibernate.Query;
import org.hibernate.Session;
import com.support.hibernate.table.*;
import com.support.hibernate.*;
public class MenuTree extends HttpServlet {
/**
* 版本id
*/
private static final long serialVersionUID = 1L;
/**
* flag=1根据功能权限获取菜单列表
* flag=2自动完成列表吗?好像现在不需要了阿
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String flag = request.getParameter("flag");
if (flag == null) flag = "0";
int intFlag = Integer.parseInt(flag);
switch (intFlag) {
case 0://初始化菜单
initMenu(request,response);
break;
case 1://动态加载菜单节点
getMenu(request,response);
break;
case 2:
break;
default:
break;
}
}
/**
* 初始化菜单
* @param request
* @param response
* @throws IOException
*/
public void initMenu(HttpServletRequest request, HttpServletResponse response) throws IOException {
String userId = (String)request.getSession().getAttribute("id");
String loginId = (String)request.getSession().getAttribute("userId");
SRightItemDAO rightItemDao = new SRightItemDAO();
rightItemDao.getSession().clear();
List menuList = new ArrayList();
String path = request.getContextPath();
if (loginId.trim().equals("admin")) {
menuList = rightItemDao.findByParentId("0");
} else {
StringBuffer sql = new StringBuffer("FROM SRightItem a WHERE (EXISTS (SELECT 1 FROM SRoleRight b WHERE EXISTS (SELECT 1 FROM SUserRole c WHERE c.userId =:roleUserId AND c.roleId = b.roleId AND a.id = b.rightId)) OR EXISTS (SELECT 1 FROM SUserRight d WHERE d.userId = :userId)) and a.parentId = :menuId and a.status = 0");
Session session = HibernateSessionFactory.getSession();
Query query = session.createQuery(sql.toString());
query.setParameter("userId", userId);
query.setParameter("roleUserId", userId);
query.setParameter("menuId", "0");
menuList = query.list();
}
request.getSession().setAttribute("menuList", menuList);
response.sendRedirect(path+"/menuTree.jsp");
}
/**
* 读取用户的功能菜单
* 角色权限+用户权限=用户全部功能权限
* @param request
* @param response
* @throws IOException
*/
public void getMenu(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setHeader("Cache-Control", "no-cache");
response.setContentType("text/xml; charset=GB18030");
PrintWriter out = response.getWriter();
String userId = (String)request.getSession().getAttribute("id");
String loginId = (String)request.getSession().getAttribute("userId");
String parentId = request.getParameter("parentId");
String path = request.getContextPath()+"/menuTree?";
SRightItemDAO rightItemDao = new SRightItemDAO();
rightItemDao.getSession().clear();
StringBuffer xmlString = new StringBuffer("<?xml version=\"1.0\" encoding=\"GBK\" ?><tree>");
List rightList = new ArrayList();
if (loginId.trim().equals("admin")) {
//如果是admin用户 选择全部菜单展示出来
rightList = rightItemDao.findByParentId(parentId);
} else {
StringBuffer sql = new StringBuffer("FROM SRightItem a WHERE (EXISTS (SELECT 1 FROM SRoleRight b WHERE EXISTS (SELECT 1 FROM SUserRole c WHERE c.userId =:roleUserId AND c.roleId = b.roleId AND a.id = b.rightId)) OR EXISTS (SELECT 1 FROM SUserRight d WHERE d.userId = :userId)) and a.parentId = :menuId and a.status = 0");
Session session = HibernateSessionFactory.getSession();
Query query = session.createQuery(sql.toString());
query.setParameter("userId", userId);
query.setParameter("roleUserId", userId);
query.setParameter("menuId", parentId);
rightList = query.list();
}
for (int i = 0; i < rightList.size(); i ++) {
SRightItem rightItem = (SRightItem)rightList.get(i);
List childrenList = rightItemDao.findByParentId(rightItem.getId());
int nodeType = 0;//非叶子节点
if (childrenList.size() < 1) nodeType = 1;//叶子节点
if (nodeType == 0) {
xmlString.append("<tree text=\"");
xmlString.append(rightItem.getName());
xmlString.append("\" src=\"");
xmlString.append(path);
xmlString.append("flag=1&parentId=");
xmlString.append(rightItem.getId());
xmlString.append("\" />");
} else if (nodeType == 1) {
xmlString.append("<tree text=\"");
xmlString.append(rightItem.getName());
xmlString.append("\" action=\"");
xmlString.append(request.getContextPath());
xmlString.append(rightItem.getLink());
xmlString.append("\" target=\"info\" />");
}
}
xmlString.append("</tree>");
System.out.println(xmlString.toString());
out.println(xmlString.toString());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -