宜立方商城的系统架构
a) 功能介绍(项目架构,有哪些功能模块,这些功能模块如何实现?)
b) 架构讲解
工程搭建-后台工程
c) 使用maven搭建工程(后台工程如何搭建?)
d) 使用maven的tomcat插件启动工程
SSM框架整合。
 
服务中间件dubbo,使用dubbo实现soa架构。
项目改造为基于SOA架构(什么是SOA架构,有什么好处,如何使用),面向服务的架构
 
图片上传功能分析,图片服务器,如何保存图片,如何访问图片?
nginx的安装:反向代理服务器、Nginx配置虚拟机,Nginx实现反向代理,Nginx实现负载均衡。
 
FastDFS分布式文件系统,使用FastDFS搭建图片服务器,主要用于存储图片。
上传图片功能实现1

// 1、加载配置文件,配置文件中的内容就是 tracker 服务的地址。

ClientGlobal.init("D:\\itcastworkspaceMars\\fastDfsDemo\\src\\main\\resources\\fdfs_client.conf");

// 2、创建一个 TrackerClient 对象。直接 new 一个。

TrackerClient trackerClient = new TrackerClient();

// 3、使用 TrackerClient 对象创建连接,获得一个 TrackerServer 对象。

TrackerServer trackerServer = trackerClient.getConnection();

// 4、创建一个 StorageClient 对象,需要两个参数 TrackerServer 对象、StorageServer 的引用

StorageClient1 storageClient = new StorageClient1(trackerServer, null);

// 5、使用 StorageClient 对象上传图片。

//扩展名不带“.”

String path = storageClient.upload_file1("E:\\image\\Koala.jpg", "jpg", null);

// 6、包含组名和图片的路径。

System.out.println(path);

富文本编辑器使用

KindEditor.ready(function(K) {

editor = K.create('textarea[name="content"]', {

allowFileManager : true

});

再添加之前,获得富文本编辑器中的内容。

$scope.entity.goodsDesc.introduction=editor.html();

商品添加功能实现
 
Cms系统的实现(内容管理系统):内容分类管理、内容管理。
Redis服务器搭建,每次访问都查询数据库,数据库压力会很大。
1、向业务逻辑中添加缓存。
2、使用redis做缓存
3、缓存同步。Redis集群
Solr服务器安装,使用solr服务器实现商品搜索功能。
1、Solrj使用测试
2、把数据库中的数据导入索引库
3、搜索功能的实现 solr集群搭建
什么是MQ,MQ的应用场景,使用Activemq发送接收消息
ActiveMQ整合spring。
使用freemarker实现网页静态化
ActiveMq同步生成静态网页
Sso系统工程搭建(单点登录系统):sso注册,登录功能实现,通过token获得用户信息,Ajax跨域请求(jsonp)
mycat的使用(数据库分片)
 
电商行业技术要求很高、高可用、海量数据的存储。每一个功能模块是如何实现的?

商场架构:前端和服务器端。

一款应用包含哪些模块?
后台管理系统:管理商品、订单、类目、商品规格属性、用户管理以及内容发布等功能。
前台系统:用户可以在前台系统中进行注册、登录、浏览商品、首页、下单等操作。
会员系统:用户可以在该系统中查询已下的订单、收藏的商品、我的优惠券、团购等信息。
订单系统:提供下单、查询订单、修改订单状态、定时处理订单。
搜索系统:提供商品的搜索功能。

单点登录系统:为多个系统之间提供用户登录凭证以及查询登录用户的信息。
使用maven进行依赖管理:jar包依赖,module依赖。
Maven软件:在setting.xml中修改本地仓库的位置。
<!-- 集中定义依赖版本号 --> 使用版本锁定<properties></properties>
<!-- 资源文件拷贝插件 --><!-- java编译插件 --> <!-- 配置Tomcat插件 -->
父工程
<parent>
<groupId>cn.e3mall</groupId>
<artifactId>e3-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
引用另一个项目
<dependency>
<groupId>cn.e3mall</groupId>
<artifactId>e3-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
 
Mybatis的配置文件:SqlMapConfig.xml
不需要配置任何内容,需要有文件头。文件必须存在。
 
mybatis整合spring,通过由spring创建数据库连接池,spring管理SqlSessionFactory、mapper代理对象。需要mybatis和spring的整合包。
 
Service层:applicationContext-service.xml:所有的service实现类都放到spring容器中管理。并由spring管理事务。
管理Service:<context:component-scan base-package="cn.e3mall.service"/>
 
Springmvc框架,由springmvc管理controller。Springmvc的三大组件。
 
Web.xml:初始化spring容器,配置前端控制器
<!-- 加载spring容器 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/applicationContext*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

sftp安全文件传送协议:(图片存储的时候使用)
sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。
从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。
 
富文本编辑器实际上是通过Html代码实现的。
在jsp页面中嵌入富文本编辑器,如何实现?
图片上传流程:1)把图片上传到如偏服务器,并返回对应的图片存储路径2)将图片路径保存到数据库中。
图片上传工具类
 
