首页 » 技术分享 » 宅急送 项目第一天 环境搭建

宅急送 项目第一天 环境搭建

 

1. 项目分析

1.1. 产品和项目区别?

产品 先投资 ,做出产品, 再去销售 (QQ、 360 )
项目 投标 ,分为甲方 (项目应用方)和乙方 (项目开发方), 甲方先给乙方 项目前期款, 交付项目后,收取尾款 。

1.2. BOS项目规模

项目周期 : 1年多
纯编码时间 : 3个多月 , 项目组开发人员 :20多人

1.3. 系统分类

OA 自动化办公
CRM 客户关系管理
ERP 是针对物资资源管理(物流)、人力资源管理(人流)、财务资源管理(财流)、信息资源管理(信息流)集成一体化的企业管理软件

BOS 是 ERP 一个部分,在需求中需要和财务系统 、CRM系统 对接

1.4. 软件开发流程

需求调研 (分析) —- 系统设计 — 编码 — 测试 — 实施和运维

1.5. BOS 业务分析

这里写图片描述

开发任务 : 三个业务模块
基础设置模块(基础数据模块 ) —物流基础数据 (取派人员信息、 区域信息 、 区域分配信息 、 线路信息 …. ) 对应 需求 2.6 章节
取派模块 对应需求 2.7 业务受理 2.8 调度 —– 接收客户业务诉求 ,将业务数据录入到系统
中转模块 (物流中数据管理) —- 2.9 以后

两个系统功能模块 : 用户 和 权限

时间安排 : JBPM 4天 、搭建环境2天 、权限管理 1天

1.6. 项目开发环境

开发环境 : window + tomcat6/7 + myeclipse + mysql
产品环境 : linux (企业服务器版) + Oracle + WebLogic/JBOSS

这里写图片描述

2. 项目导入

将 bos 项目代码导入 myeclipse 开发工具
建议新建web项目, 将代码对应部分复制到项目中 !
(MyEclipse、Eclipse、 Maven )

这里写图片描述

通常三个 source folder
src 存放源码
resources、config 存放配置文件
test 存放测试用例

struts2 约定要求,将JSP页面 放入WEB-INF 下 !!!!
struts2 拦截器,拦截 Action的访问 !!!

问题: Filter 和 Interceptor 有何区别?
Filter 可以拦截所有web 资源
Interceptor 只能拦截Action

问题: 将很多JSP都放入WEB-INF 不能直接访问,通过Action访问,需要为每一个JSP配置一个Action吗?

<!-- 需要进行权限控制的页面访问 -->
<action name="page_*_*">
    <result type="dispatcher">
        /WEB-INF/pages/{1}/{2}.jsp
    </result>
</action>

访问 page_a_b.action 映射到 /WEB-INF/pages/a/b.jsp

/page_common_index.action 主页 /WEB-INF/pages/common/index.jsp 

<jsp:forward page="/page_common_index.action"></jsp:forward> 

问题: 主页Action 也需要走struts的Filter ,Filter 默认只在请求方式下拦截

这里写图片描述

如果没有配置 dispatcher : forward 不会在转发情况下执行Filter

3. 使用maven进行项目构建

MyEclipse 自带maven 插件
Eclipse 需要单独安装maven插件

3.1. Maven 在企业中怎么用的 ?

Maven : 项目构建工具 ,进行项目编译、测试、打包、运行、发布 ….

使用 maven将工程进行组件化 ,项目分为 表现层、业务层、 数据层 属于maven创建 三个项目 ,分别进行三层开发
Maven 和 Jenkins (hudson) 对项目进行持续集成
企业中搭建私服

3.2. 建立maven骨架的项目,运行bos

1、 下载和解压 maven 的zip包

2、 在myeclipse 配置外部 maven

这里写图片描述

3、 配置仓库setting文件 和 仓库位置

默认位置 C:\Documents and Settings\seawind\.m2 (这个文件夹没有 settings,xml )
将解压maven目录/ conf/ settings.xml 复制 C:\Documents and Settings\seawind\.m2

这里写图片描述

在 settings.xml 指定本地仓库位置

这里写图片描述

Maven 原理, 使用坐标导入jar包,先在本地仓库找,如果没有,会去网络上仓库下载 !

4、 将 repository.rar 解压,覆盖本机原来 的仓库

5、 在myeclipse 建立maven工程

可以自己选择骨架

这里写图片描述

quickstart 骨架, javase的maven项目
webapp 骨架, javaee的maven项目

这里写图片描述

使用simple project 骨架

输入maven参数
坐标 : GroupId 、ArtifactId 、Version
Packing 打包方式 : jar(给别人引入的)、pom(给别人继承的)、war (用来运行的)

这里写图片描述

