HttpSession之简易购物车

创建一个简单的购物车模型,由三个 jsp 和两个 Servlet 组成:

 step1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <h3>Step1:选择要购买的图书</h3>
    <form action="<%=request.getContextPath() %>/processStep1" method="post">
        <table cellpadding="10" cellspacing="0" border="1">

            <tr>
                <td>书名</td>
                <td>购买</td>
            </tr>
            <tr>
                <td>Java</td>
                <td><input type="checkbox" name="book" value="Java"/></td>
            </tr>
            <tr>
                <td>Oracle</td>
                <td><input type="checkbox" name="book" value="Oracle"/></td>
            </tr>
            <tr>
                <td>Struts</td>
                <td><input type="checkbox" name="book" value="Struts"/></td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit"  value="Submit"/></td>
            </tr>
        </table>

    </form>
</body>
</html>

 

ProcessStep1Servlet

package com.aff.javaweb;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/processStep1")
public class ProcessStep1Servlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 获取选中的图书信息
        String[] books = request.getParameterValues("book");// 多个book 放在数组中
        // 把图书信息放入到HttpSession中
        request.getSession().setAttribute("books", books);
        // 重定向页面到shoppingcart/step2.jsp
        // response.sendRedirect("step2.jsp");//这个为相对路径,在同一目录下没问题的
        System.out.println(request.getContextPath() + "/shoppingcart/step2.jsp");///WebCookieT5/shoppingcart/step2.jsp
        response.sendRedirect(request.getContextPath() + "/shoppingcart/step2.jsp");// 绝对路径
    }

}

 

step2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <h3>Step2: 请输入寄送地址和信用卡信息</h3>
    <form action="<%=request.getContextPath() %>/processStep2" method="post">
        <table cellpadding="10" cellspacing="0" border="1">

            <tr>
                <td colspan="2">基本信息</td>
            </tr>
            <tr>
                <td>姓名</td>
                <td><input type="text" name="name" /></td>
            </tr>
            <tr>
                <td>寄送地址</td>
                <td><input type="text" name="address" /></td>
            </tr>
            <tr>
                <td colspan="2">寄送信用卡信息</td>
            </tr>
            <tr>
                <td >种类</td>
                <td >
                <input type="radio" name="cardType" value="visa" />Visa
                <input type="radio" name="cardType" value="Master" />Master
                </td>
            </tr>
            <tr>
                <td>卡号</td>
                <td><input type="text" name="card"/></td>
            </tr>

            <tr>
                <td colspan="2"><input type="submit" value="Submit" /></td>
            </tr>

        </table>
    </form>
</body>
</html>

 

ProcessStep2Servlet

package com.aff.javaweb;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/processStep2")
public class ProcessStep2Servlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 获取请求参数 name address cardType card
        String name = request.getParameter("name");
        String address = request.getParameter("address");
        String cardType = request.getParameter("cardType");
        String card = request.getParameter("card");
        // 把上面四个属性封装成一个对象,方便很多 
        Customer customer = new Customer(name, address, cardType, card);
// 把请求信息传入到HttpSession中 request.getSession().setAttribute("customer", customer); // 重定向页面到confirm.jsp response.sendRedirect(request.getContextPath() + "/shoppingcart/confirm.jsp"); } }

 

confirm.jsp

<%@page import="com.aff.javaweb.Customer"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <%
        //把之前放入session中的customer对象获取过来
        Customer customer = (Customer) session.getAttribute("customer");
        String[] books = (String[]) session.getAttribute("books");
    %>
    <table bor>
        <tr>
            <td>顾客姓名:</td>
            <td><%=customer.getName()%></td>
        </tr>
        <tr>
            <td>地址:</td>
            <td><%=customer.getAddress()%></td>
        </tr>
        <tr>
            <td>卡号:</td>
            <td><%=customer.getCard()%></td>
        </tr>
        <tr>
            <td>卡的类型:</td>
            <td><%=customer.getCardType()%></td>
        </tr>
        <tr>
            <td>Books:</td>
            <td>
                <%
                    for (String book : books) {
                        out.print(book);
                        out.print("<br>");
                    }
                %>
            </td>
        </tr>
    </table>
</body>
</html>

Customer
package com.aff.javaweb;

public class Customer {
    private String name;
    private String address;
    private String cardType;
    private String card;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getCardType() {
        return cardType;
    }

    public void setCardType(String cardType) {
        this.cardType = cardType;
    }

    public String getCard() {
        return card;
    }

    public void setCard(String card) {
        this.card = card;
    }

    public Customer() {
        super();
        // TODO Auto-generated constructor stub
    }

    public Customer(String name, String address, String cardType, String card) {
        super();
        this.name = name;
        this.address = address;
        this.cardType = cardType;
        this.card = card;
    }

    @Override
    public String toString() {
        return "Customer [name=" + name + ", address=" + address + ", cardType=" + cardType + ", card=" + card + "]";
    }

}

 

posted @ 2020-04-21 12:53  林淼零  阅读(336)  评论(0编辑  收藏  举报