o2o项目-3.店铺注册

流程:

一、ShopService:

1. addShop(Shop shop, File shopImg):添加店铺,并将店铺与上传的缩略图绑定

   1)空值判断,主要判断Shop及其属性值是否为空

   2)设置属性初始值

   3)添加店铺信息

二、前端

使用SUI Mobile框架,是阿里开发的开源前端框架,可以实现某些组件。

Kaptcha实现验证码

三、前后端联调测试

 

 

知识点:

1. assertEquals

2. dto和entity的区别:

dto是数据传输对象。这个对象封装你需要传输的数据 在M,V,C这三个层传递。

可以理解为dto为增强(或经过处理后)的entity,dto是面向用户的,entity是面向数据库的。

比如某个entity对象有20个属性,而我需要向用户展示的只有10个,就可以用dto;

再比如用户添加某一个entity是否成功需要一个状态值,而entity中显然不需要,所以需要dto去进一步“包装”它。

3. 枚举类

4. service层要有事务管理,其中为什么用RuntimeException,而不直接用Exception?

因为只有RuntimeException及其子类在出错时才会回滚,其他的可能会提交。

5. java是值传递:

如果参数是基本类型,传递的是值的拷贝,所以在方法中对其更改不会影响到函数外的结果;

如果是引用数据类型,传递的是堆中地址值的,所以方法中的更改会影响外面。

6. 配置数据库的自增主键(mybatis.xml)

<!--使用jdbc的getGeneratedKeys获取数据库自增主键值-->
<setting name="useGeneratedKeys" value="true"/>

7. CommonsMultipartFile是Spring中文件上传用的

CommonsMultipartFile不能直接转化成File,但是其中有一个getInputStream()方法可以获取其输入流,然后通过编写函数可以将输入流转化成File文件:

调用:

 

8. @Param注解:

作用是用于传递参数,可以与SQL中的的字段名相对应,在mapper中写sql时#{}中的参数即@Param括号中的参数来获取相应的数据

 

9. classPath:编译后的classes文件夹(target中的WEB-INF/classes)

 

遇到的问题:

1. 写IShopDaoTest时,报空指针异常

原因:没有将IShopDao注入,即没有引入Spring配置文件。

解决方法:extends BaseTest,BaseTest中写好配置

2. 测试ShopService时,在ImageUtil中,Thumbnails添加水印时报IO异常:

原因:找不到水印所在文件,之前写的时候是放在src/main/resources中,但是由于现在在test目录下,basePath发生了改变

解决方法:将水印图片复制一份放在sre/test/resources中

 

3. 在前后端进行交互(ajax),即将店铺类别和区域信息传入的时候,写完之后并没有从后端同步到前端

解决方法:在pom中没有将相应的依赖引入,引入相应jackson依赖即可

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.9</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.9.9</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-annotations</artifactId>
  <version>2.9.9</version>
</dependency>

4. 使用Kaptcha实现验证码时,pom中导入不了相关的jar包

解决方法:参考https://blog.csdn.net/qq_35885488/article/details/80902631

下载源码包:http://code.google.com/p/kaptcha/downloads/list

导入到本地的maven仓库中:mvn install:install-file -DgroupId=com.google.code -DartifactId=kaptcha -Dversion=2.3.2 -Dfile=xxx(自己存放该解压后的jar包的路径)/kaptcha-2.3.2.jar -Dpackaging=jar -DgeneratePom=true

注意:在查找这个问题的解决方案时,没有人提到在pom中引入的时候的格式要严格按照你命令中的格式,即

本来应该是:

<dependency>
  <groupId>com.github.penggle</groupId>
  <artifactId>kaptcha</artifactId>
  <version>2.3.2</version>
</dependency>

但是由于引入的时候不是按照这个groupId...,所以要按照你引入的路径:

<dependency>
  <groupId>com.google.code</groupId>
  <artifactId>kaptcha</artifactId>
  <version>2.3.2</version>

5. 在前后端联调的时候,后端读不到ajax传过来的数据。

原因:

1. 

其中的 shop.phone与Shop实体类中定义的名称不同(Shop 中为shopPhone)

改过之后就好了,但是不知道是不是必须相同

2. 

spring-web.xml中必须注册文件上传解析器multipartResolver

添加文件上传的依赖:

3.

ajax中的配置必须是:

后面三个false,其中:

在使用jQuery的$.ajax()方法的时候参数processData默认为true(该方法为jQuery独有的),默认情况下会将发送的数据序列化以适应默认的内容类型application/x-www-form-urlencoded

如果想发送不想转换的的信息的时候需要手动将其设置为false

在我遇到的是传输的是blob对象的时候就是不需要将传输的数据序列化,一般的还有类似DOM树等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值