商城项目小总结(基于jsp和servlet的Java Web开发)

1. 前端用户登录,注册
先来说说前端用户登录,当我们在商城购买商品,在进行结算时,会生成订单,订单不仅包括商品的信息,还包括收货人的信息,比如收货人的姓名,收货地址,联系方式等。在数据库中,地址表与用户表存在对应关系,一个用户可能存在多个地址,因此他们的联系呢就是用户ID,所以再进行结算操作时,首先要判断当前是否有用户登录,若没有,提示正要结算的用户去登录,并跳转回登录页。用户登录这一操作是dao层根据用户名和密码查询并返回一个用户对象,将这个用户对象存放在session中,在进行结算时,就可以通过用户的id查询地址表对应的记录。
好,现在再来说说注册。用户注册实际上就是一个添加用户的操作,需要注意的是,为方便对数据的维护与管理,对用户名的要求一般是具有唯一性的,但是用户在进行注册时是不知道自己现在的注册的用户名是否重复,这时候是展现一个系统具有人性化这一特点时候了,也就是提示信息。注册校验运用到jQuery和ajax,通过jQuery选择器获得输入框的内容,并结合ajax局部刷新数据的功能进行校验。Ajax的工作机制,这么来说吧,在进行注册校验时,只是需要判断一个页面中的部分数据,因此只要将页面中需要校验的数据提交到服务器,不用提交整个页面数据,这也是体现一个性能的问题。这时就需要ajax,客户端发送一个注册的请求,ajax获得请求中需要校验的数据通过get/post提交方式给服务器,服务器根据请求的数据在dao层进行数据操作,比如根据注册名去用户表中查询有无该用户对象,然后返回一条成功的记录到ajax,如果已经存在该用户名,ajax设置提示信息并响应给客户端在注册页面提示用户该用户名已经被注册,请用户重新输入新的用户名。其他的像密码校验通过jQuery进行判断即可。
 
2. 前端页面商品类别展示,商品信息展示
前端商品类别展示需要注意的是商品类别有大类,大类下面还有小类,小类又有自己的子类,其中大类小类是存在数据库中商品类别表里,小类下面的子类是存放在商品信息表中,这两张表的对应关系是:一个大类可能有多个小类,一个小类可能有多个商品。因此实现展示的流程大致上是:先到数据库中查询全部的商品类别,返回一个商品类别的集合,存放在session中,在页面中遍历集合输出商品类别名称,当然集合中存放在着大类小类,他们的区别是通过父id判断的,这么说吧,小类的父id,就是大类的id。好,商品类别展示成功之后接着就是商品了,也就是小类下面的子类。同理,也是要到数据库中查询全部的商品并返回一个是商品集合,商品集合中也存放着大类id,小类id,可根据小类的id定位到该商品是属于哪个小类,然后再根据商品的id到数据库的商品表中找到对应的记录,展示商品名称就OK了
 
3. 前端购物车实现,如何对购物车商品进行增删改查
首先得有个购物车,购物车可以放在session,cookie或者数据库中,以放在session为例。在进行将商品添加到购物车这个操作时,还是先判断当前session中是否有购物车,有就用,没有就创建。在项目中,创建一个购物车的类,在这个类中,有购物车中的商品集合对象,商品的数量以及所有商品的总金额。以上三个都看作是属性,除了属性,还有创建购物车,以及对购物车中商品进行增删改查等方法。接下来着重说明增删改查学要注意的地方。
将商品添加到购物车,首先要判断在购物车是否已存在该商品,判断需要一个标识,默认设置为true,表示当前购物车中没有存在该商品。判断的流程:遍历购物车中商品的集合,新添加的商品id若等于集合中的商品的id,表示已存在该商品,将标识设置为false,这时只需要修改该商品的数量,就是在该商品原有的数量加上新添加的该商品数量就OK了。如果不存在该商品,即判断条件为:之前定义的标识为true,直接将该商品添加到集合就OK了。
接下来就是删除,流程大致是遍历购物车中的商品集合,根据商品的id定位到要删除的商品,然后调用remove()方法就OK了。
来说说修改,实际上就是修改购物车中商品的数量,这个购物车中商品的数量这一属性是商品信息实体类中的一个临时属性,也就是说,在商品信息表中是没有这一字段的,设置这个临时属性是方便计算价格和设置数量的,先来说说修改数量,大致流程也是遍历购物车中商品的集合,根据商品id定位到要修改的商品,然后调用设置数量的set方法,传入修改的数量参数就OK了。再来就是购物车中所有商品的总金额。计算总金额可以看成是单个商品的总价相加,那么呢,可以先在商品信息实体类中计算单个商品总价,因为在商品实体类中存放着商品的单价和数量,获得单个商品的总价后,在购物车类计算总金额的方法中传入单个商品的总价就OK了。
好了,现在购物车也有了,里面也有商品了,最后就是在页面中在展示了,因为购物车是放在session中,所以只需遍历购物车中的集合就能获取购物车中商品的信息了。好了,购物车的实现大致上就是这么些流程。
 
