永和大王
目录:
day01:业务需求+开发环境
day02:HTML网页制作+CSS样式表+二维码
day03:动态技术J2ee Servlet+JSP
day04:mysql数据库+sqlyog的使用
day05: PowerDesigner的使用+Jdbc
day06:日期格式的转换和统一
day07:项目开发设计思路
Database:永和大王数据
FAQ:没有在WEB-INF\classes中生成class文件
day01
1 第一天:业务需求+开发环境
1.1 培优课程体系


1.2 培优的就业数据
1.3 软件开发
1.3.1 开发岗位

1.3.2 软件开发流程
1.4 学到的技术点
1.4.1 Day01
1.4.2 Day02
1.4.3 Day03
1.4.4 Day04
1.4.5 Day05
1.4.6 Day06
1.5 永和大王门店管理系统
1.5.1 项目背景

《永和大王门店管理系统》实现顾客进店后选择购买的套餐,并在系统中生成订单,包括:门店名称,门店电话,订单号,并记录下订单类型及人数和收银员是谁,及下单时间和结账时间,并记录订单详情,顾客点了哪些食物,支付方式以及支付总金额等信息,最终实现打印门店小票。同时,在订单下方展示本店的二维码,方便顾客扫描二维码自助填写税务发票信息等功能。

1.5.2 还能实现什么?
1.5.2.1 医药管理系统

1.5.2.2 税务发票系统

1.5.2.3 餐厅结账单

1.5.2.4 德克士

1.5.2.5 加油站

1.6 开发工具
1.6.1 必备的开发软件
1.6.2 FTP下载资料
1.6.3 PowerDesinger设计工具安装

语言选择中文RPC,同意协议,其他一路next即可。

1.7 Java开发环境安装
1.1.1 安装jdk并检验

1.1.2 检查jdk版本

1.1.3 常用DOS命令:
C:\Users\Administrator>d: 切换盘符,进度d盘
D:\>cd a 进入a文件夹
D:\a>dir 显示a文件夹下的所有文件
D:\a>cd .. 返回上级目录
D:\a\b\c\d>cd / 返回根目录
1.8 第一个java程序HelloWorld
1.1.4 开发环境的准备
1.1.5 开发步骤
1.1.5.1 创建Java工程

1.1.5.2 创建HelloWorld类

1.1.5.3 创建main方法
package cn.tedu.hello;
//这个类用来做Java的第一个小程序
/**
* public 是类的修饰符
* class 用来定义一个类
* HelloWorld 是类的名字
*/
public class HelloWorld {
//Java中的入口程序,定义一个main方法(函数)
/**
* public 是方法的修饰符
* static 是静态的,作为方法的描述信息,
* 表示了一个静态方法
* void 是指定方法的返回值为空
* main 叫做方法名字
* (String[] args) 叫做方法的参数
* String[] 叫参数的类型
* args 叫参数的名字
* */
public static void main(String[] args){
/**
* System 系统指令
* out 让系统做一个输出的动作
* println 换行打印
* "hello world~~" 打印一个字符串("")
* ; java语句结束符
*
* 想要运行的话:
* 空白处右键->run as --> java application
*/
System.out.println("hello world~~");
}
}
day02
HTML网页制作+CSS样式表+二维码
1 HTML网页制作
1.1 概述
1.2 如何使用
1.2.1 创建动态web工程