maven 项目结构分析
src/main/java 存放项目源码
src/main/resources 存放项目配置文件
src/test/java 存放测试用例代码
src/test/resources 存放测试配置文件

src/main/webapp 文件夹用来存放页面代码 

6、 移植项目

将源码 src/main/java
将配置文件 src/main/resources 
将页面 src/main/webapp  (WEB-INF 不要移动lib,只需要pages和web.xml )

7、 编写pom.xml

使用坐标导入 jar包

这里写图片描述

只需要获取 需要项目坐标,就可以引入
http://search.maven.org/
http://mvnrepository.com/

8、运行项目

右键项目 – run as — maven build —- tomcat:run

这里写图片描述

使用 maven tomcat plugin 1.1 进行运行

3.3. tomcat-maven-plugin 插件

早期插件 groupId : org.codehaus.mojo , artifactId : tomcat-maven-plugin 版本1.1

这里写图片描述

现在这个插件,被分为两个插件,坐标也改了

这里写图片描述

这里写图片描述

3.3.1. 修改内部运行 tomcat的端口

<!-- 对插件进行配置 -->
<configuration>
    <port>80</port>
</configuration>

3.3.2. 自动发布到远程tomcat

使用 tomcat内部manager 程序,进行项目热部署 (需要远程tomcat 必须开启的 )
使用 manager 组件
配置 tomcat/conf/tomcat-users.xml

<role rolename="admin-gui"/>
<user username="tomcat" password="s3cret" roles="admin-gui"/>

远程发布
第一步: 在 tomcat/conf/tomcat-user.xml 建立账号
远程访问 tomcat6 : tomcat-users.xml

<role rolename="manager"/>
<user username="tomcat" password="123456" roles="manager"/> 

远程访问 tomcat7 : tomcat-users.xml

<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="123456" roles="manager-gui, manager-script"/>

第二步 : 配置pom.xml 允许远程发布

<!-- tomcat6.x -->
<url>http://localhost:8080/manager</url>
<!-- tomcat7.x -->
<url>http://localhost:8080/manager/text</url> 
<server>myserver</server>

这里写图片描述

第三步 : 配置 setting.xml 服务器myserver 连接属性

<server>
     <id>myserver</id>
     <username>tomcat</username>
     <password>123456</password>
</server>

保证外部tomcat 正确运行后,执行 tomcat:deploy / tomcat:redeploy

4. SVN的安装与使用

为什么要使用版本控制 ?
对代码进行备份,根据需要恢复
多人同时修改代码时,防止并发修改代码覆盖问题

4.1. 使用 Visual SVN 搭建SVN服务器

搭建纯粹SVN服务器 — svn:// 访问资源
将SVN 和 Apache服务器整合 ,搭建web SVN服务器 —- https:// 访问资源

指定硬盘仓库位置 d:\Respositories

这里写图片描述

这里写图片描述

安装如果系统账户是中文用户名,报错

1) 新建 SVN仓库 bos
2) 新建 SVN 账户 yuy/123

访问 : https://localhost:8443/svn/bos/

安装 SVN 客户端软件

4.2. SVN客户端使用

4.2.1. TortoiseSVN 安装使用

这里写图片描述

产生右键菜单
Repo-browser 查看仓库中内容
Import 可以将资源上传 服务器 (没有建立与SVN仓库同步 )
Check out 将SVN仓库文件检出 (与SVN仓库同步 ) — 开发人员检出同步修改
Update 将本地文件更新到最新版本
Commit 将本地修改提交到服务器
Export 导出文件,与SVN仓库不同步 (商品上线,代码拷贝)

4.2.2. MyEclipse SVN 插件使用

site-1.8.8.zip —- 绿色安装
步骤一: 解压压缩包,建立插件目录结构
插件目录

    ----- eclipse 
            ------ features
            ------ plugins

步骤二: 将插件目录,复制myeclipse/dropins 目录 ,重启MyEclipse

步骤三: 在MyEclipse 建立仓库连接

这里写图片描述

步骤四: 将MyEclipse 工程代码上传 SVN仓库

这里写图片描述

这里写图片描述

步骤五: 将工程文件,上传SVN服务器
不要将 maven项目target 目录上传 !!!

5. 系统主页设计

使用 前端UI 框架,制作页面效果 (Java工程师 不用学习 页面东西,将页面制作的很美观 )
ExtJS 前端JS框架
Flex 基于Flash 制作页面前端 (mxml 和 ActionScript 脚本)

今天 项目引入 Jquery Easy UI 框架 (效果类似 Ext JS )
快速上手,学习成本低

5.1. easyui的目录分析

课程 以 jquery Easy UI 1.3.2 版本学习
(从1.2.3 版本 开始收费 )

这里写图片描述