4. 添加订单和订单明细
订单是在进行商品结算后生成的,也就是说,订单里不仅存放收货人的信息,还有购物车中的商品信息,因为你购物车中可能存放着多个商品,因此购物车中的所有商品信息单独做一张表,称之为订单详情表,由此可见,订单与订单详情的关系,是一对多的关系,也就是说,一个订单里有多个订单详情。那么,订单与订单详情之间的关联外键就是订单id,好,关键点来了,我们在设计表的时候,表的id字段都是设为自增,即每添加一条记录主键自动生成,好,现在的订单表中,id是自增的,那我们要进行以下操作,在已登录的前提下结算购物车中的商品,意思就是往订单表添加商品的信息,假设购物车中有多个商品,多条记录,那么,每往订单表中添加一条商品记录,订单id自增,生成一条订单,再添加一条,订单id又自增,又生成一条订单,这就造成一条订单对应一个商品信息,违背我们当初的是设计原理。因此,我们在设计订单表时,订单的id不必设置为自动递增,而是在代码中采用主键回填的方式生成订单id。所以在添加订单详情时,传入采用主键回填方式生成的订单id就可以确保一个订单对应多个订单详情的记录了。
 
5. 后台系统登录检验
一个系统的后台数据是不允许对外公开的,所以必须先登录才能进行操作。首先创建一个登录过滤器类,在类中判断当前session中是否有用户登录,由于过滤器是拦截所有请求的,因此还要设置web.xml中需要拦截的请求的映射路径。设置完成之后,进入后台主页前会先判断是否有用户登录,若没有就跳转到后台登录页。当然,并不是所有用户都能登录,必须是管理员身份的用户才能进入后台。
 
6. 商品类别管理实现
与前端的商品类别展示实现流程差不多,也是要到数据库中查询所有商品,返回一个商品类别集合,放到session中,在jsp页面遍历集合,通过对象.属性名,获取数据库表中的数据,并展示,接着就是一系列的增删改查。
 
7. 用户管理实现
同理的,对用户的管理也是进行增删改查,需要注意的是对用户的冻结与解冻操作。根据用户id修改用户的状态,在jsp页面,通过jQuery的id选择器获取对象,判断并修改用户状态。
8. 商品管理实现
商品的查询和删除操作与往常一致,这里着重说明的是商品的添加和修改。添加商品需要上传照片,因此要用到文件上传下载的知识。文件的上传流程大致为:首先创建一个文件解析工厂,接着通过解析工厂创建一个文件解析器,解析器是用来解析request对象中的信息,就是添加商品jsp页面中,input输入框中的name属性。解析出来的信息放到一个文件对象的集合中,接着遍历集合,获得普通项和文件上传项。首先是普通项,获得普通项的名称和值,存放在map集合中。其次是文件上传项,这里需要注意的是文件上传项除了获取文件的名称之外,还要有一个存放文件的路径。可以创建一个文件对象用于存放文件路径,这里就称之为文件路径对象吧。接下来就是再创建一个文件对象,这个文件对象存放着上传文件的名称和路径对象,最后就是文件的拷贝了,通过遍历的集合对象获得输入流,创建一个文件输出流并传入上传文件对象。因为我们要添加的是一个商品对象,所以还要创建一个新的商品对象,由于map集合中存放普通项,所以通过BeanUtils.populate(goodInfo, map);方法将map对象装到新创建的商品对象中,因为商品的图片对象是属于文件上传项,所以还要设置图片的名称。好,商品的所有属性都封装好了,后面的只要调用业务层的添加方法就OK了。商品的修改与商品添加差不多,需要注意的是在修改商品时,要判断是否要更改图片,之后调用业务层的修改方法就OK了。
 
