总结
这一周学习了JSP和servlet,一周前还不知道它们之间的区别,在mooc上照着一个教程copy了一个项目,算是明白了JSP和Servlet各自的用途。
项目用的是model2模型
模型层(javabean)中是项目中要用到的类:
模型类(名称可能不规范):entity包:Items类、Cart类
工具类:util包:DBhelper(连接数据库)
业务逻辑类:dao包:ItemsDAO类
Items类(商品):商品的各种属性(id,name,price,city,number,picture),属性的setter和getter,无参和含参的构造器,以及后面为了在购物车中合并相同商品而override的equals方法和hashcode方法。
Cart类(购物车):
购物车的属性: HashMap<Items,Integer>goods(一个商品的集合,key为商品,value为数量)、double totalPrice(总金额)
购物车的方法:属性的setter和getter,构造器,新增商品到购物车(addGoodsInCart),从购物车中删除商品(deleteGoodsFromCart),计算总金额(calTotalPrice).
ItemsDAO类:
方法:getAllItems,getItemById 这两个方法用于从数据库中读入数据,getViewList(调用getItemById)这个方法用于后面在页面上显示浏览记录,给一个商品ID序列返回一个ArrayList<Items>
DBhelper类:连接数据库,方法:getConnection(获得连接)
public class DBhelper { private static final String driver = "com.mysql.jdbc.Driver"; private static final String url = "jdbc:mysql://localhost:3306/shopping?useUnicode=true&characterEncoding=UTF-8"; private static final String username = "root"; private static final String password = ""; private static Connection conn = null; static { try { Class.forName(driver); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConnection() throws SQLException { if (conn == null) { conn = DriverManager.getConnection(url, username, password); return conn; } return conn; }
前端JSP页面:
index.jsp :商品列表页面
cart.jsp :购物车页面
details.jsp :商品详情页面
failure.jsp :添加到购物车失败页面
success.jsp :添加到购物车成功页面
后台Servlet:servlet/CartServlet
功能如上图所示:jsp页面的操作信息提交到servlet,servlet通过调用业务逻辑类总的方法实现数据库的修改和返回信息。
重写doget,dopost方法,新增两个方法:private addToCart,private deleteFromCart,在doget和dopost方法中调用新增的两个方法来处理前端提交的请求。