demo 实例
locale 国际化信息
plugins 框架一些插件
src 源码
themes 样式文件
easyloader.js 框架核心加载器 (加载其它plugin)
jquery-1.8.0.min.js jQuery类库
jquery.easyui.min.js 框架类库 (等价于 easyloader.js + plugins 所有插件 )

5.2. 在项目中引入 EasyUI

必须引入

这里写图片描述

<!-- 先引入 jquery的 js -->
<script type="text/javascript" 
    src="${pageContext.request.contextPath }/js/jquery-1.8.3.js">
</script>
<!-- 引入 easyui的js -->
<script type="text/javascript" src="${pageContext.request.contextPath }/js/easyui/jquery.easyui.min.js"></script>
<!-- 引入国际化 js -->
<script type="text/javascript" src="${pageContext.request.contextPath }/js/easyui/locale/easyui-lang-zh_CN.js"></script>
<!-- 引入 默认样式 css -->
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/js/easyui/themes/default/easyui.css"/>
<!-- 引入 icon图标 css  -->
<link rel="stylesheet" 
type="text/css" href="${pageContext.request.contextPath }/js/easyui/themes/icon.css"/>

5.3. easyui 的layout 控件使用

布局控件 对一个div使用,也可以对 整个页面 body元素使用

这里写图片描述

5.4. easyui 的accordion 折叠面板使用

设置fit属性,让面板占满父容器

<!-- 折叠面板  -->
<!-- fit属性,使当前div大小占满父容器  -->
<div class="easyui-accordion" data-options="fit:true">
    <!-- 通过iconCls 设置图标,找 icon.css中 类定义 -->
    <div data-options="title:'基本功能',iconCls:'icon-mini-add'">面板一</div> <!-- 这里每个div就是一个面板 -->
    <div data-options="title:'高级功能'">面板二</div>
    <div data-options="title:'管理员功能'">面板三</div>
</div>

5.5. easyui 的 tabs 选项卡面板 使用

<div data-options="region:'center'">
    <!-- 选项卡面板 -->
    <div class="easyui-tabs" data-options="fit:true">
        <div data-options="title:'选项卡一'">内容一</div> <!-- 这里每个div 就是一个选项卡 -->
        <!-- closeable 可关闭 -->
        <div data-options="title:'选项卡二',closable:true">内容二</div>
        <div data-options="title:'选项卡三'">内容三</div>
    </div>
</div>

5.6. 树形菜单的制作

使用 ztree插件,制作树形菜单
zTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点。

下载 ztree 3.5.02 版本

这里写图片描述

api 文档
css 样式
demo 案例
js 核心类库文件

all.js = core + check + edit + hide 开发中只需要引入 all.js

在页面引入 ztree

<!-- 引入ztree  -->
<script type="text/javascript" src="${pageContext.request.contextPath }/js/ztree/jquery.ztree.all-3.5.js"></script>

<link rel="stylesheet" type="text/css" 
href="${pageContext.request.contextPath }/js/ztree/zTreeStyle.css"/>

案例一: 标准数据tree
1、 在显示树位置写

  • 标签
<!-- 显示树 -->
<ul id="basicTree" class="ztree"></ul>

2、 通过js 编写setting对象
// 设置树参数

var setting = {};

3、 设置树节点数据

// 数据
        var zNodes = [
            {"name":"菜单一"}, // 每个{} 就是一个节点
            {"name":"菜单二"} 
        ];

4、初始化树

// 初始化树
$.fn.zTree.init($("#basicTree"), setting, zNodes);

复杂树

这里写图片描述

问题: 标准数据树,不适用大数据的树结构

案例二: 简单数据ztree

1、 在显示ztree位置定义 ul

<!-- 显示树(简单数据 ) -->
<ul id="simpleTree" class="ztree"></ul>

2、 设置ztree参数 setting

// 设置树参数 
        var setting = {
            data : {
                simpleData : {
                    enable : true
                }
            }
        };

3、 树节点数据

// 数据
        var zNodes = [
            // id 代表本节点编号,pId代表父节点编号 
            {"id":"1","pId":"0","name":"菜单一"},
            {"id":"2","pId":"0","name":"菜单二"}
        ];

4、 初始化树

// 初始化树
$.fn.zTree.init($("#simpleTree"), setting, zNodes);

复杂树

这里写图片描述

通过url 属性,完成树节点跳转
通过icon属性,定制节点图标

其它内容

这里写图片描述

零配置SSH架构

这里写图片描述

SVN

这里写图片描述

项目环境搭建资源

这里写图片描述

jquery 插件

这里写图片描述

里面有jquery的中文文档等资料

maven

这里写图片描述

课堂代码

这里写图片描述

视频内容

这里写图片描述

这里写图片描述

转载自原文链接, 如需删除请联系管理员。

原文链接:宅急送 项目第一天 环境搭建,转载请注明来源!

0