知识小回顾
要求:
1. JSP提交商品单价和购买数量,生成显示折扣后购买商品的总价格页面;
2. 编写一个JavaBean计算;
3. Servlet用来获取提交的数据,调用折扣计算方法;
4. 此外还有防止各种不正确的输入,如:输入非负数字、空,负数等。
(代码2改为在Servlet计算)
代码1
JSP(index.jsp)
<%--
Created by IntelliJ IDEA.
User: iyeungim
Date: 2020/4/18
Time: 15:16
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="Entity.Total" %>
<html>
<head>
<title>Total</title>
<script language="javascript">
function checkPri() {
var p1 = document.getElementById("price");
p1 = p1.value;
var n1 = document.getElementById("num");
n1 = n1.value;
if ((p1=="" )||(n1==""))
{
alert("输入均不能为空!");
return false;
}else if(isNaN(p1)||isNaN(n1)){
alert("单价和数量都只能为数字!");
return false;
}else if((p1<0)||(n1<0)) {
alert("单价和数量都只能为大于0的数字!");
return false;
}else {
return true;
}
}
</script>
</head>
<body>
<h1>商品合计</h1>
<form action="FinalPrice" method="post" name="forms" onsubmit="return checkPri()">
商品单价:<input id="price" type="text" name="price" placeholder="请输入商品单价"><br><br>
商品数量:<input id="num" type="text" name="num" placeholder="请输入商品数量"><br><br>
<input type="submit" name="提交" value="提交" ><br><br>
</form>
</body>
</html>
JSP(index.jsp,final.jsp)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="Entity.Total" %>
<%@ page import="Bean.Add" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<div>
总价:<input type="text" name="sum" value="${sum}">
<br><br><a href="index.jsp">返回上一页</a>
</div>
</body>
</html>
JavaBean(Add.java)
package Bean;
public class Add {
public double price;
public int num;
public double sum;
public Add() {}
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 double sum(){
if ((price > 0) && (price < 100)){
price = price;
}else if((price >= 100) && (price < 300)){
price = price*0.95;
}else if((price >= 300) && (price < 1000)){
price = price*0.9;
}else if(price>=1000){
price = price*0.85;
}else{
System.out.println("请输入0以上数字");
}
double sum = price * num;
return sum;
}
}
Servlet(FinalPrice.java)
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;
import Bean.Add;
@WebServlet("/FinalPrice")
public class FinalPrice extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
req.setCharacterEncoding("utf-8");
String s1 = req.getParameter("price");
String s2 = req.getParameter("num");
Add add = new Add();
add.setPrice(Double.parseDouble(req.getParameter("price")));
add.setNum(Integer.parseInt(req.getParameter("num")));
Double sum = add.sum();
req.setAttribute("sum", sum);
req.getRequestDispatcher("final.jsp").forward(req, resp);
}
@Override
protected void doPost (HttpServletRequest req, HttpServletResponse resp)
throws SecurityException, IOException, ServletException {
doGet(req, resp);
}
}
代码2
JavaBean(Add.java)
package Bean;
public class Add {
public double price;
public int num;
public Add() {
}
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;
}
}
Servlet(FinalPrice.java)
@WebServlet("/FinalPrice")
public class FinalPrice extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
req.setCharacterEncoding("utf-8");
String s1 = req.getParameter("price");
String s2 = req.getParameter("num");
Add add = new Add();
add.setPrice(Double.parseDouble(req.getParameter("price")));
add.setNum(Integer.parseInt(req.getParameter("num")));
if ((add.getPrice() > 0) && (add.getPrice() < 100)){
double sum = add.getPrice() *add.getNum();
req.setAttribute("sum", sum);
}else if((add.getPrice() >= 100) && (add.getPrice() < 300)){
double sum = add.getPrice() * 0.95 * add.getNum();
req.setAttribute("sum", sum);
}else if((add.getPrice() >= 300) && (add.getPrice()< 1000)){
double sum = add.getPrice() * 0.9 * add.getNum();
req.setAttribute("sum", sum);
}else if(add.getPrice()>=1000){
double sum = add.getPrice() * 0.85 * add.getNum();
req.setAttribute("sum", sum);
}else{
System.out.println("请输入0以上数字");
}
req.getRequestDispatcher("final.jsp").forward(req, resp);
}
}