jsp实现简易购物车
实现要求:
(a)输入要购买的商品
(b)点击提交按钮后
(c)结账页面将所选择的商品全部列出
代码实现:
b9_shopping.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body><form action="_b9_shopping_sent.jsp" method="post"><h2>请输入要购买的商品:<input type="text" name="book"><input type="submit" name="sent" value="提交"></h2>
</form></body>
</html>
_b9_shopping_sent.jsp:
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body><style>span{color: red;}form{margin-left: 120px;}</style><%!ArrayList<String> list = new ArrayList<String>();
%><%request.setCharacterEncoding("utf-8");String book = request.getParameter("book");list.add(book);session.setAttribute("books", list);
%><h4>提示:您刚才选择了商品<span><%=book %></span>,请问,你还想做什么?<br></h4><form action="_b9_shopping_.jsp" method="post" style="float:left;"><input type="submit" value="继续购买" name="continue"> </form><form action="_b9_shopping_show.jsp" method="post"><input type="submit" value="结账" name="final"> </form></body>
</html>
说明:
这里使用了ArrayList集合,这是因为最终要求把所购买的所有的商品都输出来,所以有多个值
那为什么使用集合而不是用数组,因为集合长度可变,适合进行不断的添加
_b9_shopping_show.jsp:
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body><h2>非常感谢您的光临!您购买的商品有:</h2><br><%@SuppressWarnings("unchecked")//添加这个下面的ArrayList警告就会解除ArrayList<String> l = (ArrayList<String>)session.getAttribute("books");if(l!=null){for(int i = 0 ; i < l.size() ; i++){out.print("商品"+(i+1)+":"+l.get(i)+"<br>");}}
%></body>
</html>
注意:
对于上面的代码,有一个问题所在,就是当结账后,再次重新运行购买商品的时候,商品是在原本的基础上继续累加的
只需要将_b9_shopping_sent.jsp文件中的代码稍作修改即可:
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body><style>span{color: red;}form{margin-left: 120px;}</style><%request.setCharacterEncoding("utf-8");String book = request.getParameter("book");if(book != null && book.length()!=0){ @SuppressWarnings("unchecked")//添加这个下面的ArrayList警告就会解除ArrayList<String> list = (ArrayList<String>)session.getAttribute("books");if(list == null){//books还不存在的时候list = new ArrayList<String>();list.add(book);session.setAttribute("books", list);}else{list.add(book);session.setAttribute("books", list);}}else{//如果为空,让用户返回重新输入response.sendRedirect("_b9_shopping_.jsp");}
%><h4>提示:您刚才选择了商品<span><%=book %></span>,请问,你还想做什么?<br></h4><form action="_b9_shopping_.jsp" method="post" style="float:left;"><input type="submit" value="继续购买"> <!-- 跳转的时候可以在input框中直接加name="continue" οnclick="localtion.href='_b9_shopping_.jsp'"属性 --> </form><form action="_b9_shopping_show.jsp" method="post"><input type="submit" value="结账" name="final"> </form></body>
</html>
_b9_shopping_show.jsp:也需要做一些修改
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body><h2>非常感谢您的光临!您购买的商品有:</h2><br><%@SuppressWarnings("unchecked")//添加这个下面的ArrayList警告就会解除ArrayList<String> l = (ArrayList<String>)session.getAttribute("books");if(l!=null){for(int i = 0 ; i < l.size() ; i++){out.print("商品"+(i+1)+":"+l.get(i)+"<br>");}session.setAttribute("books", null);}
%></body>
</html>
说明:
在原本的基础之上,又添加了if语句进行判断
当浏览器完全结束运行时,此时的session就已经结束了
所以,重新运行的时候,就不会再在原本的基础上就行累加