1.2.2 创建order.html
<!DOCTYPE html>
<html><!-- 指定文件是一个网页文件 -->
<head><!-- 网页的头部分 -->
<meta charset="UTF-8"><!-- 指定编码格式 -->
<title>永和大王</title><!-- 指定网页的标题 -->
</head>
<body><!-- 网页的体部分 -->
<div>顾客联</div>
<div>请您留意取餐账单号</div>
<div>自取顾客联</div>
<div>永和大王(北三环西路店)</div>
<div>010-62112313</div>
<div>--结账单--</div>
<div>账单号:P000009</div>
<div>账单类型:堂食</div>
<div>人数:1</div>
<div>收银员:张静</div>
<div>开单时间:2018-04-17 07:24:11</div>
<div>结账时间:2018-04-17 07:24:22</div>
<hr/>
<div>
<table><!-- 向网页中插入一个表格 -->
<tr><!-- 表示表格中的行元素 -->
<td>数量</td><!-- 表格中的列元素 -->
<td>品项</td>
<td>金额</td>
</tr>
<tr>
<td>1</td>
<td>豆浆油条套餐</td>
<td>7.00</td>
</tr>
<tr>
<td> </td>
<td>1 X --非矾油条</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>1 X --现磨豆浆(热/甜)</td>
<td> </td>
</tr>
</table>
</div>
<hr/>
<div>
<table>
<tr>
<td>支付宝花呗一元早餐</td>
<td>1</td>
<td>-3.00</td>
</tr>
<tr>
<td>合计</td>
<td> </td>
<td>4.00</td>
</tr>
<tr>
<td>支付宝</td>
<td> </td>
<td>1.00</td>
</tr>
<tr>
<td>支付宝补贴</td>
<td> </td>
<td>3.00</td>
</tr>
</table>
</div>
<hr/>
<div>打印时间:2018-04-17 07:24:23</div>
<hr/>
<div>
根据相关税法规定,电子发票的开票日期同网上申请电子发票的日期,
如您需要当日的电子发票请务必在消费当日通过扫描下方二维码,根据指引
步骤开具您的增值税电子普通发票。此二维码30天内有效,扫描时请保持
小票平整。
</div>
<div>
<img src=""/><!-- 向网页中插入一张图片 -->
</div>
<div>官网:www.yonghe.com.cn</div>
<div>
加盟热线:86-21-60769397
或 86-21-60769002
</div>
</body>
</html>
2 CSS样式表
2.1 概述
2.2 如何使用
2.2.1 Html网页中内嵌css代码
<!DOCTYPE html>
<html><!-- 指定文件是一个网页文件 -->
<head><!-- 网页的头部分 -->
<meta charset="UTF-8"><!-- 指定编码格式 -->
<title>永和大王</title><!-- 指定网页的标题 -->
<!-- css代码修饰网页效果 -->
<style>
body{
font-size:8px;/*设置字体大小*/
width:260px;/*设置网页宽度*/
margin:5px;/*设置内容和边框的距离*/
}
.please{
font-size:28px;
}
.me{
padding-left:60px;/*设置字和左边的距离*/
}
.note{
text-indent:20px;/*设置首行缩进*/
padding-top:15px;/*保持上边距5px*/
padding-bottom:15px;/*保持下边距5px*/
}
</style>
</head>
<body><!-- 网页的体部分 -->
<div>顾客联</div>
<div class="please">请您留意取餐账单号</div>
<div class="me">自取顾客联</div>
<div>永和大王(北三环西路店)</div>
<div>010-62112313</div>
<div class="me">--结账单--</div>
<div class="please">账单号:P000009</div>
<div>账单类型:堂食</div>
<div>人数:1</div>
<div>收银员:张静</div>
<div>开单时间:2018-04-17 07:24:11</div>
<div>结账时间:2018-04-17 07:24:22</div>
<hr style="border:1px dashed;"/>
<div>
<table><!-- 向网页中插入一个表格 -->
<tr><!-- 表示表格中的行元素 -->
<td>数量</td><!-- 表格中的列元素 -->
<td>品项</td>
<td>金额</td>
</tr>
<tr>
<td>1</td>
<td>豆浆油条套餐</td>
<td>7.00</td>
</tr>
<tr>
<td> </td>
<td>1 X --非矾油条</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>1 X --现磨豆浆(热/甜)</td>
<td> </td>
</tr>
</table>
</div>
<hr style="border:1px dashed;"/>
<div>
<table>
<tr>
<td width="170">支付宝花呗一元早餐</td>
<td width="30">1</td>
<td>-3.00</td>
</tr>
<tr>
<td>合计</td>
<td> </td>
<td>4.00</td>
</tr>
<tr>
<td>支付宝</td>
<td> </td>
<td>1.00</td>
</tr>
<tr>
<td>支付宝补贴</td>
<td> </td>
<td>3.00</td>
</tr>
</table>
</div>
<hr style="border:1px dashed;"/>
<div>打印时间:2018-04-17 07:24:23</div>
<hr style="border:1px dashed;"/>
<div class="note">
根据相关税法规定,电子发票的开票日期同网上申请电子发票的日期,
如您需要当日的电子发票请务必在消费当日通过扫描下方二维码,根据指引
步骤开具您的增值税电子普通发票。此二维码30天内有效,扫描时请保持
小票平整。
</div>
<div>
<img src=""/><!-- 向网页中插入一张图片 -->
</div>
<div>官网:www.yonghe.com.cn</div>
<div>
加盟热线:86-21-60769397
或 86-21-60769002
</div>
</body>
</html>
2.2.2 Css代码提取到base.css文件里
body {
font-size: 8px; /*设置字体大小*/
width: 260px; /*设置网页宽度*/
margin: 5px; /*设置内容和边框的距离*/
}
.please {
font-size: 28px;
}
.me {
padding-left: 60px; /*设置字和左边的距离*/
}
.note {
text-indent: 20px; /*设置首行缩进*/
padding-top: 15px; /*保持上边距5px*/
padding-bottom: 15px; /*保持下边距5px*/
}
2.2.3 网页中引入外部的css文件
<!DOCTYPE html>
<html><!-- 指定文件是一个网页文件 -->
<head><!-- 网页的头部分 -->
<meta charset="UTF-8"><!-- 指定编码格式 -->
<title>永和大王</title><!-- 指定网页的标题 -->
<!-- css代码修饰网页效果 -->
<!-- 引入外部的css文件
rel 指定要引入的文件类型
href 指定引入文件的路径(存放的位置)
-->
<link rel="stylesheet" href="base.css"/>
</head>
<body><!-- 网页的体部分 -->
<div>顾客联</div>
<div class="please">请您留意取餐账单号</div>
<div class="me">自取顾客联</div>
<div>永和大王(北三环西路店)</div>
<div>010-62112313</div>
<div class="me">--结账单--</div>
<div class="please">账单号:P000009</div>
<div>账单类型:堂食</div>
<div>人数:1</div>
<div>收银员:张静</div>
<div>开单时间:2018-04-17 07:24:11</div>
<div>结账时间:2018-04-17 07:24:22</div>
<hr style="border:1px dashed;"/>
<div>
<table><!-- 向网页中插入一个表格 -->
<tr><!-- 表示表格中的行元素 -->
<td>数量</td><!-- 表格中的列元素 -->
<td>品项</td>
<td>金额</td>
</tr>
<tr>
<td>1</td>
<td>豆浆油条套餐</td>
<td>7.00</td>
</tr>
<tr>
<td> </td>
<td>1 X --非矾油条</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>1 X --现磨豆浆(热/甜)</td>
<td> </td>
</tr>
</table>
</div>
<hr style="border:1px dashed;"/>
<div>
<table>
<tr>
<td width="130">支付宝花呗一元早餐</td>
<td width="20">1</td>
<td>-3.00</td>
</tr>
<tr>
<td>合计</td>
<td> </td>
<td>4.00</td>
</tr>
<tr>
<td>支付宝</td>
<td> </td>
<td>1.00</td>
</tr>
<tr>
<td>支付宝补贴</td>
<td> </td>
<td>3.00</td>
</tr>
</table>
</div>
<hr style="border:1px dashed;"/>
<div>打印时间:2018-04-17 07:24:23</div>
<hr style="border:1px dashed;"/>
<div class="note">
根据相关税法规定,电子发票的开票日期同网上申请电子发票的日期,
如您需要当日的电子发票请务必在消费当日通过扫描下方二维码,根据指引
步骤开具您的增值税电子普通发票。此二维码30天内有效,扫描时请保持
小票平整。
</div>
<div>
<img src=""/><!-- 向网页中插入一张图片 -->
</div>
<div>官网:www.yonghe.com.cn</div>
<div>
加盟热线:86-21-60769397
或 86-21-60769002
</div>
</body>
</html>
3 创建二维码
3.1 导入jar包