使用FastDFS,分布式文件系统:
存储空间可以横向扩展;可以实现服务器的高可用,支持每个节点有备份机。
 
图片上传封装成工具类使用,链接图片服务器,通过流的方式上传,关闭连接。
 
请求的url:/pic/upload
参数:MultiPartFile uploadFile
业务逻辑:
1、接收页面传递的图片信息uploadFile
2、把图片上传到图片服务器。使用封装的工具类实现。需要取文件的内容和扩展名。
3、图片服务器返回图片的url
4、将图片的url补充完整,返回一个完整的url。
5、把返回结果封装到一个Map对象中返回。
 
1、需要把commons-io、fileupload 的jar包添加到工程中。
2、配置多媒体解析器。
!-- 定义文件上传解析器 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设定默认编码 -->
<property name="defaultEncoding" value="UTF-8"></property>
<!-- 设定文件上传的最大值5MB,5*1024*1024 -->
<property name="maxUploadSize" value="5242880"></property>
</bean>
 
在jsp页面中插入富文本编辑器。
KindEditor
http://kindeditor.net/
UEditor:百度编辑器
http://ueditor.baidu.com/website/
 
商品添加功能实现,功能分析
请求的url:/item/save
参数:表单的数据。可以使用pojo接收表单的数据,要求pojo的属性和input的name属性要一致。

