利用servlet实现对书籍书名、单价、数量等信息的添加,计算总价

1.题目要求

利用servlet实现对书籍书名、单价、数量等信息的添加,计算总价。

要求:输入两次表单信息,在一个成功返回的页面里面显示两次的数据。

2.Book实体类

package com.hjj.sevletgk.hw7.book;

/**
 * @author:嘉佳 Date:2023/10/8 15:16
 **/

public class Book {
    private double price;
    private int num;
    private String bookName;
    private double totalPrice;

    public Book(){

    }

    public Book(double price, int num, String bookName) {
        this.price = price;
        this.num = num;
        this.bookName = bookName;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

    public double getTotalPrice() {
        return this.price*this.num;
    }

    public void setTotalPrice(double totalPrice) {
        this.totalPrice = totalPrice;
    }

}

3.sevlet

package com.hjj.sevletgk.hw7.booksevlet;

import com.hjj.sevletgk.hw7.book.Book;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@WebServlet("/book")
public class BookServlet extends HttpServlet {
    private List<Book> bookList=new ArrayList<>();

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String bookName=req.getParameter("bookName");
        double price = Double.parseDouble(req.getParameter("price"));
        int num = Integer.parseInt(req.getParameter("num"));

        // 把录入的信息添加到列表中
        Book book = new Book(price,num,bookName);
        bookList.add(book);

        // 计算总价
        int totalNum=0;
        double totalPrice = 0;
        for (Book b : bookList) {
            totalNum += b.getNum();
            totalPrice += b.getTotalPrice();
        }

        req.setAttribute("bookList", bookList);
        req.setAttribute("totalPrice", totalPrice);
        req.setAttribute("totalNum", totalNum);

        // 转发到结果页面
        RequestDispatcher dispatcher = req.getRequestDispatcher("hw7/result.jsp");
        dispatcher.forward(req, resp);
    }
}

4.jsp

(1) order.jsp
<%--
  Created by IntelliJ IDEA.
  User: ALASIJIA
  Date: 2023/10/8
  Time: 15:11
  To change this template use File | Settings | File Templates.
--%>
<%@page contentType="text/html;charset=UTF-8"%>
<%@page pageEncoding="UTF-8"%>
<html>
<head>
    <meta charset="UTF-8">
    <title>信息录入</title>
</head>
<body>
<h2>请输入购书信息</h2>
<form method="post" action="${pageContext.request.contextPath}/book" >
    <label for="bookName">书名</label>
    <input type="text" name="bookName" id="bookName"  required><br/>
    <label for="price">单价</label>
    <input type="text" name="price" id="price" required><br/>
    <label for="num">数量</label>
    <input type="text" name="num" id="num" required><br/>
    <input type="submit" value="提交"/>
</form>
</body>
</html>
(2) result.jsp 
<%--
  Created by IntelliJ IDEA.
  User: ALASIJIA
  Date: 2023/10/8
  Time: 15:09
  To change this template use File | Settings | File Templates.
--%>
<%@page contentType="text/html;charset=UTF-8" %>
<%@page pageEncoding="UTF-8" %>
<%@page import="com.hjj.sevletgk.hw7.book.Book" %>
<%@ page import="java.util.List" %>
<html>
<head>
    <title>信息查看</title>
    <meta charset="UTF-8">
    <style>
        h2 {
            text-align: center;
        }

        table {
            /* 合并边框 */
            border-collapse: collapse;
            height: 80px;
            /* 居中 */
            margin: 0 auto;
        }

        th {
            /* 内边距 */
            padding: 5px 20px;
        }

        table, th, td {
            border: 1px solid #000;
        }
    </style>
</head>
<body>
<%--
id:指定实例化的 JavaBean 对象的名称
class:指定要实例化的 JavaBean 对象的类的全类名
--%>
<jsp:useBean id="Book" class="com.hjj.sevletgk.hw7.book.Book"/>
<jsp:setProperty name="Book" property="*"/>
<h2>商品总价</h2>
<%
    request.setCharacterEncoding("UTF-8");
%>

    <table>
        <tr>
            <th>书名</th>
            <th>价格</th>
            <th>数量</th>
            <th>总价</th>
        </tr>
        <% for (Book book : (List<Book>) request.getAttribute("bookList")) { %>
        <tr>
            <td><%= book.getBookName() %></td>
            <td><%= book.getPrice() %></td>
            <td><%= book.getNum() %></td>
            <td><%= book.getTotalPrice() %></td>
        </tr>
        <% } %>
        <tr>
            <%--        该单元格要横跨 2 列--%>
            <td colspan="2"><b>总计:</b></td>
            <td><b>商品总数:</b><%= request.getAttribute("totalNum") %></td>
            <td><b>总价:</b><%= request.getAttribute("totalPrice") %></td>
        </tr>
    </table>
</body>
</html>

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值