淘淘商城第五天笔记
更新时间:2023-05-20 05:31:01 阅读量: 实用文档 文档下载
- 淘淘岭商城推荐度:
- 相关推荐
传智播客Java学院传智.入云龙
淘淘商城第五天
1第四天内容回顾
商品添加功能的实现
1、富文本编辑器的使用KindEditor。
a)引入js
b)使用js代码初始化KindEditor,需要一个textarea控件。
c)提交表单之前,需要调用sync方法,同步数据。是富文本编辑器和textArea控件
同步数据。
2、商品添加功能实现。
a)向商品表插入数据
b)向商品描述表插入数据
3、商品的规格参数。
a)使用模板的思路。
b)为类商品创建一个规格参数模板。
c)添加商品时,读取模板,基于模板生成一个表单,供用户输入规格参数。
d)使用js把规格参数转换成json数据,保存到数据库
e)读取规格参数,转换成html展示到页面。
2第五天课程计划
1、前台系统搭建
a)服务层
b)表现层
2、商城首页展示
3、实现商品分类展示功能。
4、首页内容管理思路及cms系统。
传智播客Java学院传智.入云龙3前台系统搭建
3.1 系统架构分析
Taotao-manager
controller
service
mapper
Mysql Taotao-rest(服务层)
Service
Mapper
Taotao-portal(门户)
Controller
Service调用
Android IOS微信商城
HTTP调用
查询商品信息,pc端可以查询,移动端也可以查看商品。
下单:pc端可以下单,移动端也可以下单。
可以把业务逻辑提取出来,发布服务,供pc、移动端公用。
好处:
1、提高代码复用度
2、可以灵活的进行分布式部署。
3、系统之间耦合度低
4、团队之间开发不冲突。
缺点:
1、需要发布Webservice,系统之间需要远程调用。
2、工作量增加。
3、需要系统之间协作才能完成整个业务流程,系统之间调用变的复杂。
需要创建两个工程
服务层:taotao-rest:没有表现层,只有业务逻辑。需要发布服务。
表现层:taotao-portal:只有表现层,没有业务逻辑,不需要连接数据库。
表现层和服务层通信,使用Webservice进行通信。Restful形式的Webservice。http+json数据。
传智播客Java学院传智.入云龙3.2 创建工程
3.2.1服务层taotao-rest
使用maven管理工程。War包。
3.2.1.1 使用的技术:
1、Mybatis
2、Spring
3、发布服务:cxf、springmvc
3.2.1.2 创建工程
3.2.1.3 框架整合
整合ssm框架。可以参考taotao-manager工程。
传智播客Java学院传智.入云龙
3.2.1.4 P om文件
添加对taotao-manager-dao的依赖。
添加spring的依赖
配置tomcat插件
<project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instanc e"
xsi:schemaLocation="/POM/4.0.0
/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.taotao</groupId>
<artifactId>taotao-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.taotao</groupId>
<artifactId>taotao-rest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>com.taotao</groupId>
<artifactId>taotao-manager-dao</artifactId>
<version>0.0.1-SNAPSHOT</version>
传智播客Java学院传智.入云龙
</dependency>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId> </dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<!-- 添加tomcat插件 -->
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
传智播客Java学院传智.入云龙
<port>8080</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
</project>
3.2.2表现层taotao-portal
3.2.2.1 使用的技术
1、Spring
2、Springmvc
3.2.2.2 创建工程
3.2.2.3 依赖的jar包
1、taotao-manager-pojo
传智播客Java学院传智.入云龙
2、Spring
3、Tomcat插件
Pom文件:
<project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instanc e"
xsi:schemaLocation="/POM/4.0.0
/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.taotao</groupId>
<artifactId>taotao-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.taotao</groupId>
<artifactId>taotao-portal</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>com.taotao</groupId>
<artifactId>taotao-manager-pojo</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
传智播客Java学院传智.入云龙
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId> </dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<!-- 添加tomcat插件 -->
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<port>8082</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
</project>
Web.xml
传智播客Java学院传智.入云龙
3.2.2.4 框架整合
Spring和springmvc。
Maven安装工程到本地仓库,跳过测试:clean install -DskipTests
3.3 访问首页
创建一个Controller,当访问http://localhost:8082/跳转到首页。请求的url:/index
@Controller
传智播客Java学院传智.入云龙publicclass IndexController {
@RequestMapping("/index")
public String showIndex() {
return"index";
}
}
4首页商品类目展示
4.1 分析
1、类目展示需要异步加载
2、商品类目从数据库中获得,调用taotao-rest发布的服务获得数据。
3、可以在首页中使用js直接调用taotao-rest发布的服务获得数据。需要使用到的json数据格式:
传智播客Java学院传智.入云龙
请求数据的js位置:
传智播客 Java 学院 传智.入云龙
4.2 Js 跨域
4.2.1 什么是跨域
Js 为了安全有一个限制,不允许跨域访问。
1、如果两个url 的域名不同
2、Url 相同,端口不同也是跨域
3、Ip 不同也是跨域
在taotao-portal 中不能使用ajax 直接调用taotao-rest 的服务。
4.2.2 解决跨域的问题
可以使用jsonp 解决跨域的问题。
1、在js 中不能跨域请求数据,js 可以跨域请求js 片段。
2、可以把数据包装成js 片段。可以把数据使用js 方法来包装,形成一条方法的调用语句。
3、可以使用ajax 请求js 片段,当js 判断到达浏览器会被立即执行。
4、在浏览器端,先创建好回调方法,在回调方法中通过参数可以获得请求的数据。
前期准备:
1、需要把js 的回调方法先写好。
2、做ajax 请求时,需要把回调方法的方法名传递给服务端。
3、服务端接收回调方法名,把数据包装好,响应给客户端。 Taotao-portal
Taotao-rest Ajax 请求json 数据 json Ajax 请求js Js ,其中包含json json 1、请求js 数据 js 执行,调用js 方法,要求此方法已经定
义。
json 2、响应js 3、取出json
传智播客Java学院传智.入云龙
5发布商品列表查询服务
5.1 分析
获得一个分类列表的数据。
从tb_item_cat表中取数据。
可以创建一个pojo描述树形列表的节点,其中包含三个属性u\n\i。U:url String
N:name String
I:items List
publicclass CatNode {
@JsonProperty("u")
private String url;
@JsonProperty("n")
传智播客Java学院传智.入云龙private String name;
@JsonProperty("i")
private List items;
public String getUrl() {
return url;
}
publicvoid setUrl(String url) {
this.url = url;
}
public String getName() {
return name;
}
publicvoid setName(String name) {
= name;
}
public List getItems() {
return items;
}
publicvoid setItems(List items) {
this.items = items;
}
}
publicclass ItemCatResult {
private List data;
public List getData() {
return data;
}
publicvoid setData(List data) {
this.data = data;
}
}
5.2 Dao层
从tb_item_cat表中取数据,单表查询,可以使用逆向工程生成的代码。
传智播客Java学院传智.入云龙
5.3 Service层
返回结果:ItemCatResult
参数:没有
业务逻辑:根据parentid查询子节点列表,并递归调用。
@Service
publicclass ItemCatServiceImpl implements ItemCatService {
@Autowired
private TbItemCatMapper itemCatMapper;
@Override
public ItemCatResult getItemCatList() {
//调用递归方法查询商品分类列表
List catList = getItemCatList(0l);
//返回结果
ItemCatResult result = new ItemCatResult();
result.setData(catList);
return result;
}
private List getItemCatList(Long parentId) {
//根据parentId查询列表
TbItemCatExample example = new TbItemCatExample();
Criteria criteria = example.createCriteria();
criteria.andParentIdEqualTo(parentId);
//执行查询
List<TbItemCat>list = itemCatMapper.selectByExample(example);
List resultList = new ArrayList<>();
for (TbItemCat tbItemCat : list) {
//如果是父节点
if (tbItemCat.getIsParent()) {
CatNode node = new CatNode();
node.setUrl("/products/"+tbItemCat.getId()+".html");
//如果当前节点为第一级节点
if (tbItemCat.getParentId() == 0) {
node.setName("<a
href='/products/"+tbItemCat.getId()+".html'>"+tbItemCat.getName()+"</a>");
} else {
node.setName(tbItemCat.getName());
}
node.setItems(getItemCatList(tbItemCat.getId()));
//把node添加到列表
resultList.add(node);
传智播客Java学院传智.入云龙
} else {
//如果是叶子节点
String item = "/products/"+tbItemCat.getId()+".html|" + tbItemCat.getName();
resultList.add(item);
}
}
return resultList;
}
}
5.4 Controller
响应一个json数据。判断callback参数是否为空,如果为空正常返回json数据,如果不为空,支持jsonp调用。
需要使用@ResponseBody注解。
支持jsonp两种方式:
第一种:直接响应字符串
@Controller
@RequestMapping("/item/cat")
publicclass ItemCatController {
@Autowired
private ItemCatService itemCatService;
@RequestMapping(value="/list",produces=MediaType.APPLICATION_JSON_VALUE+";charset=utf-8")
@ResponseBody
public String getItemCatList(String callback) {
ItemCatResult result = itemCatService.getItemCatList();
if (StringUtils.isBlank(callback)) {
//需要把result转换成字符串
String json = JsonUtils.objectToJson(result);
return json;
}
//如果字符串不为空,需要支持jsonp调用
//需要把result转换成字符串
String json = JsonUtils.objectToJson(result);
return callback + "(" + json + ");";
}
}
第二种方法:
传智播客Java学院传智.入云龙
要求springmvc必须是4.1以上版本。
MappingJacksonV alue
//第二种方法
@RequestMapping(value="/list")
@ResponseBody
public Object getItemCatList(String callback) {
ItemCatResult result = itemCatService.getItemCatList();
if (StringUtils.isBlank(callback)) {
//需要把result转换成字符串
return result;
}
//如果字符串不为空,需要支持jsonp调用
MappingJacksonValue mappingJacksonValue = new MappingJacksonValue(result);
mappingJacksonValue.setJsonpFunction(callback);
return mappingJacksonValue;
}
5.5 Portal中js处理
传智播客Java学院传智.入云龙
正在阅读:
淘淘商城第五天笔记05-20
高速公路收费站2020年班长个人总结09-06
光伏项目经理薪资03-14
机组直流蓄电池整组更换的安全、组织和技术措施(修改版)10-18
考研大纲词汇(没有翻译,方便背诵)12-27
计算方法第7章 - 最优化方法简介04-20
《水处理微生物学》复习题10-28
书,让我撒谎作文300字07-06
竣工图说明10-19
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 五天
- 淘淘
- 笔记
- 商城
- 小升初阅读——古诗文选择题
- 高中英语阅读理解题型及解题技巧
- 第二章 写作主体与客体
- 16算理、几何推理分析及尺规作图与推理
- 2016高考英语完形填空和阅读理解一轮练习(1)
- 保利商业模式的研究
- 北京市47家种猪场名录
- 中央储备粮代储资格认定办法实施细则word格式
- 福建“机器换人”设备项目可行性研究报告
- 大思数字密码(图文并茂版)
- 江西省南康市职业中等专业学校大记事
- 湖泊治理——HDP景观水直接净化技术
- 实验一常用DOS命令操作应用
- Mazda6 4S定期保养标准作业项目及收费标准
- 第二讲 函数的单调性与最值
- 第二章 均衡价格理论 习题
- 2011-2012年度第一学期班主任工作计划
- 常见的五种悬架类型
- 2012版深圳牛津英语七年级上册期末复习资料-Unit 4 Seasons-试题4
- 能治病的奇特方法:打通任督二脉的奇特方法