3.2 创建QR类
3.3 创建create方法
package cn.tedu.qr;
import org.junit.Test;
/*
* 这个类用来创建二维码
*/
public class QR {
//创建单元测试的方法create
@Test//选中方法名,右键,run as,junit test
public void create(){
//指定二维码图片的宽度
int width=150;
//指定二维码图片的高度
int height=150;
//指定二维码图片的内容
String content="www.baidu.com";
//指定二维码图片的存放位置
String path = "e:\\qr.png";
//调用Google的方法,用来产生二维码
CreateQR.create(
width,
height,
content,
path);
//打印
System.out.println("二维码生成成功!!");
}
}
3.4 产生了二维码的图片
把指定路径下产生的二维码图片,复制到项目中。
放在WebContent/qr.png。
3.5 改造order.html
<!DOCTYPE html>
<html><!-- 指定文件是一个网页文件 -->
<head><!-- 网页的头部分 -->
<meta charset="UTF-8"><!-- 指定编码格式 -->
<title>永和大王</title><!-- 指定网页的标题 -->
<!-- css代码修饰网页效果 -->
<!-- 引入外部的css文件
rel 指定要引入的文件类型
href 指定引入文件的路径(存放的位置)
-->
<link rel="stylesheet" href="base.css"/>
</head>
<body><!-- 网页的体部分 -->
<div>顾客联</div>
<div class="please">请您留意取餐账单号</div>
<div class="me">自取顾客联</div>
<div>永和大王(北三环西路店)</div>
<div>010-62112313</div>
<div class="me">--结账单--</div>
<div class="please">账单号:P000009</div>
<div>账单类型:堂食</div>
<div>人数:1</div>
<div>收银员:张静</div>
<div>开单时间:2018-04-17 07:24:11</div>
<div>结账时间:2018-04-17 07:24:22</div>
<hr style="border:1px dashed;"/>
<div>
<table><!-- 向网页中插入一个表格 -->
<tr><!-- 表示表格中的行元素 -->
<td>数量</td><!-- 表格中的列元素 -->
<td>品项</td>
<td>金额</td>
</tr>
<tr>
<td>1</td>
<td>豆浆油条套餐</td>
<td>7.00</td>
</tr>
<tr>
<td> </td>
<td>1 X --非矾油条</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>1 X --现磨豆浆(热/甜)</td>
<td> </td>
</tr>
</table>
</div>
<hr style="border:1px dashed;"/>
<div>
<table>
<tr>
<td width="130">支付宝花呗一元早餐</td>
<td width="20">1</td>
<td>-3.00</td>
</tr>
<tr>
<td>合计</td>
<td> </td>
<td>4.00</td>
</tr>
<tr>
<td>支付宝</td>
<td> </td>
<td>1.00</td>
</tr>
<tr>
<td>支付宝补贴</td>
<td> </td>
<td>3.00</td>
</tr>
</table>
</div>
<hr style="border:1px dashed;"/>
<div>打印时间:2018-04-17 07:24:23</div>
<hr style="border:1px dashed;"/>
<div class="note">
根据相关税法规定,电子发票的开票日期同网上申请电子发票的日期,
如您需要当日的电子发票请务必在消费当日通过扫描下方二维码,根据指引
步骤开具您的增值税电子普通发票。此二维码30天内有效,扫描时请保持
小票平整。
</div>
<div class="qrimg">
<img src="qr.png"/><!-- 向网页中插入一张图片 -->
</div>
<div>官网:www.yonghe.com.cn</div>
<div>
加盟热线:86-21-60769397
或 86-21-60769002
</div>
</body>
</html>
3.6 改造base.css
body {
font-size: 8px; /*设置字体大小*/
width: 260px; /*设置网页宽度*/
margin: 5px; /*设置内容和边框的距离*/
}
.please {
font-size: 28px;
}
.me {
padding-left: 60px; /*设置字和左边的距离*/
}
.note {
text-indent: 20px; /*设置首行缩进*/
padding-top: 15px; /*保持上边距5px*/
padding-bottom: 15px; /*保持下边距5px*/
}
.qrimg{
text-align:center;/*设置图片居中*/
}
3.7 效果

4 Eclipse中配置tomcat
4.1 Eclipse配置tomcat插件


4.2 展示server窗口


4.3 发布项目到tomcat服务器

4.4 启动服务器
4.5 关闭服务器

4.6 测试
5 Eclipse中配置jdk



day03
动态技术J2ee Servlet+JSP
-
静态页面技术HTML
<!DOCTYPE html> 标识这个文件是一个HTML文件
<html> 标识一个html文件内容开始
<head> 头信息,
<meta charset="UTF-8"> 告诉浏览器我的编码utf-8
<link rel="stylesheet" href="css/base.css"> 链接样式表
<title>永和大王门店管理信息系统</title> 在浏览器上显示的标题
</head> 头信息结束
<body> 业务的内容
<div>顾客联</div> 块
<div class="please">请您留意取餐账单号</div> 在div属性中加入class属性,这样要在css文件中去定义这样一个样式,.please{},然后加载样式表后div就被渲染
<div class="me">自取顾客联</div>
<div>永和大王(北三环西路店)</div>
<div>010-62112313</div>
<div class="me">--结账单--</div> 样式表定义一个样式,多处使用,如果需要变化,修改一处即可。复用!
<div class="please">账单号:P000021</div>
<div>账单类型:堂食</div>
<div>人数:1</div>
<div>收银员:朱晓侠</div>
<div>开单时间:2018-04-27 07:36:05</div>
<div>结账时间:2018-04-27 07:38:11</div>
<hr class="line"> hr是一根直线,线型:直线、虚线、点线
css规范中都有相应名称
直线solid,虚线dashed
<div>
<table> 表格的开始
<tr> 一行
<td width="40">数量</td> 一列,style=”width:40px;”
在html规范中字符串表达,支持双引号也支持单引号
表格中某个td设置宽度后,其他对应这列的td的宽度会随着改变
<td width="170">品项</td>
<td width="40" align="right">金额</td> align水平方向对齐left/center/right
</tr>
<tr>
<td valign="top">4</td> align水平对齐,valign垂直方向对齐top/center/bottom
<td>
香菇菜包套餐-ECS<br/> <br><br/>后面的标准,换行在txt中就是换行\r \n不可见字符,HTML都是可见的
4 X --香菇菜包<br/>
4 X --现磨豆浆(热/无糖)
</td>
<td valign="top" align="right">28.00</td>
设置水平对齐和垂直对齐这只对当前的单元格起作用!
</tr>
<tr>
<td>2</td>
<td>
非矾油条
</td>
<td align="right">10.00</td>
</tr>
<tr>
<td>2</td>
<td>
鲜肉小馄饨
</td>
<td align="right">20.00</td>
</tr>
</table>
<hr class="line">
<table>
<tr>
<td width="40">
合计
</td>
<td width="170"></td>
<td width="40" align="right">56.00</td>
</tr>
<tr>
<td>
微支付
</td>
<td></td>
<td align="right">58.00</td>
</tr>
</table>
</div>
<hr class="line">
<div>打印时间:2018-04-27 07:38:12</div>
<hr class="line">
<div class="note"> 根据相关税法规定,电子发票的开票日期同网上申请电子发票的日期,如您需要当日的电子发票请务必在消费当日通过扫描下方二维码,根据指引步骤开具您的增值税电子普通发票。此二维码30天有效,扫描时请保持小票平整。</div>
特殊字符在html中需要单独标识,如果在html有多个空格,html解析时把多的空格就删除了。特殊字符转换,空格转换 ,转换的字符&作为开始;分号作为结束
<img class="qrimg" src="img/qr.png"> src执向图片文件
<img></img><img/>
<div>官网:www.yonghe.com.cn</div>
<div>加盟热线:86-21-60769397 或 86-21-60769002</div>
</body>
</html> html文件内容的结束位置
Table标签和div差异
-
早期系统table布局,自适应;现今使用div+css布局,样式更加灵活,美观
-
T able布局造成页面加载时,如果这个table很大,只有读取到table的结束标签之后,浏览器才会把这部分展现。短暂白屏,才会全部展现。
-
D iv出现后,div结束的标签浏览器就会直接展现。

