用戶登錄實現思想

①找到登錄界面 提交表單到 action爲一個servlet地址

HttpSession session = request.getSession();
String username = request.getParameter("username");
String password = request.getParameter("password");
UserService userService=new UserService();
User user=null;
try {
  user = userService.checkLogin(username, password);
} catch (SQLException e) {
    e.printStackTrace();
}
if (user==null){
    System.out.println("登錄失敗");
    request.setAttribute("loginInfo","用戶名或密碼錯誤");
    request.getRequestDispatcher("/login.jsp").forward(request,response);
}else {
   session.setAttribute("user",user);
   response.sendRedirect(request.getContextPath());
}

我們可以看到首先獲取用戶名以及密碼 查詢的結果是一個對象

然後進行判斷 爲空則登錄失敗 然後把錯誤信息存儲到request域中 然後進行請求轉發到登錄頁面 顯示錯誤信息

<div><span style="color: red">${loginInfo}</span></div>

登錄成功則把user對象存儲到session域中

然後重定向到首頁

service層

public User checkLogin(String username, String password) throws SQLException {
    UserDao userDao=new UserDao();
    User user=userDao.checkLogin(username,password);
    return user;
}

dao層

public User checkLogin(String username, String password) throws SQLException {
    QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
    String sql = "select * from user where username=? and password=?";
    return runner.query(sql, new BeanHandler<User>(User.class), username,password);
}

②定位到首頁

<ol class="list-inline">
   <c:if test="${empty user }">
      <li><a href="login.jsp">登錄</a></li>
      <li><a href="register.jsp">註冊</a></li>
   </c:if>
   <c:if test="${!empty user }">
      <li>歡迎您,${user.username }</li>
      <li><a href="#">退出</a></li>
   </c:if>
   
   <li><a href="cart.jsp">購物車</a></li>
   <li><a href="order_list.jsp">我的訂單</a></li>
</ol>

這個時候我們的菜單要動態進行顯示 user對象爲空 和不爲空兩種情況 剛開始時候沒登錄肯定爲空

所以不會顯示歡迎你 以及退出

另外這個使用了jstl 所以首先要導入jstl (很重要 否則 會出現都存在的情況)

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章