9. 订单管理实现
在订单这一块,只做了查询和删除。因为订单与订单详情的存在一对多的关系,所以采用连接查询。连接查询获得的数据用一个map集合接收,并设置到session中。其中,map的key存放的是订单对象,而他的value存放的是订单详情的集合。好的,以上就是我总结的商城项目实现过程。

java 文章被收录于专栏

java学习总结,技术积累

全部评论

相关推荐

bg:双非本,一段中小厂6个月测开实习今天发这个帖子主要是想聊一聊我秋招以来的一个发展我是在8月底辞职,打算秋招,可是看网上都说金九银十就想着自己就是一个普通本科生,现在九月份都是一些大神在争抢,所以9月份基本上没投,等到了10月份才开始秋招,可是这个时间好像已经有些晚了,今年秋招开启的格外早,提前到了7,8月份,我十月才开始,官网投了很多公司,没有任何一个面试机会,这个情况一直到了十月底才有了第一个面试,当时没有面试经验,所以不出意外的挂了后续就是漫长的投递,但是毫无例外没有面试,没有办法我只能另辟蹊径开始在BOSS上边投递,然后顺便也根据BOSS上边这个公司名称去浏览器搜索看看有没有官网投递渠道,毕竟官网上投递后还是可以第一时间被HR看到的,然后一直不停投递,一开始第一个星期基本上都是投的正式秋招岗位到了第二个星期才开始实习和正式一起投,到十一月底的时候已经沟通了700➕才有一共1个正式的,5个要提前实习的,3个实习的面试,最后结果是过了1个要提前实习的和2个实习的每次面试我都会复盘,发现这些小公司面试官问的五花八门,有的专问基础,有的专问项目,有的啥都问,不过自己也是看出来了一下门道,就是小公司不像大公司面试官那样能力比较强基本上你简历上边的他都会,然后会根据简历来问,小公司面试官他们更多的是看自己会什么,然后看看你简历上边哪些他也是会的然后来问,经过不断的复盘加上背各种各样面试题,到了11月底12月初才有了1个要提前实习的offer还有2个实习的offer,而且薪资待遇对我来说已经很可观了可是啊,人总是这样得了千钱想万钱,我又开始不满现状,但是此时的我面试能力经过这么多面试和复盘已经很强了,然后在十二月份运气爆棚,被极兔和小鹏补录捞起来面试,还有个百度测开的实习面试,这个时候因为有了offer所以感觉有了底气,面试也很自信,最后结果是全部都过了那个时候我感觉自己真的很厉害,我问了极兔那边的HR像我这样的双非本收到offer的在极兔有多少?他告诉我产研岗90%都是硕士,10%里边基本上都是211,985,想我这样的很少很少,那一刻感觉自己超级牛逼,小鹏就更不用说了,最后也是不出意外选择了小鹏所以我就我个人经历想对和我学历履历差不多的牛友一些建议第一:秋招一定要趁早,真到了9,10月,那个时候可能你投的结果可能还不如7,8,11月,第二:最好先拿小公司实习或者正式练练手,提升一下面试能力,我个人觉得因为小公司问的五花八门所以你会更加横向去提升自己能力,而且大公司其实面试没有那么难,除了一些非常卷的岗位,公司大神比较多会问的很难,一般好点的公司都不会问的那么难,他们也知道都是应届生不会要求那么高第三:当有一定能力后,就是坚持了,对于我们这样的学历,没有特别强的履历情况下,就是要抓住提前批和补录的机会,这个时候各方面不会卡的很严,是我们很好很好的一个机会第四:就是运气也是很重要的一部分,不过这个很难去说什么最后祝各位牛友都能收获自己满意的offer😁😁😁
秋招,不懂就问
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务