使用TbItem对象接收表单的数据。

  1.  
    package cn.e3mall.controller;
  2.  
     
  3.  
    import cn.e3mall.common.E3Result;
  4.  
    import cn.e3mall.common.EasyUIDataGridResult;
  5.  
    import cn.e3mall.pojo.TbItem;
  6.  
    import cn.e3mall.service.ItemService;
  7.  
    import com.alibaba.fastjson.JSON;
  8.  
    import com.alibaba.fastjson.JSONArray;
  9.  
    import com.sun.org.apache.bcel.internal.generic.RETURN;
  10.  
    import net.sf.jsqlparser.statement.select.ValuesList;
  11.  
    import org.springframework.beans.factory.annotation.Autowired;
  12.  
    import org.springframework.beans.factory.annotation.Value;
  13.  
    import org.springframework.stereotype.Controller;
  14.  
    import org.springframework.web.bind.annotation.PathVariable;
  15.  
    import org.springframework.web.bind.annotation.RequestMapping;
  16.  
    import org.springframework.web.bind.annotation.RequestMethod;
  17.  
    import org.springframework.web.bind.annotation.ResponseBody;
  18.  
     
  19.  
     
  20.  
    /**
  21.  
    * describe:商品Controller
  22.  
    *
  23.  
    * @author chenrushui
  24.  
    * @date 2018/06/26
  25.  
    */
  26.  
    @Controller
  27.  
    public class ItemController {
  28.  
     
  29.  
    /**
  30.  
    * 沒有接口实现,需要有接口定义
  31.  
    */
  32.  
    @Autowired
  33.  
    private ItemService mItemService;
  34.  
     
  35.  
    //json数据格式,并且为utf-8的编码方式
  36.  
    @RequestMapping(value = "/item/{itemId}", produces = "text/json;charset=UTF-8")
  37.  
    @ResponseBody
  38.  
    public String getProductById(@PathVariable Long itemId) {
  39.  
    TbItem tbItem = mItemService.selectItemById(itemId);
  40.  
    //使用fastjson把json字符串转化成json对象,不能直接toString.
  41.  
    return JSON.toJSONString(tbItem);
  42.  
    }
  43.  
     
  44.  
    @RequestMapping(value = "/test")
  45.  
    @ResponseBody
  46.  
    public String getProductById() {
  47.  
    return "ceshi";
  48.  
    }
  49.  
     
  50.  
    /**
  51.  
    * 获取商品列表数据
  52.  
    *
  53.  
    * @return
  54.  
    */
  55.  
    @RequestMapping(value = "/list")
  56.  
    public EasyUIDataGridResult getItemList(Integer page, Integer rows) {
  57.  
    EasyUIDataGridResult itemList = mItemService.getItemList(page, rows);
  58.  
    return itemList;
  59.  
    }
  60.  
     
  61.  
    /**
  62.  
    * 添加商品信息
  63.  
    *
  64.  
    * @param item
  65.  
    * @param desc
  66.  
    * @return
  67.  
    */
  68.  
    @RequestMapping(value = "/item/save", method = RequestMethod.POST)
  69.  
    @ResponseBody
  70.  
    public E3Result addItem(TbItem item, String desc) {
  71.  
    E3Result e3Result = mItemService.addItem(item, desc);
  72.  
    return e3Result;
  73.  
    }
  74.  
    }

为什么jsp页面需要放到WEB-INF目录下?因为配置的视图解析器路径是WEB-INF目录。
 
后台管理系统web项目(spring MVC)和商城前端项目(jsp页面)。
 
mybatis中的@Param注解和参数
1、不使用@Param注解时,参数只能有一个,并且是Javabean。在SQL语句里可以引用JavaBean的属性,而且只能引用JavaBean的属性。
//这里id是user的属性
@Select("SELECT * from Table where id = ${id}")
Enchashment selectUserById(User user);
2、使用@Param注解
表示给参数命名,名称就是括号中的内容。给参数命名,然后在映射文件中就能根据名称获取参数值了。
 
操作xml的快捷键
1、注释:ctrl+shift+/
2、取消注释:ctrl+shift+\
 
当前编写的代码都是可用模块,将来工作中都能拿来用。
BaseResult类敲一遍,能够背下来;对这个类理解的不透彻。
返回jsp页面,Model对象的使用。
根据id查询信息,pid,cid,uid(商品信息,内容信息,用户信息)
springMVC中的配置:静态资源映射,多媒体解析器,视图解析器
数据库表中的字段createTime,updateTime (new Date())
别忘了@Service注解,要不然会找不到对象类型的。
接收表单数据,使用pojo进行接收。
Mybatis的主键返回,把当前对象返回。
 
按照自己的思路把代码写完 而不是抄一遍,抄一遍没效果的。
 
异常设计:
dao层捕获异常,然后向controller抛出。(只捕获异常,不向外抛出,还是没有用的)。
 
设置tomcat默认启动谷歌浏览器。

查看方法参数,快速文档。

