思路:大部分购物网站都会实现购物车的功能,基于session对象的购物车应用可以实现一个用户会话有效期内,用户所选多个商品的存储。
要求: 编写三个JSP页面login.jsp、main.jsp和shoppingCart.jsp,login.jsp页面提供一个表单,要求用户输入用户名称,表单提交给主页面main.jsp。
session:在session对象的生命周期内,它可以保存用户的信息,实现项目中多个页面之间信息的传递。
login.jsp
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3 <!DOCTYPE html>
4 <html>
5 <head>
6 <meta charset="UTF-8">
7 <title>用户登录</title>
8 </head>
9 <body>
10 欢迎,请输入你的姓名:
11 <form action="main.jsp" method="get">
12 <input type="text" name="id"><br/>
13 <input type="submit" value="登录">
14 </form>
15 </body>
16 </html>
main.jsp
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3 <!DOCTYPE html>
4 <html>
5 <head>
6 <meta charset="UTF-8">
7 <title>主页面</title>
8 </head>
9 <body>
10 <%
11 String userName=(String) session.getAttribute("userName");//获取session对象的用户名称
12 if(userName==null)//如果没有名称,就获取提交的用户名
13 {
14 String userName1=request.getParameter("id");//获取提交的用户名
15 if(userName1==null)//如果没有提交用户名,返回登录页面
16 {
17 response.sendRedirect("login.jsp");
18 }
19 else//提交了用户名,却没有存进session
20 {
21 session.setAttribute("userName", userName1);//如果已经提交用户名,就将用户名存储进session对象
22 out.println(userName1+"欢迎登录,请选择你想要的商品");
23 }
24 }
25 else//已经存进session
26 {
27 out.println(userName+"欢迎登录,请选择你想要的商品");
28 }
29 %>
30 <form action="shoppingCart.jsp" method="get">
31 <input type="checkbox" name="goods" value="铅笔">铅笔<br/>
32 <input type="checkbox" name="goods" value="橡皮">橡皮<br/>
33 <input type="checkbox" name="goods" value="尺子">尺子<br/>
34 <input type="checkbox" name="goods" value="纸巾">纸巾<br/>
35 <input type="checkbox" name="goods" value="可乐">可乐<br/>
36 <input type="checkbox" name="goods" value="耳机">耳机<br/>
37 <input type="submit" value="添加到购物车">
38 </form>
39 </body>
40 </html>
shoppingCart.jsp
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8" import="java.util.Vector" %>
3 <!DOCTYPE html>
4 <html>
5 <head>
6 <meta charset="UTF-8">
7 <title>购物页面</title>
8 </head>
9 <body>
10 <% String userName=(String) session.getAttribute("userName");//获取当前session对象的用户
11 Vector goods=(Vector) session.getAttribute("shoppingCart");//获取session对象的购物车
12 if(userName==null)
13 {
14 response.sendRedirect("main.jsp");
15 }
16 if(goods==null)//如果购物车为空,新建
17 goods=new Vector();
18 String []g=request.getParameterValues("goods");
19 if(g!=null)//不为空,添加进goods
20 {
21 for(int i=0;i<g.length;i++)
22 goods.add(g[i]);
23 }
24 session.setAttribute("shoppingCart",goods);//设置session对象的购物车,将goods加入
25 out.println("您的用户名为:"+userName);
26 out.println("<br/>购物车中的商品有:<br>");
27 for(int j=0;j<goods.size();j++)//输出goods
28 {
29 out.println(goods.get(j)+"<br/>");
30 }
31 %>
32 </body>
33 </html>
总结:简单的运用了session对象的特性,运用了session的getAttribute、setAttribute方法,运用了vector存储购物车中的商品。