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

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

步骤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

原文地址:https://www.cnblogs.com/Lanht/p/12789431.html