国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JSP > 正文

JSP+Servlet培訓班作業(yè)管理系統(tǒng)[6]-人員管理功能實現(xiàn)

2019-11-06 07:46:37
字體:
來源:轉載
供稿:網(wǎng)友

本篇來具體實現(xiàn)校長角色下的人員管理功能——task4-x

task4-1,首先大體腦海里設計下,人員管理,無非是增、刪、改、查。

查:以一個列表的形式顯示所有人員信息增:有一個網(wǎng)頁,可以輸入一個人員的信息,點擊確定后新增一個人員,并跳轉到“查”頁面改:有一個網(wǎng)頁,可以修改人員信息,網(wǎng)頁樣式可以服用“增”刪:在“查”頁面刪除人員后,更新列表

由以上想法,貓哥大體想把人員管理頁面設計為上中下三部分,上為功能標題,中間為人員列表顯示區(qū)域,下面為操作按鈕區(qū)域。

task4-2,設計userManage.jsp頁面外觀布局如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ taglib CSS"> /*一定需要注意,該頁面因為和index.jsp有嵌套關系, 所以通過id選取元素時,id千萬別和index.jsp中重名了 其余部分之前都講過了,不再詳述*/ #user_top{ height:30px; font-family:"微軟雅黑"; font-size:16px; border-bottom: 1px solid #D4D5D7; } #user_mid{ height:400px; margin-top:5px; } #user_bottom{ background-color:#D4D5D7; margin:5px auto; width:240px; height:20px; line-height:20px; text-align:center; } </style> </head> <body> <div id="user_top"> 人員管理 </div><!-- user_top end --> <div id="user_mid"> 人員列表 </div><!-- user_mid end --> <div id="user_bottom"> 這里是按鈕 </div><!-- "user_bottom" end --> </body></html>

task4-3,現(xiàn)在開始加載列表,應該在RouteServlet里面就設定好attribute,然后在userManage.jsp頁面中加載。如下:

package servlet;import java.io.IOException;import javax.jms.session;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class RouteServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//處理post請求 //設置輸入輸出格式、編碼 response.setContentType("text/html"); request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); //獲取用戶在網(wǎng)頁輸入的用戶名和密碼 String type=request.getParameter("type"); //將type設置為根據(jù)Session中的loginRoleMenu匹配 String[][] loginRoleMenu=(String[][])request.getSession().getAttribute("loginRoleMenu"); //尋找對應Servlet路徑的jsp文件名 for(String[] menu:loginRoleMenu){ if(menu[1].equals(type)){ type=menu[2]; } } //此處應該將人員信息放入request的attribute request.setAttribute("type",type); request.getRequestDispatcher("/index.jsp").forward(request,response);//跳轉到index.jsp }}

但是此時有個問題,RouteServlet是一個Servlet啊,跟數(shù)據(jù)庫交互應該不歸它管。Servlet是個領導啊,只管接受下屬的信息,然后下達指令,哪里還管從數(shù)據(jù)取數(shù)這樣的具體事物。

再深一步想想,其實下面的代碼也不該歸它具體負責,從內(nèi)存中取數(shù)和從數(shù)據(jù)庫中取數(shù)一個事情,下個命令就完事。

//尋找對應Servlet路徑的jsp文件名 for(String[] menu:loginRoleMenu){ if(menu[1].equals(type)){ type=menu[2]; } } //此處應該將人員信息放入request的attribute request.setAttribute("type",type);

task4-4,我們先重新整理下,將從內(nèi)存中匹配jsp頁面邏輯寫在一個新類RouteCommand里面,然后將RouteServlet簡化,同時Session中的loginRoleMenu也沒有了存在的必要。所以具體改動如下:

改動1,修改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"); //將獲取type和Session中的loginUser User loginUser=(User)request.getSession().getAttribute("loginUser"); String type=request.getParameter("type"); //根據(jù)登錄用戶角色名稱,和用戶點擊菜單的type類型,獲取要定向的jsp地址 RouteCommand routeCmd=new RouteCommand(); String jspUrl=routeCmd.findJsp(loginUser.getUserRole().getRoleName(),type); //此處應該將人員信息放入request的attribute request.setAttribute("type",jspUrl); request.getRequestDispatcher("/index.jsp").forward(request,response);//跳轉到index.jsp }

清爽了很多啊。

改動2,RouteCommand