-
(系统有一个全局的样式表)全局的标准标签body,table,tr
-
(用的最多)在页面的标签上class= ” me ” ,在样式表中.me{},局部修饰,可以多次调用,重用/复用
-
(form表单使用)在页面的标签上id= ” me ” ,在样式表中#{},局部修饰,至少在这个页面中应该保证使用一次 二维码
3.二维码
-
图片高度和宽度
-
生成图片路径
-
调用谷歌第三方jar,有两个jar包:放在WebContent/WEB-INF/lib
-
main函数,public static void main (String[] args){},在main还有static,运行java application
-
@Test junit单元测试,运行Junit Test,在一个类中可以写多个@Test
-
问人,问同事,问技术好
-
百度,推荐demo,如果技术难度比较大,不做读百文多看评论CSDN
-
官网,规范,严谨; 不好的地方,写文档的人还不如普通的开发者!
-
书,太多垃圾,断片;看补足底蕴。会讲很多理论。
-
动态技术J2ee Servlet+JSP
-
jdk,怎么给我们的项目指定jdk?
-
最新技术
-
最稳定、安全的技术(企业最喜欢)








-
有一个单独的窗口来管理Servers
-
主流tomcat7怎么配置它,要增加到eclipse
-
把tomcat7和项目yh绑定,运行Servlet就放在指定tomcat中运行






-
保证你有一个绿色解压版的Jdk
-
解压到硬盘D:\java\env\ D:\java\env\jdk1.7.0_72
-
把jdk和eclipse关联起来
-
把配置的jdk和项目关联起来
-
把绿色解压版解压 apache-tomcat-7.0.59
-
把tomcat和eclipse关联

-
Servlet2.3,SpringMVC Controller
-
Servlet3.0 注解方式(京淘)@Web …
-
利用eclipse创建Servlet


-
编译错误,保存文件时,自动去进行编译
-
运行时错误,运行时访问、调用才出错







-
准备数据(准备店名)
-
在jsp中获取并展现这个信息
-
H tml 纯静态,不可改变
-
S ervlet 后台运行,访问数据库获取数据
-
J sp 负责展现,把html都拿过来,然后加动态支持el表达式(${name})
-
HTML静态网页,通过很多预定义标签<html><body><div>,展示了一个网页,和txt纯文本?txt是只是数据没有修饰,静态网页,可以通过标签+css样式修饰实现页面更加美好,txt不支持图片,HTML图文并茂
-
HTML缺点,一旦写死就不能变化。出现动态页面技术纯Servlet,里面使用的java语句。
-
Servlet它要加html标签,代码太混乱,工作量大,重复代码。出现jsp技术
-
J sp页面全部包容html标签,额外增加了一些el表达式${doorName}
-
jdk安装版1.8

-
再安装一个jdk1.9
-
再安装一个tomcat8
-
写一个servlet3.0
-
写一个order.jsp
-
把html和servlet+jsp请求过程画图
day04
知识回顾:
-
J dk 一台机器上可以安装多个版本的jdk。企业中有很多项目,旧的项目需要维护jdk1.6;开发新的项目jdk1.7。配置eclipse指定jdk。项目在开发时就会使用我们指定版本。
2.Tomcat web中间件,支持servlet和jsp的运行环境。
3.Servlet
4.Jsp
-
数据库,主流数据库mycat+mysql免费(开源),Oracle(性能最好的,收费),sqlServer(最好用好,性能,安全性都一般,闭源)
-
M ysql基础操作,CRUD,信息维护,增删改查
-
数据存储的地方,数据库
-
有mysql数据库程序服务端
-
创建一个数据库store-yhmis,乱码utf-8
-
创建一张表tb_door(设计习惯tb_前缀),创建时指定字段,类型,长度,主键
-
新增数据Insert
-
修改数据(修改电话)Update
-
信息无用,删除 Delete
-
查询 Select

-
exit; 退出mysql数据库环境
-
mysql中有哪些数据库?


-
创建数据库
2.查询mysql中所有的数据库
3.打开指定数据库
4.创建数据库表
5.插入数据
6.查询数据
-
备份数据,测试库
-
写update SQL时先写where条件


常见问题:
-
端口号,安装时配置,别人要告诉你(系统管理员)
-
M ysql服务没有启动

-
删除数据库








-
why?为什么需要数据库?
2.概念:
3.数据库database

4.表table,一个数据库中隔离业务
5.主键+自增
6.常规操作
day05
知识回顾:
-
数据库,因为数据方便存储,通过SQL结构化查询语言Struction Query Lanuage。不光完成数据维护(新增、修改、删除),查询(统计查询)
-
关系型数据库Oracle、 MySQL 、SqlServer,非关系型数据库no sql Redis (key,value)KV数据,mongodb(json带格式的一个字符串 {abc}),hbase(列式存储)
-
概念:
3.基础的SQL语句
5.使用客户端sqlyog
-
表设计,在概要设计时就开始表设计,在详细设计中继续细化,在详细设计完成,表设计就完全完成了。在实际开发中也会局部修改。
-
表名tb_door,字段们id,door_name,tel,字段类型,长度
-
实现建表SQL语句
-
PowerDesigner15.1汉化破解版.rar






