28、示例1--完成登入操作和條件查詢
阿新 • • 發佈:2018-12-03
學習目標:
1、再通過示例鞏固前面學習的知識
2、熟練使用MVC思想指導實際專案的開發
學習過程:
我們先完成登入吧這裡我們把業務邏輯分為使用者管理和登入兩個,所以我們建立兩個Servlet:LoginServlet和UserServlet,我們先完成登入功能。
一、登入功能
1、修改index.jsp,完成登入頁面的設計,和前面沒有什麼區別,提交到登陸Servlet就行了惡。程式碼如下:
<body> <form action="loginServlert" method="post"> 使用者名稱:<input name="username" /> <br /> 密碼:<input name="pass" type="password" /> <br /> <input type="submit" value="登入" /> </form> </body>
2、完成登入的Servlet。登入失敗就重新定向到登入頁面,登入成功就重定向到使用者管理的servlet。這裡需要登入成功後把使用者資訊儲存在session作用域中。
public class LoginServlert extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { UserDao userDao=new UserDao(); String username=request.getParameter("username"); String pass=request.getParameter("pass"); User user=userDao.login(username, pass); if(user!=null){ request.getSession().setAttribute("user", user); response.sendRedirect("admin/userServlet?op=list"); }else{ response.sendRedirect("index.jsp"); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
這樣我們就完成了登入功能了,退出的Servlet,就是要把Session登出了。Servlet程式碼如下:
public class LogoutServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.getSession().invalidate(); response.sendRedirect("index.jsp"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
下面我們完成使用者管理。
二、使用者列表
為了讓使用者管理servlet能夠同時實現增刪改查,所以這裡我們就讓每個頁面的操作都傳遞一個變數值,決定當前是哪一步的操作。
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
UserDao userDao = new UserDao();
String op = request.getParameter("op");// 讓頁面傳遞一個操作變數
if (op == null || op.equals("list")) {
} else if (op.equals("add")) {
} else if (op.equals("delete")) {
} else if (op.equals("toupdate")) {
} else if (op.equals("update")) {
}
}
現在先完成使用者列表的展示,所以對應的查詢程式碼如下:
if (op == null || op.equals("list")) {
List<User> users = userDao.getAll();
request.setAttribute("users", users);
request.getRequestDispatcher("listuser.jsp").forward(request,
response);
}
靜態頁面listuser.jsp實現如下:
<body>
歡迎你:${user.username }
<a href="logoutServlet">登出</a>
<br />
<a href="admin/useradd.jsp">註冊使用者</a>
<table border="1" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th height="25">序號</th>
<th>使用者名稱</th>
<th>性別</th>
<th>基本操作</th>
</tr>
</thead>
<tbody>
<c:forEach items="${users }" var="user" varStatus="status">
<tr>
<td>${status.index+1 }</td>
<td>${user.username }</td>
<td><c:choose>
<c:when test="${user.sex eq 1 }">男</c:when>
<c:otherwise>女</c:otherwise>
</c:choose></td>
<td><a href="admin/userServlet?op=delete&uid=${user.userId} "
onclick="return confirm('你真的要刪除嗎?')">刪除</a> | <a
href="admin/userServlet?op=toupdate&uid=${user.userId}">修改</a></td>
</tr>
</c:forEach>
</tbody>
</table>
</body>