• 购物车系列教材 (三)- 用户模块


    要进行购买,还需要用户处于登陆状态,因为后续生成的订单,需要挂在某个用户的名下。

    步骤1:SQL
    步骤2:User
    步骤3:UserDAO
    步骤4:login.jsp
    步骤5:UserLoginServlet
    步骤6:配置web.xml
    步骤7:listProduct.jsp
    步骤8:测试

    步骤 1 : SQL

    Product模块类似的,不提供完整的用户CRUD(增 删 改 查) 也是通过SQL准备User数据。

    create table user(

    id int,

    name varchar(50),

    password varchar(50)

    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    insert into user values(1,'tom','123');

    步骤 2 : User

    User 类

    package bean;

    public class User {

        private int id;

        private String name;

        private String password;

        public int getId() {

            return id;

        }

        public void setId(int id) {

            this.id = id;

        }

        public String getName() {

            return name;

        }

        public void setName(String name) {

            this.name = name;

        }

        public String getPassword() {

            return password;

        }

        public void setPassword(String password) {

            this.password = password;

        }

    }

    步骤 3 : UserDAO

    根据name和password查询表user,如果有数据就表示账号密码正确

    package dao;

    import java.sql.Connection;

    import java.sql.DriverManager;

    import java.sql.PreparedStatement;

    import java.sql.ResultSet;

    import java.sql.SQLException;

    import bean.User;

    public class UserDAO {

        public static void main(String[] args) {

            System.out.println(new UserDAO().getUser("tom""123").getId());

        }

        public User getUser(String name, String password) {

            User result = null;

            try {

                Class.forName("com.mysql.jdbc.Driver");

                Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/cart?characterEncoding=UTF-8",

                        "root""admin");

                String sql = "select * from user where name = ? and password = ?";

                PreparedStatement ps = c.prepareStatement(sql);

                ps.setString(1, name);

                ps.setString(2, password);

                ResultSet rs = ps.executeQuery();

                if (rs.next()){

                    result = new User();

                    result.setId(rs.getInt(1));

                    result.setPassword(password);

                    result.setName(name);

                }

                ps.close();

                c.close();

            catch (ClassNotFoundException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            catch (SQLException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

            return result;

        }

    }

    步骤 4 : login.jsp

    登陆页面

    login.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"

        pageEncoding="UTF-8" import="java.util.*"%>

    <!DOCTYPE html>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <form action="login" method="post">

        账号: <input type="text" name="name"> <br> 

        密码: <input type="password" name="password"> <br> 

        <input type="submit" value="登录">

    </form>

    步骤 5 : UserLoginServlet

    登陆Servlet, 通过name和password获取user对象

    如果对象不为空,就表示账号密码正确,跳转到产品显示界面 /listProduct 
    如果对象为空,就跳转到登陆界面,重新登陆

    package servlet;

    import java.io.IOException;

    import javax.servlet.ServletException;

    import javax.servlet.http.HttpServlet;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

    import bean.User;

    import dao.UserDAO;

    public class UserLoginServlet extends HttpServlet {

        protected void service(HttpServletRequest request, HttpServletResponse response)

                throws ServletException, IOException {

            String name = request.getParameter("name");

            String password = request.getParameter("password");

            User user = new UserDAO().getUser(name, password);

            if (null != user) {

                request.getSession().setAttribute("user", user);

                response.sendRedirect("/listProduct");

            else

                response.sendRedirect("/login.jsp");

        }

    }

    步骤 6 : 配置web.xml

    在web.xml中为路径/login加上相关配置

    <?xml version="1.0" encoding="UTF-8"?>

    <web-app>

      

        <servlet>

            <servlet-name>ProductListServlet</servlet-name>

            <servlet-class>servlet.ProductListServlet</servlet-class>

        </servlet>

      

        <servlet-mapping>

            <servlet-name>ProductListServlet</servlet-name>

            <url-pattern>/listProduct</url-pattern>

        </servlet-mapping>

        <servlet>

            <servlet-name>LoginServlet</servlet-name>

            <servlet-class>servlet.UserLoginServlet</servlet-class>

        </servlet>

      

        <servlet-mapping>

            <servlet-name>LoginServlet</servlet-name>

            <url-pattern>/login</url-pattern>

        </servlet-mapping>

      

    </web-app>

    步骤 7 : listProduct.jsp

    修改listProduct.jsp,如果用户登陆了,就显示用户的名字

    <c:if test="${!empty user}">

      <div align="center">

        当前用户: ${user.name}

      </div>

    </c:if>

    listProduct.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"

        pageEncoding="UTF-8" import="java.util.*" isELIgnored="false"%>

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

    <c:if test="${!empty user}">

      <div align="center">

        当前用户: ${user.name}

      </div>

    </c:if>

    <table align='center' border='1' cellspacing='0'>

        <tr>

            <td>id</td>

            <td>名称</td>

            <td>价格</td>

            <td>购买</td>

        </tr>

        <c:forEach items="${products}" var="product" varStatus="st">

            <tr>

                <td>${product.id}</td>

                <td>${product.name}</td>

                <td>${product.price}</td>

                <td>

                 

                <form action="addOrderItem" method="post">

                 

                数量<input type="text" value="1" name="num">

                <input type="hidden" name="pid" value="${product.id}">

                <input type="submit" value="购买">

                </form>

                  

            </tr>

        </c:forEach>

    </table>

    步骤 8 : 测试

    访问登陆页面,输入账号密码: tom: 123

    http://127.0.0.1/login.jsp

    测试


    更多内容,点击了解: https://how2j.cn/k/cart/cart-user/597.html

  • 相关阅读:
    如何配置mysql的超时时间
    什么是P2P流标
    为何农历10月1号要祭祖上坟?原来有这么多讲究,你知道吗?
    “请家堂”的旧习俗不是封建迷信
    sourcetree合并分支
    mybatis sql参考
    source tree使用经验
    关于 early Z 与 z-prepass
    发现一个好工具RenderDoc
    HASHSET不能预留容量问题
  • 原文地址:https://www.cnblogs.com/Lanht/p/12789431.html
Copyright © 2020-2023  润新知