富文本编辑器和fastdfs的使用的更多相关文章

  1. 百度富文本编辑器整合fastdfs文件服务器上传

    技术:springboot+maven+ueditor   概述 百度富文本整合fastdfs文件服务器上传 详细 代码下载:http://www.demodashi.com/demo/15008.h ...

  2. JAVAEE——宜立方商城04:图片服务器FastDFS、富文本编辑器KindEditor、商品添加功能完成

    1. 学习计划 1.图片上传 a) 图片服务器FastDFS b) 图片上传功能实现 2.富文本编辑器的使用KindEditor 3.商品添加功能完成 2. 图片服务器的安装 1.存储空间可扩展. 2 ...

  3. 使用百度UMeditor富文本编辑器,修改自定义图片上传,修改源码

    富文本编辑器,不多说了,这个大家应该都用到过,至于用到的什么版本,那就分很多种 CKEditor:很早以前叫FCK,那个时候也用过,现在改名了,比较流行的一个插件,国外很多公司在用 UEDITOR:百 ...

  4. 富文本编辑器Simditor的简易使用

    最近打算自己做一个博客系统,并不打算使用帝国cms或者wordpress之类的做后台管理!自己处于学习阶段也就想把从前台到后台一起谢了.好了,废话不多说了,先来看看富文本编辑器SimDitor,这里是 ...

  5. 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范

    昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...

  6. UEditor百度富文本编辑器--让编辑器自适应宽度的解决方案

    UEditor百度富文本编辑器的initialFrameWidth属性,默认值是1000. 不能够自适应屏幕宽度.如图1: 刚开始的时候,我是直接设置initialFrameWidth=null的.效 ...

  7. PHP Ueditor 富文本编辑器

    2016年12月11日 08:46:59 星期日 百度的简版富文本编辑器umeditor很久没更新了 全功能版本的配置项跟umeditor还是有区别的, 这里说下ueditor怎么对接到项目中去, 主 ...

  8. JavaScript 富文本编辑器

    WEB项目中使用UEditor(富文本编辑器) UEditor - 完整示例 http://ueditor.baidu.com/website/onlinedemo.html UEditor注意事项: ...

  9. MVC 使用 Ueditor富文本编辑器

    一.Ueditor 1.下载Ueditor富文本编辑器 官方下载地址: http://ueditor.baidu.com/website/download.html 建议下载开发版,此处我下载的是 . ...

随机推荐

  1. 如何将angular-ui-bootstrap的图片轮播组件封装成一个指令

    在项目开发中我们经常会遇到图片轮播的功能点: 如果我们开发人员自己原生手写,将会花费很多的时间,最终得不偿失. 接下来就详细说说如何使用angular-ui发热图片轮播模块,并且将它写成一个指令(便于 ...

  2. k-means算法Java一维实现

    这里的程序稍微有点变形.k_means方法返回K-means聚类的若干中心点.代码: import java.util.ArrayList; import java.util.Collections; ...

  3. Eclipse编译问题

    问题现象:Maven编译ok,Eclipse始终存在编译错误,点了工程的刷新,没用,点了Eclipse上面的菜单Project -> Clean,也没用.后来看了下工作空间项目目录,发现.cla ...

  4. RK3288 HDMI配置和调试

    RK3288 最大输出分辨率为 3840x2160 HDMI 驱动代码位于 kernel/drivers/video/rockchip/hdmi/rockchip-hdmiv2 目录 1.设置默认输出 ...

  5. (转)win7+iis7.5+asp.net下 CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files 解决方案

    本文转载自:http://www.cnblogs.com/finesite/archive/2011/01/28/1946940.html 网上搜的解决方案但在我的环境下仍旧没有解决,我的方法如下: ...

  6. postman 设置代理

    点击右上角 图标(亮着的为录制中) 设置端口 和存放位置 把浏览器设置代理 localhost 8080 即可 filter中可以通过正则表达式来匹配自己关心的url     2018.9 后记: 今 ...

  7. [转]java中byte转换int时为何与0xff进行与运算

    在剖析该问题前请看如下代码public static String bytes2HexString(byte[] b) {  String ret = "";  for (int ...

  8. 纯css实现点击事件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. mysql 优化 (1)

    提高IOPS能力的几种方法换SSD,PCIE-SSD(提高IO效率,普通SAS盘5000以内的iops,而新设备可达到数万或者数十万iops)少做IO的活(合并多次读写为一次,或者前端加内存CACHE ...

  10. PyQt 5控件

    PyQt 5控件包括:按钮.复选框.滑动条.列表框等 复选框QCheckBox QCheckBox复选框控件,它有两个状态:打开和关闭,他是一个带有文本标签(Label)的控件.复选框常用于表示程序中 ...