实现要求:

(a)输入要购买的商品

jsp java 购物车 jsp做个简单的购物车_html


(b)点击提交按钮后

jsp java 购物车 jsp做个简单的购物车_html_02


(c)结账页面将所选择的商品全部列出

jsp java 购物车 jsp做个简单的购物车_jsp_03

代码实现:

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就已经结束了
所以,重新运行的时候,就不会再在原本的基础上就行累加