A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

司南111

初级黑马

  • 黑马币:47

  • 帖子:10

  • 精华:0

© 司南111 初级黑马   /  2018-4-5 23:48  /  1237 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

   java web 项目阶段几乎是涵盖了web阶段所有的知识点,这一块感觉本身并没有什么难点,对以前所学的一个整合,主要是多多练习,量变会产生质变.
      项目本身是以之前的商城静态页面为基础,更加体系化和面向实战的开发.关于环境搭建方面不同的地方首先是面向接口的开发思想,所有的dao层和service层的实体必须先继承接口,利于后期维护和修改(面向切面的思想proxy),然后是用反射技术重写一个BaseServlet的service方法,其余的Servlet继承这个Servlet即可,更加注重于业务逻辑.具体实例:
      //获取子类Class对象
     Class clazz = this.getClass();
     //获取页面method参数值并对应方法名
     Method method = clazz.getMethod(methodName, HttpServletRequest.class,HttpServletResponse.class);
     //实现方法
     String path = (String) method.invoke(clazz.newInstance(), request,response);
最后是利用工厂模式,反射和多态,完成对实现类的重构,具体实现是将实现类的全路径配置在applicationContext.xml中,利用反射创建出该实现类对象并返回,这样使用这个类只需要传入特定的字符就可以获取该类的对象.这样做并非多此一举,而是如果用其他的技术框架对项目整体进行重构时,有时不得不对类名进行修改,这样做我们只需要修改配置文件即可,而不需要对源代码进行修改.

     实战案例阶段代码上尽量体现高内聚低耦合的思想,在用户登陆案例和注册案例中,两者有高度统一性,这时就应该同属于一个模块,这是高内聚思想的体现.异步校验用户名这一块应该时重点(据老师说后面会经常用,而且考试也考到了),这一块如果前端学的不扎实写起来会异常痛苦,也是一个孰能生巧的问题,异步是现在比较流行的一个技术,通常回合json一起使用,AJAX底层是通过创建一个HTTPXML对象来实现和后台的数据传输,他不会刷新整个页面,而只是对页面的一小块进行单独的刷新,用户省去等待的麻烦.自动登陆时使用cookie,session和过滤器filter的技术,将用户名和密码以字符串拼接的方式存入cookie中,每次页面的跳转都会经过拦截器,首先会判断session有没有user存入,如果没有,从cookie中查找,cookie中有,从cookie中取出数据和数据库信息比对(防止cookie被篡改),相同则放行.以上条件均不成立,放行.记住用户名功能使用了cookie,因为cookie可以保存在浏览器端,如果解决中文用户名记录问题,我是在页面上使用了JSTL表达式,具体实现如下:
       <%
         Cookie[] cookies = request.getCookies();
         Cookie cookie = CookieUtils.findCookie(cookies, "remberUsername");
         if(cookie != null){
          String value = URLDecoder.decode(cookie.getValue(),"UTF-8");
          pageContext.setAttribute("remberUsername", value);
         }
        %>
         name="username" value="${remberUsername }" placeholder="请输入用户名">
注:一定要先判断cookie是否为null,否则cookie失效会出现BUG

   商品这一块分成了购物车模块和订单模块,购物车又分为了购物项和购物车,每一个现实存在的实体都可以在Java中用对象表示,这里差分开来体现了面向对象对的思想.这一块主要是基础查询的练习和EL的练习.老谭在购物车扩展了购物异步加减和多选框勾选货物的题目

加减号修改商品数量,多选框勾选商品,详情参考京东网页版,商品数量发生变化的同时,总金额会发生改变,删除为物理删除,不选中状态为逻辑删除
加减号使用了AJAX技术,中间数量可以任意修改,注:(js中字符串与数字比较,结果一律为false)
多选框主要是在Cart实体类中增加了一个removemap,用来储存没有被选中的商品,具体实现就是配合之前用来储存Cartitem的map来回互倒,商品提交时只会提交原map中的数据,在页面上同样便利removemap,这样客户下次访问时没有被提交的商品仍会在购物车中

订单页面以前没有接触到的主要是一个付款项目,这里我们选择的时通过第三方支付平台进行支付,首先需要设置接入的参数,详情参照易宝支付的API,每个平台接入方法不一,通过平台提供的加密算法对数据进行加密后,跳转到第三方支付平台页面,平台解密数据然后跳转相应的银行页面进行付款,付款成功后会返回一些参数,用request.getParameter接收即可,具体参数参照文档.


3 个回复

倒序浏览
回复 使用道具 举报
回复 使用道具 举报
又到新阶段了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马