Web lab 5 JSP/Servlet 实验目的 1)复习和掌握 TOMCAT配置 2)掌握JSP基本语法 3)掌握使用JSP, JavaBean, Servlet进行编程 4)掌握使用 Session进行数据传递的方法 实验任务 通过设计JSP、 Servlet、 JavaBean使用Mv℃模式实现用户登录验证、注销,购物车的添加 移除以及清除商品,页面之间使用 session传递消息 实验环境 Servlet/JSP容器: Apache Tomcat5.5或以上 JDK: Sun JDK1.5或以上 浏览器: Internet Explorer6或以上, Firefox1.5或以上 IDE:任意熟悉的IDE(建议 MyEclipse) 实验检查 完成实验内容后,由助教检查编写的页面效果。 检查清单: JSP index.jsp(商品展示界面 Login.html(用户登录) Shopcart.jsp(购物车显示界面) Servlet Usercheck.java(登录注销处理) Sessioncart.java(购物车操作处理) avabean cart.java(购物车中的单个商品) Category.java(商品目录) Product.java(商品信息) Eshop.java(商店) Userinfo.java(用户信息) War 实验检查通过后,请将自己编写的以上文件打包上传到ftp上的 WORK UPLOAD/lab6/你的学 号目录下,其中学号目录需要自己建立 实验步骤
Web Lab 5 JSP/Servlet 实验目的 1) 复习和掌握TOMCAT配置 2) 掌握JSP 基本语法 3) 掌握使用 JSP ,JavaBean ,Servlet 进行编程 4)掌握使用Session 进行数据传递的方法 实验任务 通过设计 JSP、Servlet、JavaBean 使用 MVC 模式实现用户登录验证、注销,购物车的添加、 移除以及清除商品,页面之间使用 session 传递消息。 实验环境 Servlet/JSP 容器:Apache Tomcat 5.5 或以上 JDK:Sun JDK 1.5 或以上 浏览器:Internet Explorer 6 或以上,Firefox 1.5 或以上 IDE:任意熟悉的 IDE(建议 MyEclipse) 实验检查 完成实验内容后,由助教检查编写的页面效果。 检查清单: JSP index.jsp(商品展示界面) Login.html(用户登录) Shopcart.jsp(购物车显示界面) Servlet Usercheck.java(登录注销处理) Sessioncart.java(购物车操作处理) JavaBean cart.java(购物车中的单个商品) Category.java(商品目录) Product.java(商品信息) Eshop.java(商店) Userinfo.java(用户信息) War Lab6.war 实验检查通过后,请将自己编写的以上文件打包上传到ftp 上的WORK_UPLOAD/lab6/你的学 号目录下,其中学号目录需要自己建立。 实验步骤
本实验使用MwC模式实现 View:负责应用程序的显示 JSP/HTML Modle:代表业务逻辑 JavaBean Controller:负责过程控制 Servlet 参考Lab中关于 MyEclipse和 Tomcat的配置,配置成功后在 My Eclipse中新建项目, 在项目下新建包 estore和 servlet。 1. Model的设计 实验模拟一个简单的购物流程,涉及到的业务逻辑包括:用户信息、商品、 商品目录、商店、由于购物车通过 Session保存,在此只将购物车中的相同商 品作为一个实体 1.1用户信息 用户信息包含用户名和密码,同时提供二者时候匹配的方法,在此项目的包 estore下添加Java文件,代码中使用一个静态的 Arraylist保存由“用户名” “密码”配对组成的 userinfo。可以根据自身情况变换其中的用户名和密码。其 中最后一个方法实现用户验证 1.2商品信息、商品目录、商店、购物车单种商品的实体设计 在项目包 estore下添加如下文件:cart.java Category Product. java, Eshop java 注:各个 JavaBean的源文件在本文档目录给出。 2.view的设计 本实验中的购物,对外显示包括商品展示页面、用户登录页面以及显示购物车 页面。 2.1商品展示页面设计 此页面中需要根据商品的分类列出不同的商品,每件商品必须提供用户可以点 击购买的链接,点击链接后,如果购买成功,应该跳转到购物车页面,提示用户 购买成功。在页面上提供用户可以登录的链接,对于未登录的用户,只能浏览商 品,不能购买(这个功能下一步会通过 Servlet实现) 其中判断当前时候有用户已登录需要通过 session记录用户,实现方法如下 if (session. getAttribute("username")== null out. print("Not Login. <a href= login.html'>Login Now! </a>")i out. print("Welcome session getAttribute(username" ))i out. print ("  <a href=\""+ request. getcontextPath()+ /servlet/usercheck?status=\'logout\'\">Logout</a>")i 展示商品的页面 index.jsp源代码如下 <a@ page language="java pageEncoding=ISo-8859-1 public void jspInit() i getservletContext(). setAttribute("cats estore EShop. getcats()) public void jspDestroy ()
本实验使用MVC模式实现 View:负责应用程序的显示 JSP/HTML Modle:代表业务逻辑 JavaBean Controller:负责过程控制 Servlet 参考Lab1中关于MyEclipse和Tomcat的配置,配置成功后在MyEclipse中新建项目, 在项目下新建包estore和servlet。 1. Model的设计 实验模拟一个简单的购物流程,涉及到的业务逻辑包括:用户信息、商品、 商品目录、商店、由于购物车通过Session保存,在此只将购物车中的相同商 品作为一个实体。 1.1 用户信息 用户信息包含用户名和密码,同时提供二者时候匹配的方法,在此项目的包 estore下添加Java文件,代码中使用一个静态的ArrayList保存由“用户名”- “密码”配对组成的userinfo。可以根据自身情况变换其中的用户名和密码。其 中最后一个方法实现用户验证。 1.2 商品信息、商品目录、商店、购物车单种商品的实体设计 在项目包estore下添加如下文件:cart.java、 Category.java、 Product.java、 Eshop.java 注:各个JavaBean的源文件在本文档目录给出。 2.View的设计 本实验中的购物,对外显示包括商品展示页面、用户登录页面以及显示购物车 页面。 2.1 商品展示页面设计 此页面中需要根据商品的分类列出不同的商品,每件商品必须提供用户可以点 击购买的链接,点击链接后,如果购买成功,应该跳转到购物车页面,提示用户 购买成功。在页面上提供用户可以登录的链接,对于未登录的用户,只能浏览商 品,不能购买(这个功能下一步会通过Servlet实现)。 其中判断当前时候有用户已登录需要通过session记录用户,实现方法如下 if (session.getAttribute("username") == null) out.print("Not Login. <a href='login.html'>Login Now!</a>"); } else{ out.print("Welcome " + session.getAttribute("username")); out.print("  <a href=\"" + request.getContextPath() + "/servlet/usercheck?status=\'logout\'\">Logout</a>");} 展示商品的页面index.jsp源代码如下 <%@ page language="java" pageEncoding="ISO-8859-1" import="java.util.*"%> <%! public void jspInit() { getServletContext().setAttribute("cats", estore.EShop.getCats()); } public void jspDestroy() {
getservletcontext().removeAttribute("cats")i) private String dispPrice( String price)( () if(1en<=2) return price i e⊥se return"s"+ price substring(0, len-2)+"."+ price substring (len-2)i <html> <head> <title>Shopping Mall</title> </head> <body <table width=600> <tr><td> </tdx<td align="right"> <sif (session. getAttribute("username") nu11) out. print("Not Login. <a href='login. html'>Login Now!</a>") out. print ("Welcome session getAttribute("username")) out. print("  <a href=\""+ request. getContextPath() /servlet/usercheck?status=\'logout'\">Logout</a>)i)8> tr>< td width="20号 <8 ArrayList cats =(ArrayList) application. getAttribute("cats")i for (int i=0; i< cats. size()ii++) estore Category curcat =(estore Category) cats get(i)i 8> sturla+ curcat getId(8>> curcat. getName() ></a> <br/ <8}//for /td> <tdx<table border=1> <tr><th align="left">Item</thx<th align="left">Price</th> <th align="left">Order</thx</tr> String selectedcat request getParameter("catid") if (selectedcat u11) lectedcat estore EShop. getItems(selectedcat) ();i++) estore Product curItem =(estore Product) items get (i)i <tr> <td><号= curate. getName()号></td> <td><8= dispPrice(String valueof(curItem getPrice()))8></td>
getServletContext().removeAttribute("cats"); } private String dispPrice( String price) { int len = price.length(); if (len <= 2) return price; else return "$" + price.substring(0,len -2) + "." + price.substring(len-2); } %> <html> <head> <title>Shopping Mall</title> </head> <body > <table width="600"> <tr><td> </td><td align="right"> <%if (session.getAttribute("username") == null) out.print("Not Login. <a href='login.html'>Login Now!</a>"); else { out.print("Welcome " + session.getAttribute("username")); out.print("  <a href=\"" + request.getContextPath() + "/servlet/usercheck?status=\'logout\'\">Logout</a>"); }%> </td></tr> <tr><td width="20%"> <% ArrayList cats = (ArrayList) application.getAttribute("cats"); for (int i=0; i< cats.size(); i++) { estore.Category curCat = (estore.Category) cats.get(i); %> <a href="<%= request.getRequestURL() + "?catid=" + curCat.getId() %>"> <%= curCat.getName() %></a> <br/> <%} //for %> </td> <td><table border="1"> <tr><th align="left">Item</th><th align="left">Price</th> <th align="left">Order</th></tr> <% String selectedCat = request.getParameter("catid"); if (selectedCat == null) selectedCat = "1"; ArrayList items = (ArrayList) estore.EShop.getItems(selectedCat); for (int i=0; i< items.size(); i++) { estore.Product curItem = (estore.Product) items.get(i); %> <tr> <td><%= curItem.getName() %></td> <td><%= dispPrice(String.valueOf(curItem.getPrice())) %></td>
<td><a href="<8= request. getcontextPath()+ curItem. getsku()8>> <b>BUY</b></a></td> 8}号 购买商品链接到自定义的 servlet sessioncart保存购买的商品,并重定向到购 物车显示页面。效果图如下 Welcome admin Logout Systems em Software Pentium 4-4 GHz, 512 MB, 300 GB $98999 BUY AMD Opteron-4 GHz, 1 GB, 300 GB $.99 BUY 2.2购物车显示页面设计 此页面显示用户所购商品的列表,同时用户可以单独增加和减少列表中的商 品,以及清空购物车,这些操作都通过链接到自定义 servlet的 sessioncart下完 成。显示用户购物车中的商品列表,需要从 session中读取用户的购物车,实现 如下 ArrayList mycart =(ArrayList)session. getAttribute("mycart")i 购物车页面需要判断用户是否已登录,通过 session实现,若未登录,跳转到登 录页面 if(session. getAttribute ("username") response. sendRedirect(request. getContextPath()+"/login. html")i 购物车页面 shopcart.jsp源文件如下 <a@ page language=java import="java util.* <isp: directive. page import="estore. *"/> private static String SHOP PAGE ="/index. jsp private static String CART PAGE ="/servlet/sessioncart private string dispPrice( string price)( int len price length( i£(1en<=2) return price return "s"+ price substring(o,len -2)+"."+
<td><a href="<%= request.getContextPath() + "/servlet/sessioncart?action=add&sku=" + curItem.getSku() %>"> <b>BUY</b></a></td> </tr> <% } %> </table></td></tr></table> </body> </html> 购买商品链接到自定义的servlet sessioncart保存购买的商品,并重定向到购 物车显示页面。 效果图如下 2.2 购物车显示页面设计 此页面显示用户所购商品的列表,同时用户可以单独增加和减少列表中的商 品,以及清空购物车,这些操作都通过链接到自定义servlet的sessioncart下完 成。显示用户购物车中的商品列表,需要从session中读取用户的购物车,实现 如下 ArrayList mycart = (ArrayList)session.getAttribute("mycart"); 购物车页面需要判断用户是否已登录,通过session实现,若未登录,跳转到登 录页面 if(session.getAttribute("username") == null) response.sendRedirect(request.getContextPath()+"/login.html"); 购物车页面shopcart.jsp源文件如下 <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> <jsp:directive.page import="estore.*"/> <%! private static String SHOP_PAGE = "/index.jsp"; private static String CART_PAGE = "/servlet/sessioncart"; private String dispPrice( String price) { int len = price.length(); if (len <= 2) return price; else return "$" + price.substring(0,len -2) + "." +
p mice substring (len-2) <oif(session. getAttribute(username") nu11) response. sendRedirect(request. getcontextPath()+"/login. html") <html> <head> <title>My Shopping Cart</title> </head> <body> <table width=600> <trx<td> <table border="1"> <tr><th colspan="6">Your Shopping Cart</th></tr> <tr><th align="left">Quantity</th><th align="left">Item</th> <th align="right">Price</thx<th align="right">Extended</th> <th align="left">Add</th><th align="left">Remove</th> </tr> 81 ArrayList mycart =(Arraylist)session. getAttribute ("mycart " if(mycart ! null & mycart size()>0)t o2(1n cart ct =(cart)mycart get (i) em EShop getItem(ct. getsku())i total + item. getPrice(* ct. getcount ( <td><8= ct. getCount()></td> <td><8= item getName() 8></td> <td align="right"> <8= dispPrice(String valueof (item. getPrice()))8></td> <td ali ispPrice(String valueof (item. getPrice()* ct. getcount ()) 8>< <td> <a href= <8= request. getContextPath ()+ CART PAGE ?action=add&&sku=+ ct. getsku ()9>"> <b>Add1</b></a></td> <td> <a href="<i- request. getContextPath()+ CART PAGE ?action=remove&sku="+ ct. getSku()8>> <b>Remove 1</b></a> /td></tr> <七y><}8> <td colspan="3" align="right">Total</td> <td colspan=2 align="left ><8= dispPrice(string valueof (total) 号></td></tr><tx> <td colspan=6> <a href="<8= request. getContextPath()+ CART PAGE naction=clear&sku=0"8>> Clear Shopping Cart</a> /td></tr><8}8><tr> <td colspan=6>
+ price.substring(len-2); } %> <%if(session.getAttribute("username") == null) response.sendRedirect(request.getContextPath()+"/login.html"); %> <html> <head> <title>My Shopping Cart</title> </head> <body> <table width="600"> <tr><td> <table border="1"> <tr><th colspan="6">Your Shopping Cart</th></tr> <tr><th align="left">Quantity</th><th align="left">Item</th> <th align="right">Price</th><th align="right">Extended</th> <th align="left">Add</th><th align="left">Remove</th> </tr> <% long total = 0; ArrayList mycart = (ArrayList)session.getAttribute("mycart"); if(mycart != null && mycart.size() > 0){ for(int i = 0; i< mycart.size(); i++){ cart ct = (cart)mycart.get(i); Product item = EShop.getItem(ct.getSku()); total += item.getPrice() * ct.getCount(); %> <tr> <td><%= ct.getCount() %></td> <td><%= item.getName() %></td> <td align="right"> <%= dispPrice(String.valueOf(item.getPrice())) %></td> <td align="right"> <%= dispPrice(String.valueOf(item.getPrice() * ct.getCount())) %></td> <td> <a href="<%= request.getContextPath() + CART_PAGE + "?action=add&&sku=" + ct.getSku() %>"> <b>Add 1</b></a> </td> <td > <a href="<%= request.getContextPath() + CART_PAGE + "?action=remove&sku=" + ct.getSku() %>"> <b>Remove 1</b></a> </td></tr> <tr><%} %> <td colspan="3" align="right">Total</td> <td colspan="2" align="left"><%= dispPrice(String.valueOf(total)) %></td> </tr> <tr> <td colspan="6"> <a href="<%= request.getContextPath() + CART_PAGE + "?action=clear&sku=0" %>"> Clear Shopping Cart</a> </td></tr> <%} %> <tr> <td colspan="6">