dangdang项目感想 第一组由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“当当网项目总结”。
dangdang项目感想
1.项目名称及开发环境
本次项目名称当当网,在Linux系统下,采用Tomcat服务器,MyEclipse软件来完成的。2.主要采用哪些技术
2.1 Struts2框架
Struts2是一款MVC设计思想的实现,适用于开发JavaWeb程序。MVC思想是将应用程序根据职责不同划分成M,V,C三部分组成,Model模型:负责请求的业务处理;View视图:负责界面与用户交互;Controller控制器:负责协调模型和视图工作。传统的Struts1框架采用JSP + Servlet + JavaBean,而本次当当网采用Struts2框架JSP + Filter + JavaBean来实现的。
控制器:StrutsPrepareAndExecuteFilter
模型:JavaBean(Action组件)
视图:JSP,Result组件,struts2标签
redirect
dispatcher 2.2 JDBC+dbcp连接池
项目中使用连接池的原因:
原因一: 避免频繁创建和销毁connection
原因二:将connection控制在一定数量范围内保证服务器稳定 2.3 客户端采用jQuery+Ajax 2.3.1 jQuery 是一个javascript框架,它使用丰富的选择器来查找到dom节点,将这些dom节点封装成jQuery对象。这样做的原因,是为了更好地兼容不同的浏览器。即通过操作jQuery对象提供的标准的属性和方法来实现对dom节点的操作。
2.3.2 Ajax 可以使用浏览器内置的一个特殊的对象(XmlHttpRequest)异步地(即浏览器不会抛弃原有的页面,用户可以继续操作该页面)向服务器发送请求,服务器将处理的结果以文本或者xml文档的方式返回给浏览器,可以使用javascript来更新原有的页面(更新时需要使用到服务器返回的这些文本或者xml文档)。使用Ajax的原因:
原因一:页面无刷新(不打断用户的操作)
原因二:按需获取数据(浏览器与服务器之间传输的数据量减少,因为服务器与浏览器不再需要传递整个页面)。
原因三:可以利用客户端的计算能力,减轻服务器的压力。原因四:是一种标准化的技术,不需要安装插件。
3.当当网主要的功能模块 3.1 产品浏览模块 头部,实现了登入,登出,采用了OGNL表达式做判断,也可以链接到购物车,我的当当;左侧,实现了分类浏览,分页浏览,排序浏览,也可以购买相应的产品。采用了JDBC,多表联合查询,根据父类ID查找子类;采用了Ajax技术实现了异步传输。中间,实现了编辑推荐,热销图书,最新上架图书功能,都采用了多表联合查询,Ajax实现局部页面刷新,编辑推荐还用到了JDBC中的滚动结果集来实现的;右侧实现了新书热卖榜功能,也采用了多表联合查询,Ajax实现局部页面刷新。3.2 购物车模块
我的购物车实现了增加,删除,修改和恢复等功能,采用了集合遍历显示,Ajax技术异步传输,正则表达式验证,OGNL表达式做判断,用拦截器拦截没有登录的用户,从而让没有登录的用户不能使用该模块的功能。3.3 用户管理模块
由填写注册信息页面,邮箱验证页面,注册成功页面,登录页面来实现的。填写注册信息页面实现了填写用户的基本信息,和验证码校验功能,采用了正则表达式来校验采用了Ajax来异步传输,密码采用了MD5进行加密,验证码采用了集合操作,输入输出流来对验证码的图片获取和生成,提交成功后,将用户信息存入数据库中保存;邮箱验证页面采用了Ajax技术异步传输,并把邮箱已经校验过记入数据库;注册成功页面采用了集合遍历,OGNL表达式来实现了回显;登录界面实现了验证功能,采用了jQuery来进行验证的。3.4 创建订单模块 由确认订单页面,填写送货地址页面,订单成功 页面来实现的。订单页面实现了显示订单基本信息,采用了OGNL表达式来实现显示的;填写送货页面实现了送货信息验证采用了正则表达式和Ajax技术来验证的,送货信息回显采用了jQuery来实现判断,Ajax技术 实现异步传输,json实现传输数据,提交成功后,将订单信息,产品信息,收获信息都插入到数据库中保存;订单成功页面实现了显示订单号和总金额,采用了OGNL表达式实现回显。该模块还采用了拦截器栈对没有登录的用户和没有购买过商品的用户进行拦截,从而让没有登录的用户和没有购买过商品的用户不能使用该模块的功能
以上模块都采用了默认事务回滚的拦截器栈来保证事务完成性,采用seion和Cookie机制来储存数据。4.项目总结
4.1在项目中遇到的问题
问题一:在产品浏览模块,对产品进行了默认排序,销量排序,上架时间排序,价格排序,每次更换排序,会自动变回默认排序,最后采用了jQuery框架将下拉列表中对应选项的selected属性设置为true,这样就可以将你选择的排序方式显示在用户面前了。
问题二:在产品浏览模块中,在点击购买时,增加了一个检查登录的拦截器来防止没有登录的用户进行购买商品,如果是已经登录的用户就采用了Ajax技术发送异步请求,返回购买成功的信息。但是,在拦截器进行拦截以后,返回了一个html的登录界面,不能达到拦截的效果,最后在过滤器中加了一个判断用户是否登录,将Ajax返回做判断的布尔变量该为false,这样就可以使页面重定向到登录界面。
问题三:在购物车模块,当用户够买了已经删除的商品,购物车中不会出现该商品,而是在恢复区中的被删除的商品数量上加1,最后是在购物车中添加方法中添加了判断,首先判断当前商品是否购买过,如果购买过而且在恢复区中,就将商品的数量设置成1,将购物车中是否删除过的属性设为没有删除过即可。
问题四:在创建订单模块,无法实现新用户收获信息保存到数据库,老用户收获信息只在数据库中更新,最后在填写送货地址的jsp中,添加了一个隐藏域,将当前收获信息中的主键值保存,这样就可以通过jQuery数据取出,从而实现对数据库的相应操作。4.2项目中的收获
经过本次项目,让我对struts2框架不仅仅是停在理论层面上,而是有了更好的实践,要全局把握思想,整体架构,才能很好的完成项目。对于OGNL表达式,jQuery,Ajax技术也是有所提高。