学习目标:
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>