-
导入jar

-
有两次数据库访问
-
大量的代码重复
-
创建Door对象,有两个属性doorName,tel,一次数据库访问
-
可以分别设置doorName和tel。setDoorName,setTel,对象就能保存两个值
-
可以从Door对象中获取 getDoorName,getTel
-
它有属性字段
-
每个属性有set方法
-
每个属性有get方法

-
不能多次访问数据库,合并一次
-
方法要返回多个值
-
多个属性值 private Integer id/private String doorName/private String tel
-
设置这个属性值,通过给每个属性设置set方法
-
S ervlet中获取这个值,给每个属性增加一个get方法


-
PD powerdesinger设计工具,主要用来表设计

-
程序就要从数据库中获取数据
-
在servlet中增加一个获取数据库的方法
2.改造优化下
-
多个属性,private修饰符
-
对应每个属性设置方法setXxx
-
对应每个属性获取方法getXxx
day06
-
按部就班一步一步踏实脚印走(太多啰嗦地方)java面向对象,封装,继承,多态
-
另辟蹊径(拔苗助长,我还不会走,老师就让我跑)
我们学员
|
资深的技术人员:项目经理,技术经理,架构师,技术副总
|
弱项:java基础、javaWeb、3大框架
(面试技巧,最重要是表现自己好学和渴望进入这家公司态度)
|
强项:
J
ava1991年17年了,市场上企业中有大把java程序员,在企业中通过非常多的项目来真实锤炼,周期3-20年。真实企业环境。
|
在培优课程中优势:
D
ocker容器化,1s启动一个服务,瞬间达到百万级别(阿里双11,2017,2018都是运行在docker之上)
N
ginx+redis(x)+mycat
R
abbitmq+docker+dubbo
J
soup 爬虫,薪资9k+
L
ucene+solr/es 10K+全文检索工程师,自己百度
2)大数据项目
H
adoop,HDFS,flume,hive,storm,zookeeper,kafka
真实项目网络流量日志分析PV,UV,VV
|
弱项:在工作中接触的技术的面小!越大公司越窄。跳槽!
对新技术消化能力差,(为了现有系统稳定,不可能直接把新的技术引入)但是它渴望,企业渴望!
技术变化非常快!它虽然很难实质推动企业技术变更,但是他希望有人来做这个事情,
大多企业:
大型,互联网架构+大数据
中型,dubbo互联网架构+ssm(springmvc+spring+mybatis)三大框架
小型,ssh(struts2+spring+hibernate)
|

-
基础变量int,double,long,char,b oo l ean
-
对象变量 Integer,Double,Long,String,Boolean

-
大量重复代码
-
数据库进行多次链接
-
pojo对象,因为这个做后,可以支持返回多个值
-
查询数据库就合成了一个方法(一次查询),
-
返回值就变成pojo,代码怎么设置pojo? Door door = new Door();利用pojo对象每个属性的set方法去设置即可
-
需要属性怎么获取,就利用pojo的get方法获取。


-
原始界面中逐字分析
-
把信息分成几类:静态内容和动态的内容。把静态内容就排除在外。
-
怎么把信息拆到不同的数据库表中



-
引入jar
2.Jsp中先引入taglib
3.在Jsp引入 c:forEach
-
修改pojo返回参数类型String printTime;
-
和数据库进行查询,查询3次,查询出某个订单,通过这个订单获取door_id,通过door_id获取它门店对象信息,然后在通过订单orderId去找所属的订单详情的一个集合List集合。
-
数据库查询后的返回值
day07
知识回顾:
-
体现面向对象
-
从数据库查询数据,放到pojo对象中
2.把pojo传递给jsp
3.在jsp中以el表达式,jstl标签库(更复杂)展现
-
一对一,单个对象
-
一对多,多个对象关联
-
门店,订单,订单详情;学校,班级,学生
-
日期处理
-
合计
永和门店系统开发过程:
-
需求调研《需求说明书》
-
设计阶段,概要设计《概要设计说明书》,继续细化《详细设计说明书》,PowerDesinger表设计
-
开发,编码,调试(最耗时)
-
测试
-
维护
-
表设计


2.开发

-
利用表设计创建数据库和表,录入测试数据(正规)
-
先创建pojo对象,Door,OrderDetail,Order
3.创建OrderServlet,使用jdbc访问数据库,把数据封装到pojo对象中(pojo传递数据)
4.创建jsp页面,直接使用美工给的样式表,在页面中通过el表达式来获取数据
5.对日期和c:forEach循环标签来实现日期和合计特殊处理
6.测试,访问servlet,获取数据后转向jsp,最终在浏览器上展现

