用户登录实现思想

①找到登录界面 提交表单到 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"%>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章