首页 > 其他分享 >网购商城项目开发日记(一)

网购商城项目开发日记(一)

时间:2023-01-22 00:33:17浏览次数:42  
标签:网购 Dao 使用 接口 对应 sql 方法 日记 商城

1.经典JavaEE三层架构

原型开发:前端页面响应式设计,后端使用分层模式解耦——>经典的JavaEE三层架构图

Web层(视图层)-接收请求,调用服务,返回相应

Service层(业务层)-对业务进行处理,调用Dao层,完成对数据库的操作

Dao层(数据持久层)-curd,直接操作数据库

2.需求分析与功能划分

需求分析-功能划分-具体功能的细致需求分析-实现思路分析-走代码实现-完成测试

3.功能划分(1)-用户注册与登录

大致思路分析(架子):

建库建表user表------DB(Mysql)

     ↓

对应的JavaBean类User-----Entity层

User类中提供有参无参构造器(后续反射会用到),表字段对应属性的set,get方法

     ↓

对应的BasicDAO类与UserDAO接口与UserDAOImpl实现类-----Dao层

UserDAO中需要去分析需要提供什么方法,sql语句从数据库中获取信息或者对数据库加以dml操作

     ↓

对应的UserService接口与UserServiceImpl实现类-----Service层

UserService中调用UserDAO中的方法实现具体的业务需求

     ↓

对应的UserServlet-----Web层

从前端的表单获取信息并对UserService的方法进行使用,估计业务需求进行信息返回/请求转发/重定向等等

     ↓

 前端页面,对应的表单提交数据

4.功能实现中的小收获

4.1想在登录界面放一个小的提示框,提示输入校验结果

在from之前放一个span

 

 

 然后可以在Servlet中设置好

if  xxxxx{
request.setAttribute("msg","登录信息错误xxx");}

而后根据msg在需要的地方防止span,使用EL表达式${requestScope.msg}将信息显示出来

或者前端jsp文件中进行设置,同样需要span,给它一个class=errorMsg

之后使用jquery的选择器$("#span.errorMsg").text("xxxxxxxxxx");

或者$("span[calss="errorMsg"]").text("xxxxxxxxxx");

4.2关于Service、Dao层的Impl与接口

使用接口-实现类的开发模式,便于拓展

同样的,如果下service中要使用Dao提供的方法时,我们在service中放一个dao的接口对象指向实现类的实例

4.3 IDEA快捷键-定位方法

Ctrl+B---查看编译类方法

Ctrl+At+B---查看实现类的方法

4.4 id设置为自增长,表中id却不连贯的问题

注册测试中发现数据库id设置为自增长后,一些失败的注册(前端正则校验没有通过)过后,在进行正常注册

会发现id不是连续的了,(123579)中间的id没有进入表但是被占用了

原因:猜测是被没有提交的事务占用了,(此外回滚也有可能占用)

4.5IDEA快捷键-撤销撤销

撤销与撤销撤销

Ctrl+z与Ctrl+shift+z

4.6 java三层架构-后续进阶

Web-Service-Dao

(web——SpringMVC)(Service-Dao——Spring)

4.7接口方法找实现类

在接口方法上Alt+Enter

4.8对域对象的一次使用

 

 

 

4.9合并登录注册的Servlet

设施一个隐藏域

<input type="hidden" name=action value="login"或者是"register"  />

将Servlet中的doPost方法与doGet方法抽象出一个抽象类:BasicServlet,让其他Servlet继承他

反射+模板设计模式(抽象类)+动态绑定机制实现

  //使用反射,获取当前对象的某个方法,方法名就是action的value
        try {
            Method declaredMethod = this.getClass().getDeclaredMethod(action, HttpServletRequest.class, HttpServletResponse.class);
       //使用方法对象,进行反射调用
        declaredMethod.invoke(this,request,response);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

4.10 Dao层sql语句一个坑

sql语句中,表名与Where之间需要有空格,否则sql语句不被正确识别,报错!

4.11 登录失败保留用户名信息

在jsp的from表单列中使用域对象

 <input type="text" name="username" value="${requestScope.username}"

同时在对应的Servlet中设置好属性即可

 

 4.12mysql建表int(11)什么意思

int(11),11代表宽度,例如输入int是123456,那么表中存放的是00000123456这个值宽度为11

4.13 decimal定点数

用来很好的处理price的类型,decimal(5,2)表示一共5位数字,小数点后俩位,eg:123.45,456.25

4.14 javaBean中如何对应表的decimal定点数

使用Bigdecimal类即可

4.15javaBean中对应表的int应该使用

使用包装类:Integer,why?包装类自动装箱,可以接收null,避免不必要 的报错

4.16表中字段与pojo属性名不一致怎么办?

sql语句查不到了,怎么办---sql语句中起别名,对应字段名的别名取得和pojo属性名一致既可以了

4.17输入信息控制

使用正则表达式进行test,如果 正则表达式.test(待测数据)不成功则不通过

 

标签:网购,Dao,使用,接口,对应,sql,方法,日记,商城
From: https://www.cnblogs.com/zitw/p/17064122.html

相关文章

  • 学习日记-day2
    日期2023-1-19任务列表CPP第3、4章【100%】王爽汇编第2章【66.7%】程序员的自我修养【0%】明天计划CPP第5章王爽汇编第2、3章程序员的自我修养第一章......
  • 学习日记-Day1
    任务列表CPP第1、2章【100%】王爽汇编第1章【100%】程序员的自我修养第1、2章【0%】明天计划CPP第3、4章王爽汇编第2、3章程序员的自我修养第1、2章......
  • java学习日记
    day001 day12xmind总结                                 21阶段性总结 ......
  • 2022新整理「2020年深圳富士康保安日记」
    总有些记忆不舍得忘掉2020.07.08-到深圳第一天被师弟鸽了!7.8第一天,前一晚师弟说会在深圳,今天我快到深圳的时候,他说他们跑惠州去了,我扑了个空。联系了邹斌,想过去看看......
  • 春节期间商城如何做好运营​
    有经验的商家都知道,春节对于店铺来说,这是一个全新的起点,所以商家们一定要抓住新年这个过渡期的时机。那么在春节期间的运营该如何做呢?首先看看春节期间会有的几个问题:1.推......
  • python—web自动化(3)—验证码处理(商城-后台添加商品,小案例1)
    案例需求登录后台管理中心-点击商品管理点击‘添加商品’输入商品名称选择商品分类选择商品品牌点击提交按钮 技术点:验证码处理思路  验证码处理......
  • C++算法日记_1A
    题目链接:https://ac.nowcoder.com/acm/contest/19859/A题目来源:牛客网题目描述请统计某个给定范围[L,R]的所有整数中,数字2出现的次数。比如......
  • Python django 汽车商城
    Pythondjango汽车商城汽车系统在线商城二手汽车网汽车网站django汽车推荐商城技术:Python  django数据库:MySQL前端:html  css  js涉及功能:登录,注册,登出,......
  • python django校园二手商城
    pythondjango校园二手商城 django二手商城django校园商城django校园商店django电子商城django网上商城前端:htmlcss等后端:pythondjango数据库:MYSQL涉及功能......
  • 美多商城项目(四)
    购物车部分购物车商品应当存储那些数据sku_id,count(用户购买几个),selected(是否被勾选)-登录用户:允许使用服务器资源-存储到redis,每条数据分两种格......