-
数据库mysql支持包
-
二维码2个文件,j2se,core
-
jstl.jar
爬虫比价器
培优 陈子枢- 1920-9520-78
爬虫比价器
-
第一天:爬取新闻网站
-
比价器系统
-
比价系统功能
-
-
-
利用Jsoup爬取每个页面的商品信息
-
ECharts柱状图、曲线图
-
用户输入查询条件
-
分别到每个电商网站访问,利用其查询出它们网站的对应商品
-
获取其列表页面中第一个商品的链接
-
利用jsoup爬取每个页面的商品信息
-
把商品信息入库并设置爬取时间
-
使用ECharts进行进行价格的比较
-
拓展:ECharts实现抓取价格柱状图、饼形图、曲线图
2.涉及的技术点
-
JavaScript
2.json
3.HttpClient
4.Jsoup
3.爬虫新闻
5.Httpclient
package test;
import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.junit.Test;
public class TestPrice {
@Test
public void taobaoItemPrice() throws IOException{
String itemId = "560563554738";
String url = "http://mdskip.taobao.com/core/initItemDetail.htm?isRegionLevel=true&itemTags=385,775,843,1035,1163,1227,1478,1483,1539,1611,1863,1867,1923,2049,2059,2242,2251,2315,2507,2635,3595,3974,4166,4299,4555,4811,5259,5323,5515,6145,6785,7809,9153,11265,12353,12609,13697,13953,16321,16513,17473,17537,17665,17857,18945,19841,20289,21762,21826,25922,28802,53954&tgTag=false&addressLevel=4&isAreaSell=false&sellerPreview=false&offlineShop=false&showShopProm=false&isIFC=false&service3C=true&isSecKill=false&isForbidBuyItem=false&cartEnable=true&sellerUserTag=839979040&queryMemberRight=true&itemId="+itemId+"&sellerUserTag2=306250462070310924&household=false&isApparel=false¬AllowOriginPrice=false&tmallBuySupport=true&sellerUserTag3=144467169269284992&sellerUserTag4=1152930305168967075&progressiveSupport=true&isUseInventoryCenter=false&tryBeforeBuy=false&callback=setMdskip×tamp=1420351892310";
HttpClientBuilder builder = HttpClients.custom();
builder.setUserAgent("Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:0.9.4)");
CloseableHttpClient httpClient = builder.build();
final HttpGet httpGet = new HttpGet(url);
httpGet.addHeader("Referer", "http://detail.tmall.com/item.htm?id="+itemId+"&skuId=68347779144&areaId=110000&cat_id=50024400&rn=763d147479ecdc17c2632a4219ce96b3&standard=1&user_id=263726286&is_b=1");
CloseableHttpResponse response = null;
response = httpClient.execute(httpGet);
final HttpEntity entity = response.getEntity();
String result = null;
if (entity != null) {
result = EntityUtils.toString(entity);
EntityUtils.consume(entity);
}
//商品价格的返回值,需要解析出来价格
result = result.substring(10, result.length()-1);
}
}
6.Jsoup
package test;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.junit.Test;
public class TestNew {
@Test
public void site() throws IOException{
String url = "http://ent.qq.com/a/20171117/007399.htm";
String html = Jsoup.connect(url).execute().body();
System.out.println(html);
}
@Test
public void title() throws IOException{
String url = "http://ent.qq.com/a/20171117/007399.htm";
Document doc = Jsoup.connect(url).get();
Elements els = doc.select(".hd h1");
Element ele = els.get(0);
String title = ele.text();
System.out.println(title);
}
@Test
public void img() throws IOException{
String url = "http://ent.qq.com/a/20171117/007399.htm";
String imageUrl = Jsoup.connect(url).get()
.select(".Cnt-Main-Article-QQ p img")
.get(0)
.attr("src");
System.out.println(imageUrl);
}
}
7.抓取价格 – json
@Test //价格
public void getItemPrice() throws IOException{
String url = "http://p.3.cn/prices/mgets?skuIds=J_3882469";
String json = Jsoup.connect(url).ignoreContentType(true).execute().body();
JsonNode jsonNode = MAPPER.readTree(json);
//解析完数组,获取数组第一条数据,获取它的p元素值
Double price = jsonNode.get(0).get("p").asDouble();
log.debug(price);
}
8.抓取描述 - jsonp
@Test //商品描述
public void getItemDesc() throws IOException{
String url = "http://d.3.cn/desc/3882469";
String jsonp = Jsoup.connect(url).ignoreContentType(true).execute().body();
String json = jsonp.substring(9, jsonp.length()-1); //把函数名去掉
JsonNode jsonNode = MAPPER.readTree(json);
String desc = jsonNode.get("content").asText();
log.debug(desc);
}
2.第二天:爬取京东商城
4.抓取的五种方式
9.抓取页面
@Test //抓整个页面
public void html() throws IOException{
String url = "http://tech.qq.com/a/20170330/003855.htm";
//doc代表一个页面
String html = Jsoup.connect(url).execute().body();
System.out.println(html);
}
10.抓取整个网站
@Test //抓整站,找到所有a链接,然后进行广度优先/深度优先进行遍历
public void getAllATag() throws IOException{
String url = "http://tech.qq.com/a/20170330/003855.htm";
//获取到页面
Document doc = Jsoup.connect(url).get();
//获取到页面中的所有a标签
Elements eles = doc.getElementsByTag("a");
for(Element ele : eles){
String title = ele.text(); //获取a标签的内容
String aurl = ele.attr("href"); //获取a标签的属性
log.debug(title+" - "+aurl);
}
}
11.抓取标题 - 页面上的内容
@Test //京东商城,商品标题
public void getItemTile() throws IOException{
String url = "https://item.jd.com/3882469.html";
Document doc = Jsoup.connect(url).get();
Element ele = doc.select(".itemInfo-wrap .sku-name").get(0);
String title = ele.text();
log.debug(title);
}
@Test //当当商城,商品标题
public void getDDItemTile() throws IOException{
String url = "http://product.dangdang.com/1052875306.html";
Document doc = Jsoup.connect(url).get();
Element ele = doc.select("article").get(0);
String title = ele.text();
log.debug(title);
}
12.抓取价格 – json
@Test //价格
public void getItemPrice() throws IOException{
String url = "http://p.3.cn/prices/mgets?skuIds=J_3882469";
String json = Jsoup.connect(url).ignoreContentType(true).execute().body();
JsonNode jsonNode = MAPPER.readTree(json);
//解析完数组,获取数组第一条数据,获取它的p元素值
Double price = jsonNode.get(0).get("p").asDouble();
log.debug(price);
}
13.抓取描述 - jsonp
@Test //商品描述
public void getItemDesc() throws IOException{
String url = "http://d.3.cn/desc/3882469";
String jsonp = Jsoup.connect(url).ignoreContentType(true).execute().body();
String json = jsonp.substring(9, jsonp.length()-1); //把函数名去掉
JsonNode jsonNode = MAPPER.readTree(json);
String desc = jsonNode.get("content").asText();
log.debug(desc);
}
5.爬取京东
14.抓取商品分类
@Test //抓取商品分类(22,143,1286),http://www.jd.com/allSort.aspx
public void itemCat() throws IOException{
String url = "http://www.jd.com/allSort.aspx";
Document doc = Jsoup.connect(url).get();
Elements level1 = doc.select("h2 span");
log.info("大类总数:"+level1.size());
for(Element ele : level1){
log.info(ele.text());
}
Elements level2 = doc.select("dl dt a");
log.info("二级分类总数:"+level2.size());
for(Element ele : level2){
log.info(ele.text());
}
Elements level3 = doc.select("dl dd a");
log.info("三级分类总数:"+level3.size());
for(Element ele : level3){
log.info(ele.text()+" "+ele.attr("href"));
}
}
@Test //抓取某个分类下的商品数
public void itemCatCountOne() throws IOException{
String url = "http://list.jd.com/list.html?cat=9987,653,655";
Document doc = Jsoup.connect(url).get();
Elements ele = doc.select(".st-ext span");
log.info(ele.text());
}
@Test //抓取商品分类下商品的数量,去除特殊链接
public void itemCatCount() throws IOException{
Integer total = 0;
String url = "http://www.jd.com/allSort.aspx";
Document doc = Jsoup.connect(url).get();
Elements level3 = doc.select("dl dd a");
log.info("三级分类总数:"+level3.size());
for(Element ele : level3){
log.info(ele.text()+" "+ele.attr("href"));
String urlList = "http:"+ele.attr("href");
if(urlList.indexOf("?cat=")>0){ //有多种链接,只有含有cat才是商品列表页面
Document listDoc = Jsoup.connect(urlList).get();
Elements eleCount = listDoc.select(".st-ext span");
Integer catCount = 0;
try{
catCount = Integer.valueOf(eleCount.text());
}catch(Exception e){
catCount = 0;
}
total += catCount;
Elements elePages = listDoc.select("#J_topPage span.fp-text i");
Integer pages = 0;
try{
pages = Integer.valueOf(elePages.text());
}catch(Exception e){
pages = 0;
}
log.info(ele.text()+" 商品数:"+catCount+" 页数:"+pages);
}
}
log.info("总商品数量:"+total);
}
15.商品列表页面抓取商品编号
@Test //获取商品详细信息
public void getItemInfo() throws IOException{
String itemId = "1411013";
String url = "http://item.jd.com/"+itemId+".html";
Document doc = Jsoup.connect(url).get();
String title = doc.select(".sku-name").get(0).text();
log.info("标题:"+title);
Elements eleImages = doc.select("div#spec-list li img");
String[] images = new String[eleImages.size()];
for(int i=0;i<eleImages.size();i++){
images[i] = eleImages.get(i).attr("src");
log.info("链接图片["+i+"]:" + images[i]);
}
}
16.抓取商品价格
[{"id":"J_1411013","p":"3888.00","m":"6699.00"},{"id":"J_1411014","p":"569.00","m":"1398.00"}]
17.抓取商品卖点
[{"ad":"\u53CC\u66F2\u9762\u4FA7\u5C4F\uFF0C\u91D1\u5C5E\u4E0E\u73BB\u7483\u5DE7\u5999\u878D\u5408\uFF0C\u81EA\u52A8\u8FFD\u7126\uFF0C\u667A\u80FD\u9065\u63A7\u5668\u652F\u6301\u7EA2\u5916\u9065\u63A7\u529F\u80FD\uFF01\u003C\u0061\u0020\u0020\u0074\u0061\u0072\u0067\u0065\u0074\u003D\u0022\u005F\u0062\u006C\u0061\u006E\u006B\u0022\u0020\u0020\u0068\u0072\u0065\u0066\u003D\u0022\u0068\u0074\u0074\u0070\u003A\u002F\u002F\u0073\u0061\u006C\u0065\u002E\u006A\u0064\u002E\u0063\u006F\u006D\u002F\u0061\u0063\u0074\u002F\u006F\u004C\u005A\u0052\u006C\u0057\u007A\u004D\u0070\u0049\u002E\u0068\u0074\u006D\u006C\u0022\u003E\u9886\u5238\u51CF\u94B1\uFF0C\u4E0B\u5355\u8FD4\u73B0\u003C\u002F\u0061\u003E","id":"AD_1411013"},{"ad":"\u62C9\u6746\u7BB1\u3001\u4E66\u5305\u3001\u53CC\u80A9\u5305\u7B49\u591A\u79CD\u5546\u54C1\u9886\u5238\u6EE1\u0039\u0039\u51CF\u0032\u0030\u3001\u6EE1\u0033\u0039\u0039\u51CF\u0038\u0030\u003C\u0061\u0020\u0068\u0072\u0065\u0066\u003D\u0027\u0068\u0074\u0074\u0070\u003A\u002F\u002F\u0073\u0061\u006C\u0065\u002E\u006A\u0064\u002E\u0063\u006F\u006D\u002F\u0061\u0063\u0074\u002F\u006F\u0057\u0073\u007A\u0055\u0033\u006E\u0032\u0059\u0070\u006D\u0074\u0044\u002E\u0068\u0074\u006D\u006C\u0027\u0020\u0074\u0061\u0072\u0067\u0065\u0074\u003D\u0027\u005F\u0062\u006C\u0061\u006E\u006B\u0027\u003E\u5F00\u5B66\u4E0D\u5C06\u201C\u65E7\u201D\uFF0C\u9886\u5238\u4EAB\u6EE1\u51CF\uFF01\uFF01\u901F\u901F\u62A2\u8D2D\u5427\u007E\u003C\u002F\u0061\u003E","id":"AD_1411014"}]
18.抓取商品描述
showdesc({"date":1469167322294,"content":"<div style=\"text-align: center;\"><img data-lazyload=\"//img30.360buyimg.com/jgsq-productsoa/jfs/t2767/259/3526014654/1592287/78020f87/5791889cN81b6b7f9.jpg\" alt=\"\" /><br /></div><div style=\"text-align: center;\"><img data-lazyload=\"//img30.360buyimg.com/jgsq-productsoa/jfs/t2386/186/1517820110/681125/d98ab4ac/56b1b1a3N229b52dc.jpg\" style=\"widows: auto;\" alt=\"\" /><br /></div><br/>"})
3.第三天:爬取商品价格+报表eCharts
eCharts
6.eCharts
19.饼形图

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ECharts</title>
<!-- 引入 echarts.js -->
<script type="text/javascript" src="js/echarts-all.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
var json = [
{value:30,name:'高圆圆'},
{value:26,name:'赵丽颖'},
{value:24,name:'关晓彤'}
];
// 指定图表的配置项和数据
var option = {
title: {
text: 'ECharts 入门示例'
},
tooltip: {},
legend: {
data:['高圆圆','赵丽颖','关晓彤']
},
series: [{
name: '女神',
type: 'pie',
radius: '55%', //饼形图半径大小
data:json
}]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>
20.柱状图

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ECharts</title>
<!-- 引入 echarts.js -->
<script type="text/javascript" src="js/echarts-all.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
title: {
text: 'ECharts 入门示例'
},
tooltip: {},
legend: {
data:['销量']
},
xAxis: {
data: ["衬衫","羊毛衫","雪纺衫"]
},
yAxis: {},
series : [
{
name:'数量',
type:'bar',
barWidth: 50,
data:[200, 152, 100],
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0, 0, 0, 1,[{offset: 0, color: '#2FDE80'},{offset: 1, color: '#2FDECA'} ]
)
},
emphasis: {
color: new echarts.graphic.LinearGradient(
0, 0, 0, 1,[{offset: 0, color: '#2FDECA'},{offset: 1, color: '#2FDE80'}]
)
}
}
}]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>
21.曲线图

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ECharts</title>
<!-- 引入 echarts.js -->
<script type="text/javascript" src="js/echarts-all.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的dom -->
<div id="main" style="height:400px;width: 600px"></div>
<!-- ECharts单文件引入 -->
<script src="http://echarts.baidu.com/build/dist/echarts-all.js"></script>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts图表
var myChart = echarts.init(document.getElementById("main"));
var option = {
title : {
text: '未来一周气温变化',
subtext: '纯属虚构'
},
tooltip : {
trigger: 'axis'
},
legend: {
data:['最高气温','最低气温']
},
//右上角工具条
toolbox: {
show : true,
feature : {
saveAsImage : {show: true}
}
},
calculable : true,
xAxis : [
{
type : 'category',
boundaryGap : false,
data : ['周一','周二','周三','周四','周五','周六','周日']
}
],
yAxis : [
{
type : 'value',
axisLabel : {
formatter: '{value} °C'
}
}
],
series : [
{
name:'最高气温',
type:'line',
data:[11, 11, 15, 13, 12, 13, 10],
markPoint : {
data : [
{type : 'max', name: '最大值'},
{type : 'min', name: '最小值'}
]
},
markLine : {
data : [
{type : 'average', name: '平均值'}
]
}
},
{
name:'最低气温',
type:'line',
data:[1, -2, 2, 5, 3, 2, 0],
markPoint : {
data : [
{type : 'min', name: '周最低'}
]
},
markLine : {
data : [
{type : 'average', name : '平均值'}
]
}
}
]
};
// 为echarts对象加载数据
myChart.setOption(option);
</script>
</body>
</html>
7.比价器系统
22.京东
[{"id":"J_1411013","p":"3888.00","m":"6699.00"},{"id":"J_1411014","p":"569.00","m":"1398.00"}]
23.淘宝
@Test
public void taobaoItemPrice() throws IOException{
String itemId = "560563554738";
String url = "http://mdskip.taobao.com/core/initItemDetail.htm?isRegionLevel=true&itemTags=385,775,843,1035,1163,1227,1478,1483,1539,1611,1863,1867,1923,2049,2059,2242,2251,2315,2507,2635,3595,3974,4166,4299,4555,4811,5259,5323,5515,6145,6785,7809,9153,11265,12353,12609,13697,13953,16321,16513,17473,17537,17665,17857,18945,19841,20289,21762,21826,25922,28802,53954&tgTag=false&addressLevel=4&isAreaSell=false&sellerPreview=false&offlineShop=false&showShopProm=false&isIFC=false&service3C=true&isSecKill=false&isForbidBuyItem=false&cartEnable=true&sellerUserTag=839979040&queryMemberRight=true&itemId="+itemId+"&sellerUserTag2=306250462070310924&household=false&isApparel=false¬AllowOriginPrice=false&tmallBuySupport=true&sellerUserTag3=144467169269284992&sellerUserTag4=1152930305168967075&progressiveSupport=true&isUseInventoryCenter=false&tryBeforeBuy=false&callback=setMdskip×tamp=1420351892310";
HttpClientBuilder builder = HttpClients.custom();
builder.setUserAgent("Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:0.9.4)");
CloseableHttpClient httpClient = builder.build();
final HttpGet httpGet = new HttpGet(url);
httpGet.addHeader("Referer", "http://detail.tmall.com/item.htm?id="+itemId+"&skuId=68347779144&areaId=110000&cat_id=50024400&rn=763d147479ecdc17c2632a4219ce96b3&standard=1&user_id=263726286&is_b=1");
CloseableHttpResponse response = null;
response = httpClient.execute(httpGet);
final HttpEntity entity = response.getEntity();
String result = null;
if (entity != null) {
result = EntityUtils.toString(entity);
EntityUtils.consume(entity);
}
//商品价格的返回值,需要解析出来价格
result = result.substring(10, result.length()-1);
}
24.苏宁
25.价格比较柱状图
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ECharts</title>
<!-- 引入 echarts.js -->
<script type="text/javascript" src="js/echarts-all.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
title: {
text: '各大电商商品价格比价'
},
tooltip: {},
legend: {
data:['iphoneX 64g']
},
xAxis: {
data: ["京东","淘宝","苏宁"]
},
yAxis: {},
series : [
{
name:'数量',
type:'bar',
barWidth: 50,
data:[8316, 6783, 7788],
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0, 0, 0, 1,[{offset: 0, color: '#2FDE80'},{offset: 1, color: '#2FDECA'} ]
)
},
emphasis: {
color: new echarts.graphic.LinearGradient(
0, 0, 0, 1,[{offset: 0, color: '#2FDECA'},{offset: 1, color: '#2FDE80'}]
)
}
}
}]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>
永和大王数据:
mysql:
tb_door表
id
|
door_name
|
tel
|
1
|
大钟寺北三环店
|
010-47472723
|
2
|
火车南站店
|
010-83838718
|
3
|
永和大王(北三环西路店)
|
010-62112313
|

tb_order表
id
|
door_id
|
order_no
|
order_type
|
persion_num
|
cashier
|
create_time
|
end_time
|
payment_type
|
payment
|
print_time
|
1
|
1
|
P000021
|
食堂
|
5
|
朱晓霞
|
2018-06-05 11:25:07
|
018-06-05 18:38:11
|
微支付
|
58
|
2018-04-27 07:38:11
|

tb_order_detail表:
id
|
order_id
|
num
|
item
|
price
|
1
|
1
|
4
|
香菇菜包套餐-ECS<br/>4X --香菇菜包<br/>4X --现磨豆浆(热/无糖)<br/>
|
28.00
|
2
|
1
|
2
|
非矾油条
|
10.00
|
3
|
1
|
2
|
鲜肉小馄饨
|
20.00
|

没有在WEB-INF\classes中生成class文件




方法二:
作者:Darren