package command;import java.util.Date;import util.Constant;import entity.EntityFactory;import entity.User;import exception.MyException;public class RouteCommand {//接受RouteServlet指令的服務類 //根據(jù)登錄用戶角色名稱,和用戶點擊菜單的type類型,獲取要定向的jsp地址 public String findJsp(String roleName,String requestType){ String[][] loginRoleMenu=Constant.roleMenu.get(roleName); for(String[] menu:loginRoleMenu){ if(menu[1].equals(requestType)){ return menu[2]; } } return null; }}

task4-5,依照這個邏輯,我們將查詢?nèi)藛T列表的功能添加進來。首先修改RouteServlet:

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//處理post請求 //設置輸入輸出格式、編碼 response.setContentType("text/html"); request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); //將獲取type和Session中的loginUser User loginUser=(User)request.getSession().getAttribute("loginUser"); String type=request.getParameter("type"); RouteCommand routeCmd=new RouteCommand(); if(type.equals("userManage")){//如果type是userManage,應該將人員信息放入request的attribute try { request.setAttribute("users",routeCmd.getAllUser()); } catch (MyException e) {//如果有錯誤,跳轉到error.jsp request.setAttribute("errorInfo", e.getInfo());//設置錯誤信息 request.getRequestDispatcher("/error.jsp").forward(request,response);//跳轉到error.jsp } } //根據(jù)登錄用戶角色名稱,和用戶點擊菜單的type類型,獲取要定向的jsp地址 String jspUrl=routeCmd.findJsp(loginUser.getUserRole().getRoleName(),type); request.setAttribute("type",jspUrl); request.getRequestDispatcher("/index.jsp").forward(request,response);//跳轉到index.jsp }

然后在RouteCommand里面添加getAllUser方法

//獲取人員列表 public List<User> getAllUser() throws MyException{//此處不處理異常,交由外部調用地方處理 List<User> users=null; try{ //從數(shù)據(jù)庫中執(zhí)行查詢,此處暫時使用測試工廠類創(chuàng)建一個代替 users=(List<User>)EntityFactory.CreateEntity("UserList"); }catch(Exception e){ throw new MyException(new Date(),e.getMessage(),"數(shù)據(jù)庫訪問異常"); } return users; }

最后為了測試,在測試工廠繼續(xù)修改:

else if(type.equals("UserList")){//獲取人員列表 List<User> users=Arrays.asList( (User)EntityFactory.CreateEntity("User"), (User)EntityFactory.CreateEntity("User"), (User)EntityFactory.CreateEntity("User") ); return users;}

task4-6,最后,修改userManage.jsp頁面中列表部分,以顯示人員列表

<div id="user_mid"> <table id="user_table"> <thead> <tr>人員編碼</tr> <tr>姓名</tr> <tr>角色</tr> </thead> <c:forEach items="${users}" var="item"> <tr> <td>${item.userId}</td> <td>${item.userName}</td> <td>${item.userRole.roleName}</td> </tr> </c:forEach> </table> </div><!-- user_mid end -->

稍微加點css美工下(PS,表格樣式是別人分享的,貓哥無一點藝術細胞….尷尬,此處想告訴大家,美工要多學多練,然后才能寫出專屬于自己的美麗):

/* 以下為表格美工*/ #user_table thead, #user_table tr { border-top-width: 1px; border-top-style: solid; border-top-color: rgb(230, 189, 189); } #user_table { border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(230, 189, 189); } /* Padding and font style */ #user_table td, #user_table th { padding: 5px 10px; font-size: 12px; font-family: Verdana; color: rgb(177, 106, 104); } /* Alternating background colors */ #user_table tr:nth-child(even) { background: rgb(238, 211, 210) } #user_table tr:nth-child(odd) { background: #FFF }

程序運行如下,還是可以的: 這里寫圖片描述

至此,查詢已實現(xiàn)。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 湘阴县| 高碑店市| 抚远县| 巴东县| 时尚| 察哈| 玉溪市| 平乐县| 青神县| 宁化县| 长兴县| 万安县| 普陀区| 老河口市| 庆阳市| 同心县| 清流县| 那坡县| 济源市| 台北市| 安泽县| 乐山市| 黄浦区| 大化| 金沙县| 抚远县| 浦东新区| 金阳县| 双江| 开封县| 理塘县| 大埔县| 正蓝旗| 五家渠市| 万州区| 奈曼旗| 商河县| 无棣县| 阿拉善右旗| 宁明县| 巴塘县|