新巴巴运动网 项目第四天

新巴巴运动网 项目第四天

 

 

  1. 今天内容

    1. 介绍FastDFS 分布式文件系统 原理
    2. 为什么要使用FastDFS 保存到Tomcat 缺点 保存到FastDFS 优点
    3. FastDFS搭建(由运维工程师) 网管
    4. FastDFS的Java接口(保存图片到FastDFS上去)
    5. 修改页面 提交
    6. 全选
    7. 删除(批量)
    8. 商品表四张
    9. 逆向工程(Dao接口、Mapper、POJO) 增强版
    10. 测试工程(逆向工程使用)
    11. 商品管理—列表查询(带条件+分页)

       

       

  2. 介绍FastDFS 原理

 

FastDFS分布式文件系统

 

 

 

原理图

 

 

  1. 优点:

FastDFS相比于Tomcat :不存在单点故障问题、支持容灾。

FastDFS相比于Tomcat:集群 (安全) 保存图片过多时 扩容 分配合理 。

FastDFS相比于Tomcat: 具有备份功能、不怕磁盘损坏。

 

 

  1. FastDFS安装

公司有运维工程师安装 (中型公司及以上)

自行安装(小公司)如果没有运维、以下是安装文档。

192.168.200.128

  1. FastDFS位置

  1. 配置Nat

 

 

 

 

 

 

启动

 

 

用户名/密码

root/123456

 

 

 

 

  1. 测试是否启动成功

http://192.168.200.128/group1/M00/00/01/wKjIgFWOYc6APpjAAAD-qk29i78248.jpg

 

 

 

 

  1. FastDFS的Java接口

 

FastDFSUtils 工具类

上传图片到分布式文件系统

  1. 分布式文件系统的配置文件如下

fdfs_client.conf

 

# connect timeout in seconds

# default value is 30s

connect_timeout=30

 

# network timeout in seconds

# default value is 30s

network_timeout=60

 

# the base path to store log files

base_path=/home/fastdfs

 

# tracker_server can ocur more than once, and tracker_server format is

# "host:port", host can be hostname or ip address

tracker_server=192.168.200.128:22122

#tracker_server=192.168.101.4:22122

 

#standard log level as syslog, case insensitive, value list:

### emerg for emergency

### alert

### crit for critical

### error

### warn for warning

### notice

### info

### debug

log_level=info

 

# if use connection pool

# default value is false

# since V4.05

use_connection_pool = false

 

# connections whose the idle time exceeds this time will be closed

# unit: second

# default value is 3600

# since V4.05

connection_pool_max_idle_time = 3600

 

# if load FastDFS parameters from tracker server

# since V4.05

# default value is false

load_fdfs_parameters_from_tracker=false

 

# if use storage ID instead of IP address

# same as tracker.conf

# valid only when load_fdfs_parameters_from_tracker is false

# default value is false

# since V4.05

use_storage_id = false

 

# specify storage ids filename, can use relative or absolute path

# same as tracker.conf

# valid only when load_fdfs_parameters_from_tracker is false

# since V4.05

storage_ids_filename = storage_ids.conf

 

 

#HTTP settings

http.tracker_server_port=80

 

#use "#include" directive to include HTTP other settiongs

##include http.conf 

 

  1. 上传图片到FastDFS的Java接口

/**

* 上传图片到FastDFS

* @author lx

*

*/

public class FastDFSUtils {

 

    

    //上传

    public static String uploadPic(byte[] pic,String name,long size) throws Exception{

        //全局设置Tracker的IP

        ClassPathResource resource = new ClassPathResource("fdfs_client.conf");

        ClientGlobal.init(resource.getClassLoader().getResource("fdfs_client.conf").getPath());

        //连接Tracker

        TrackerClient trackerClient = new TrackerClient();

        //获取Stoage的地址

        TrackerServer trackerServer = trackerClient.getConnection();

        //连接Stoage的服务器

        StorageServer storageServer = null;

        StorageClient1 storageClient1 = new StorageClient1(trackerServer,storageServer);

        //上传图片到Stoage

        String ext = FilenameUtils.getExtension(name);

        NameValuePair[] meta_list = new NameValuePair[3];

        meta_list[0] = new NameValuePair("filename",name);

        meta_list[1] = new NameValuePair("fileext",ext);

        meta_list[2] = new NameValuePair("filesize",String.valueOf(size));

        // group1/M00/00/01/wKjIgFWOYc6APpjAAAD-qk29i78248.jpg

        String path = storageClient1.upload_file1(pic, ext, meta_list);

        //接收返回值(图片的路径)

        return path;

        

    }

 

 

  1. 保存图片到FastDFS分布式文件系统

 

  1. 创建UploadServiceImpl

 

  1. Dubbo配置

服务提供方

 

服务消费方

  1. 创建UploadController

 

 

 

 

 

  1. 修改页面(提交表单)

  1. 对字段

由于<img src属性不能在提交表单时、将数据提交到Controller层、所以添加一行隐藏域

来保存图片的路径、目地是提交表单时把此路径也提交到Controller中品牌对象中

 

第一步:

 

第二步:

  1. Dao

  1. Mapper

  1. Service

修改品牌

入参:Brand对象

 

  1. BrandController

入参:Brand对象

跳转视图:重定向

 

 

 

  1. 全选

 

 

  1. 删除(批量)

 

  1. Function

 

  1. Dao

  1. Mapper

  1. Service

  1. Controller

接收的 Long【】 ids

跳转视图:重定向

 

 

 

  1. 删除带条件

页面按钮

 

 

Function

 

Controller

  1. 导入七张表及数据

商品表四张 商品表 品牌表 颜色表 SKu表(库存表)

用户表一张

订单表二张

广告表二张

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. 商品表

四张

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. 逆向工程

 

OOM

Out of memery

 

 

物理级分页

  1. 测试逆向工程

    1. 通过ID查询

  1. 通过条件复杂查询

 

 

 

  1. 商品管理之列表查询

  1. 点击商品管理进入商品列表页面 默认条件为下架状态
  2. 点击查询按钮刷新商品列表页面 条件为商品名称、品牌、上下架状态
  3. 点击分页页号进入商品列表页面 条件为商品名称、品牌、上下架状态、页号

 

 

  1. 商品管理按钮的路径设置

在frame/product_left.jsp中

 

/product/list.do

 

 

  1. 页面条件

 

  1. 页面结果集

 

 

 

  1. 页面分页

 

 

 

  1. ProductService 查询分页对象

入参: 商品名称 、品牌ID 、是否上下架 当前页

返回值:分页对象

 

 

 

  1. Dubbo配置

 

 

  1. ProductController 查询分页对象

入参: 商品名称 、品牌、是否上下架 当前页

返回值:分页对象

跳转视图 product/list

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

      

 

posted @ 2017-01-12 13:28  beyondcj  阅读(1106)  评论(1编辑  收藏  举报