1.dao层
public class PrivilegeDaoImpl implements PrivilegeDao {
@Override
public List<Privilege> findByRoleId(Integer roleId) {
String sql = "select p.* from privilege p\n" +
"inner join role_to_privilege rp\n" +
"on p.id=rp.privilegeId\n" +
"where rp.roleId=?";
QueryRunner qr = JdbcUtils.getQueryRunner();
List<Privilege> list= null;
try {
list = qr.query(sql, new BeanListHandler<>(Privilege.class), roleId);
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
}
2.service层
public class PrivilegeServiceImpl implements PrivilegeService {
private PrivilegeDao privilegeDao = new PrivilegeDaoImpl();
@Override
public List<Privilege> findAllPrivilegesByRoleId(Integer rid) {
return privilegeDao.findByRoleId(rid);
}
}
3.servlet层
@WebServlet("/login.do")
public class LoginServlet extends HttpServlet {
private UserService userService = new UserServiceImpl();
private PrivilegeService privilegeService = new PrivilegeServiceImpl();
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
try {
User user = userService.login(username, password);
HttpSession session = request.getSession();
session.setAttribute("user", user);
// 登陆成功,获取权限信息
List<Privilege> privileges = privilegeService.findAllPrivilegesByRoleId(user.getRoleId());
session.setAttribute("privilegeList", privileges);
response.sendRedirect(request.getContextPath() + "/pages/all-admin-index.jsp");
} catch (Exception e) {
e.printStackTrace();
response.sendRedirect(request.getContextPath() + "/pages/error.jsp");
}
}
}
4.页面
<ul class="treeview-menu">
<c:forEach items="${privilegeList}" var="pr">
<li id="admin-login">
<a href="${pageContext.request.contextPath}/${pr.url}" target="myframe">
<i class="fa fa-circle-o"></i>${pr.privilegeName}
</a>
</li>
</c:forEach>
</ul>