• 新版网站前后台即将上线,2019年将致力于提高文章质量,加大原创力度,打造一个更加舒适的阅读体验!
  • 极客文库小编@勤劳的小蚂蚁,为您推荐每日资讯,欢迎关注!
  • 新版网站前后台即将上线,2019年将致力于提高文章质量,加大原创力度,打造一个更加舒适的阅读体验!
  • 如果有任何体验不佳的地方,欢迎向客服反馈!

Javaweb网上商城项目实战(10)完成用户登录功能

文章目录[隐藏]

用户登录原理分析

完成用户登录功能

修改/jsp/index.jsp 里的登录链接

index.jsp

<li><a href="${pageContext.request.contextPath}/UserServlet?method=loginUI">登录</a></li>

在/jsp/login.jsp 中设置 form 标签 action,method

login.jsp

<form class="form-horizontal" action="${pageContext.request.contextPath}/UserServlet?method=userLogin" method="post">

在/jsp/login.jsp 中设置表单下 input 标签的 name 属性

login.jsp

<input type="text" name="username" class="form-control" id="username" placeholder="请输入用户名">
<input type="password" name="password" class="form-control" id="inputPassword3" placeholder="请输入密码">

编写 UserServlet 下的 loginUI 方法

UserServlet.java

public String loginUI(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    return "/jsp/login.jsp";
}

在 USerServlet 中完成 userLogin

UserServlet.java

// userLogin
public String userLogin(HttpServletRequest request, HttpServletResponse response) throws Exception {
    // 获取用户数据(账户/密码)
    User user = new User();
    MyBeanUtils.populate(user, request.getParameterMap());

    // 调用业务层登录功能
    UserService UserService = new UserServiceImp();
    User user02 = null;
    try {
        // select * from user where username=? and password=?
        user02 = UserService.userLogin(user);
        // 用户登录成功,将用户信息放入 session 中
        request.getSession().setAttribute("loginUser", user02);
        response.sendRedirect("/store_v1/index.jsp");
        return null;
    } catch (Exception e) {
        // 用户登录失败
        String msg = e.getMessage();
        System.out.println(msg);
        // 向 request 放入失败的信息
        request.setAttribute("msg", msg);
        return "/jsp/login.jsp";
    }
}

完善 UserService 及实现类中的 userLogin

UserService.java

User userLogin(User user)throws SQLException;

UserServiceImp.java

@Override
public User userLogin(User user) throws SQLException {
    //此处:可以利用异常在模块之间传递数据
    UserDao UserDao=new UserDaoImp();
    //select * from user where username=? and password=?
    User uu=UserDao.userLogin(user);
    if(null==uu){
        throw new RuntimeException("密码有误!");
    }else if(uu.getState()==0){
        throw new RuntimeException("用户未激活!");
    }else{
        return uu;
    }
}

完善 UserDao 及其实现类中的 userLogin

UserDao.java

User userLogin(User user)throws SQLException;

UserDaoImp.java

@Override
public User userLogin(User user) throws SQLException {
    String sql="select * from user where username=?  and password= ?";
    QueryRunner qr=new QueryRunner(JDBCUtils.getDataSource());
    return qr.query(sql, new BeanHandler<User>(User.class),user.getUsername(),user.getPassword());
}

完善登录页面

index.jsp中引入 EL 表达式

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<div class="col-md-3" style="padding-top: 20px">
    <ol class="list-inline">
        <c:if test="${empty loginUser}">
            <li><a href="${pageContext.request.contextPath}/UserServlet?method=loginUI">登录</a></li>
            <li><a href="${pageContext.request.contextPath}/UserServlet?method=registUI">注册</a></li>
        </c:if>
        <c:if test="${not empty loginUser}">
        <li>欢迎${loginUser.username}</li>
        <li><a
            href="${pageContext.request.contextPath}/UserServlet?method=logOut">退出</a></li>
        <li><a href="${pageContext.request.contextPath}/jsp/cart.jsp">购物车</a></li>
        <li><a
            href="${pageContext.request.contextPath}/jsp/order_list.jsp">我的订单</a></li>
        </c:if>
    </ol>
</div>

效果演示

运行项目,进入登录页面,输入用户名和密码点击登录

登录成功后跳转到首页,此时右上角已显示欢迎信息,登录成功。

如果密码输入错误,会提示密码有误,如果用未激活的账户登录,会提示用户未激活。

源码下载

下载地址
丨极客文库, 版权所有丨如未注明 , 均为原创丨
本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
转载请注明原文链接:Javaweb 网上商城项目实战(10)完成用户登录功能
喜欢 (0)
[247507792@qq.com]
分享 (0)
Geekerstar
关于作者:
本站技术支持

欢迎 注册账号 登录 发表评论!

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00