亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

JSP+Servlet培訓班作業管理系統[5]-加載角色對應菜單

2019-11-06 07:46:40
字體:
來源:轉載
供稿:網友

接上一篇,現在需要讓不同角色的用戶登錄之后,index.jsp頁面左側菜單欄看到不同的菜單,此時貓哥想到兩種方式:

方式1,將菜單和角色-菜單的對應信息保存到數據庫中。方式2,將菜單和角色-菜單的對應信息直接保存到內存中。

因為培訓班作業管理系統較為簡單,所以直接采用方式2:

task3-8,添加一個Constant類用于保存常量的信息如下:

package util;import java.util.HashMap;public class Constant {//保存常量信息 //roleMenu用于保存角色及對應的菜單信息 public static HashMap<String,String[][]> roleMenu=new HashMap<String,String[][]>(); //使用static代碼塊對roleMenu進行初始化 static{ //注意,二位數組中的每一組表示一個菜單的信息,又通過map建立了角色名和菜單直接的對應關系 roleMenu.put("校長", new String[][]{ {"人員管理","userManage","userManage.jsp"},//每組三個元素分別對應菜單名,菜單對應的Servlet參數,菜單對應的jsp {"信息查詢","viewInfo","viewInfo.jsp"} }); roleMenu.put("教師", new String[][]{}); roleMenu.put("學生", new String[][]{}); }}

task3-9,所以,用戶登錄時,應同時將該用戶對應的菜單信息保存到session中。故修改LoginServlet如下:

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//處理post請求 //設置輸入輸出格式、編碼 response.setContentType("text/html"); request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); //獲取用戶在網頁輸入的用戶名和密碼 String userName=request.getParameter("userName"); String userPassWord=request.getParameter("userPassword"); //數據庫操作 LoginCommand lc=new LoginCommand(); User user=null; try { user=lc.checkLogin(userName, userPassword); if(user==null) throw new MyException(new Date(),"用戶名或者密碼錯誤","用戶名或者密碼錯誤"); //根據user.getUserRole();用戶角色顯示不同內容 request.getSession().setAttribute("loginUser", user);//記錄登錄用戶信息 String[][] loginRoleMenu=Constant.roleMenu.get(user.getUserRole().getRoleName());//根據用戶角色名找到對應菜單信息 request.getSession().setAttribute("loginRoleMenu", loginRoleMenu);//記錄登錄用戶的菜單信息 request.getRequestDispatcher("/index.jsp").forward(request,response);//跳轉到index.jsp } catch (MyException e) { //跳轉到錯誤提示頁面,并提示用戶錯誤信息 request.setAttribute("errorInfo", e.getInfo());//設置錯誤信息 request.getRequestDispatcher("/error.jsp").forward(request,response);//跳轉到error.jsp } }

task3-10,然后就是修改index.jsp頁面左側菜單欄的菜單列表了,將如下代碼:

<div id="left"> <ul> <li><a href="/HomeworkSystem/RouteServlet?type=userManage">人員管理</a></li> <li><a href="/HomeworkSystem/RouteServlet?type=viewInfo">信息查詢</a></li> </ul></div><!-- left部分是菜單欄 -->

修改為:

<div id="left"> <ul> <c:forEach items="${loginRoleMenu}" var="menu"> <li> <a href="/HomeworkSystem/RouteServlet?type=${menu[1]}">${menu[0]}</a> </li> </c:forEach> </ul> </div><!-- left部分是菜單欄 -->

PS:貓哥以前還真沒用c:forEach處理過二維數組,突然有點懵圈,百度了一下更加懵圈,幸虧自己又想起來了,真是年齡大了。

OK,重新部署后運行,果然是index.jsp顯示沒有問題,接下來繼續處理菜單欄點擊之后的處理。

task3-11,修改RouteServlet類的doPost方法如下:

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//處理post請求 //設置輸入輸出格式、編碼 response.setContentType("text/html"); request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); //獲取用戶在網頁輸入的用戶名和密碼 String type=request.getParameter("type"); //將type設置為根據Session中的loginRoleMenu匹配 String[][] loginRoleMenu=(String[][])request.getSession().getAttribute("loginRoleMenu"); //尋找對應Servlet路徑的jsp文件名 for(String[] menu:loginRoleMenu){ if(menu[1].equals(type)){ type=menu[2]; } } request.setAttribute("type",type); request.getRequestDispatcher("/index.jsp").forward(request,response);//跳轉到index.jsp }

重新部署、運行,達到了想要的效果,同時將菜單的相關信息都放置在了Constants類中,之后無論是想把菜單信息放到數據庫還是配置文件,都好解決,通過Constants轉換下就行唄。

PS:貓哥好像無意中還實現了一個功能,因為RouteServlet中要去loginRoleMenu查找對應的jsp名,而loginRoleMenu又跟登錄用戶角色相關。那么是不是可以說,一個角色想訪問另一個角色的菜單對應的jsp頁面,是會報錯的。這個錯誤信息可以直接跳轉到error.jsp頁面,并顯示無訪問權限就可以了。

純屬PS,下篇驗證下。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久综合av| 成人黄色中文字幕| 色妞一区二区三区| 国模吧一区二区三区| 日韩欧美一区二区三区| 成人黄色av网| 一个人看的www久久| 欧美色道久久88综合亚洲精品| 美女精品久久久| 亚洲第五色综合网| 97欧美精品一区二区三区| 欧美日韩激情视频| 亚洲一级黄色av| 日韩欧美国产激情| 国产激情久久久久| 欧美xxxx综合视频| 午夜精品久久久久久久99黑人| 97精品国产97久久久久久免费| 美女扒开尿口让男人操亚洲视频网站| 国产精品视频99| 日韩在线观看免费全集电视剧网站| 成人日韩av在线| 日韩av免费在线观看| 亚洲女在线观看| 欧洲成人免费aa| 精品亚洲夜色av98在线观看| 亚洲人在线观看| 国产精品久久久91| 亚洲一区二区三区毛片| 精品日韩中文字幕| 日韩精品视频在线播放| 91高清免费视频| 亚洲男人的天堂网站| 亚洲最大av网站| 国产精品一区二区三区在线播放| 亚洲欧美日韩久久久久久| 日本欧美黄网站| 欧美在线性爱视频| 亚洲精品白浆高清久久久久久| 久久久精品美女| 国产aⅴ夜夜欢一区二区三区| 日韩黄色av网站| 国产mv久久久| 91wwwcom在线观看| 国产精品美女www| 欧美裸体xxxx极品少妇软件| 日韩人体视频一二区| 2019日本中文字幕| 日韩一区二区欧美| 亚洲高清一区二| 亚洲va男人天堂| 欧美大人香蕉在线| 国产精品一二三视频| 欧美日韩性视频| 欧美理论片在线观看| 日韩精品视频免费专区在线播放| 黄色成人在线免费| 精品国内亚洲在观看18黄| 18性欧美xxxⅹ性满足| 日韩精品免费看| 国产精品久久中文| 亚洲男人天堂2019| 欧美成人免费全部观看天天性色| 国外成人性视频| 亚洲偷欧美偷国内偷| 福利一区福利二区微拍刺激| 色中色综合影院手机版在线观看| 日韩欧美一区二区三区久久| 亚洲午夜精品视频| 亚洲一区二区免费| 国产精品福利网站| 亚洲电影天堂av| 91久久久久久| 92国产精品久久久久首页| 欧美日韩aaaa| 国产精品自产拍在线观看| 成人www视频在线观看| 久久影院资源站| 97在线视频观看| 欧美成人精品激情在线观看| 日韩欧美国产网站| 日韩久久免费电影| 久久网福利资源网站| 日韩电影中文字幕一区| 精品久久久久久中文字幕一区奶水| 亚洲电影在线观看| 国产欧美日韩中文| 成人免费网站在线看| 69久久夜色精品国产69乱青草| 色综久久综合桃花网| 久久综合久久美利坚合众国| 伊人久久精品视频| 自拍偷拍亚洲在线| 久久久精品网站| 亚洲第一国产精品| 国产精品免费电影| 亚洲伊人久久大香线蕉av| 日韩一区二区三区在线播放| 中文.日本.精品| 91久久精品久久国产性色也91| 久久久成人精品| 超薄丝袜一区二区| 国产亚洲精品久久久久久| 亚洲丝袜在线视频| 97在线视频免费播放| 亚洲理论片在线观看| 日本人成精品视频在线| 国产精品成人aaaaa网站| 欧美成人性色生活仑片| 成人在线观看视频网站| 日韩激情视频在线播放| 亚洲国产又黄又爽女人高潮的| 亚洲xxxx做受欧美| 日韩中文视频免费在线观看| 亚洲在线一区二区| 91av在线视频观看| 欧美精品久久久久久久免费观看| 国产成人亚洲综合| 国产97在线|日韩| 亚洲视频网站在线观看| 日韩亚洲欧美中文高清在线| 午夜精品99久久免费| 国产精品私拍pans大尺度在线| 国产精品丝袜一区二区三区| 欧美日韩成人网| 欧美疯狂做受xxxx高潮| 精品国偷自产在线视频99| 97精品一区二区三区| 欧美精品一区二区免费| 久热精品视频在线观看一区| 国产免费亚洲高清| 欧美激情在线有限公司| 一本色道久久88亚洲综合88| 91成人天堂久久成人| 国产精品高潮视频| 日韩欧美aⅴ综合网站发布| 亚洲一区二区三区四区视频| 欧美精品成人91久久久久久久| 亚洲国产成人久久综合一区| 成人网在线免费观看| 欧美高清视频一区二区| 日韩在线观看免费全| 在线亚洲午夜片av大片| 亚洲无av在线中文字幕| 久国内精品在线| 少妇高潮 亚洲精品| 亚洲第一区第二区| 国产一区二区三区直播精品电影| 亚洲欧美国产日韩中文字幕| 国产成人一区二区三区电影| 美日韩在线视频| 91精品国产91久久久久久吃药| 国产一区视频在线播放| 国产精品扒开腿做爽爽爽视频| 亚洲午夜久久久影院| 久久久久国产精品一区| 欧美在线影院在线视频| 一本色道久久88亚洲综合88| 国产亚洲欧美另类中文| 色视频www在线播放国产成人| 午夜精品一区二区三区在线| 久久国产精品久久国产精品| 欧美日韩一二三四五区| 亚洲人精品午夜在线观看|