具体功能实现步骤

  • domain,类声明
  • DAO,提供连接数据库方法的接口;
  • DAOImpl,接口功能实现;
  • Service,声明DAO实例化DAOImpl,实现后台和数据库的连接;
  • Servlet,具体业务功能实现;
  • web.xml,Servlet属性声明;
  • Jsp,前端页面编写。

遇坑

    • “404”:端口被占用;管理员下运行cmd,查看端口使用情况
      netstat -noa
      ,找到占用8080端口进程的PID,关闭进程
      tskill ****

      (关闭失败多半是因为权限不够,到System32文件夹中以管理员身份运行cmd即可)
    • jdbc连接时出错
      Exception in thread "main" java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
      解决:在连接字符串后加上
      ?serverTimezone=UTC
      其中UTC是统一标准世界时间
    • 表单必须通过“submi”(input)方式提交。
    • 从登陆界面跳转到注册界面时,应将session中的varifyCodeMessage清空,否则登陆页面的错误验证码信息将再注册界面中显示。

    • java.util.Data 转 java.sql.Data
      java.sql.Data sqlData = new Date(date.getTime());

AJAX——判断用户名是否存在

  • .text():获取/插入内容
  • .eval(data):获取JSON数据
  • .html():获取/插入包含html标签的内容
  • 服务器端通过字符串拼接出JSON数据,通过
    PrintWriter out = response.getWriter();
    输出

AJAX——搜索栏自动补全

  • .offset():获取输入框定位信息
  • 定位:
    .css("position","absolute").css("top",tableoffset.top+searchtable.height()+5).css("left",tableoffset.left);
  • 创建新的联想方块:
    var newDivNod = $("<div>").attr("id",i);
    (id用于高亮定位)
  • 无联想词时.hide(),有联想词时.show()

AJAX——自动更新购物车数量更新

  • 获取表格内容:
    $(this).parent().parent("tr").children('td').eq(0).text();
  • 获取到的内容会多余一些换行回车制表位,通过
    .replaceAll("\n|\t","");
    移除
  • 返回JSON数据格式错误,导致“parsererror”错误(控制台无报错,但不会进入success函数,而进入error函数)
  • 由于无法再调用jsp中的格式化货币方法,所以需要将货币手动格式化:
     function formatCurrency(num) {
        num = num.toString().replace(/\$|\,/g,'');
        if(isNaN(num))
            num = "0";
        sign = (num == (num = Math.abs(num)));
        num = Math.floor(num*100+0.50000000001);
        cents = num%100;
        num = Math.floor(num/100).toString();
        if(cents<10)
            cents = "0" + cents;
        for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
            num = num.substring(0,num.length-(4*i+3))+','+
                num.substring(num.length-(4*i+3));
        return (((sign)?'':'-') + num + '.' + cents);
    }

AJAX——shipping表单自动更新

  • 用jQuer定位表格内容:table标签内会自动嵌套一层tbody标签

CSUer