1. 程式人生 > >28、示例1--完成登入操作和條件查詢

28、示例1--完成登入操作和條件查詢

學習目標:

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>