大型运输行业实战_day09_2_站间互售实现
1.添加站间互售入口
对应的html代码
<button onclick="otherStation()">站间互售</button>
对应的js发送函数
function otherStation(){
//进入进入站间互售页面列表
window.location.href="/otherTicket/index";
}
对应的控制层代码:
/**
* 站间互售页面
* @return
*/
@RequestMapping("/index")
public String listPage() {
return "/WEB-INF/views/listOther.jsp";
}
2.站间互售列表页面listOther.jsp代码
站间互售的页面与本站的页面完全一样,其实站间互售的本质与本站售票的逻辑几乎完全一样,唯一的不同是数据来源不同
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<html>
<head>
<title>车票列表</title>
<%--引入jquery--%>
<script type="text/javascript" src="/static/jquery-2.1.3.min.js"></script>
<script type="text/javascript" src="/static/My97DatePicker/WdatePicker.js"></script>
</head>
<body>
<br/>
<button onclick="loginout()">注销</button>
<button onclick="orderDetail()">订单明细</button>
<br/>
<br/>
<div align="center">
开始车站:<input id="startStation" type="text" value="" /> 到
到达车站:<input id="stopStation" type="text" value="" />
<br/>
开始时间:<input id="startTimeMin" onclick="WdatePicker()" value=""/>
结束时间:<input id="startTimeMax" onclick="WdatePicker()" value=""/>
<button onclick="query(5,1)">查询</button> <table id="ticketList" width="50%" border="1" cellspacing="1">
<tr>
<td>编号</td>
<td>开始车站</td>
<td>到达车站</td>
<td>操作</td>
</tr>
<%--模拟假数据--%>
<tr>
<td>1</td>
<td>北京</td>
<td>成都</td>
<td><button>购买</button></td>
</tr>
</table>
<button onclick="firstPage()">首页</button>
<button onclick="upPage()">上页</button>
<button onclick="nextPage()">下页</button>
<button onclick="lastPage()">末页</button>
跳转到<input id="currentPage1" value="" size="1"/>页 <button onclick="jumpPage()">跳转</button>,
每页显示<span id="pageSize">10</span>条,
当前<span id="currentPage">5</span>/<span id="totalPage">10</span>页,
总共<span id="count">48</span>条
</div>
</body>
<script type="text/javascript"> function orderDetail(){
//进入订单明细页面
window.location.href="/order/index";
}
function loginout(){
//进入注销处理控制层
window.location.href="/login/loginout";
}
//首页
function firstPage(){
alert("--firstPage--");
//获取每页显示条数
var _pageSize = $("#pageSize").html();
query(_pageSize,1);
}
//上页
function upPage(){
alert("--upPage--");
var _pageSize = $("#pageSize").html();
//当前页
var currentPage=$("#currentPage").html();
var _currentPage=currentPage-1;
query(_pageSize,_currentPage);
}
//下页
function nextPage(){
alert("--nextPage--");
var _pageSize = $("#pageSize").html();
//当前页
var currentPage=$("#currentPage").html();
//var _currentPage=currentPage+1;//不能这样直接加必须使用函数
var _currentPage= parseInt(currentPage)+1;
query(_pageSize,_currentPage);
}
//末页
function lastPage(){
alert("--lastPage--");
var _pageSize = $("#pageSize").html();
//当前页
var _currentPage=$("#totalPage").html();
query(_pageSize,_currentPage);
}
//跳转到
function jumpPage(){
alert("--jumpPage--");
var _pageSize = $("#pageSize").html();
//当前页
var _currentPage=$("#currentPage1").val();
query(_pageSize,_currentPage);
}
/**
* 注意在调用该函数时必须输入参数
* 查询+ 分页
* */
function query(_pageSize,_currentPage){
// alert("------query------");
//1.获取参数
var startStation = $("#startStation").val();
var stopStation = $("#stopStation").val();
//查询时间范围获取
var startTimeMin = $("#startTimeMin").val();
var startTimeMax = $("#startTimeMax").val();
//2.发送请求
var params = {
// startStation:startStation,
stopStation:stopStation,
_pageSize:_pageSize,//分页需要的数据
_currentPage:_currentPage//分页需要的数据
};
if (null!=startStation && ''!=startStation){//开始车站有值的时候才传递参数
params['startStation']=startStation; //动态向json中添加参数
}
if (null!=startTimeMin && ''!=startTimeMin){//最小时间
params['startTimeMin']=startTimeMin;
}
if (null!=startTimeMax && ''!=startTimeMax){//最大时间
params['startTimeMax']=startTimeMax;
}
var url = '/otherTicket/data';
jQuery.ajax({
type: 'POST',
contentType: 'application/x-www-form-urlencoded',
url: url,
data: params,
dataType: 'json',
success: function (data) {
//取出列表
var ticketList = data.list;
//取出分页数据
var currentPage= data.currentPage;
var count= data.count;
var pageSize= data.pageSize;
var totalPage= data.totalPage;
var html='<tr>'+
'<td>编号</td>'+
'<td>开始车站</td>'+
'<td>到达车站</td>'+
'<td>发车时间</td>'+
'<td>余票数</td>'+
'<td>线路类型</td>'+
'<td>操作</td>'+ //添加购票按钮
'</tr>';
//解析数据到table表中
for (var i=0;i<ticketList.length;i++){
//取出一个对象 java里面的内省机制
var ticket = ticketList[i];
var id = ticket.id;
var startStation= ticket.startStation;
var stopStation= ticket.stopStation;
//发车时间
var startTime = ticket.startTime;
var standby = ticket.standby;
var typeName = ticket.typeName;
html+='<tr>'+
'<td>'+id+'</td>'+
'<td>'+startStation+'</td>'+
'<td>'+stopStation+'</td>'+
'<td>'+startTime+'</td>'+
'<td>'+standby+'</td>'+
'<td>'+typeName+'</td>'+
'<td><button onclick="buyTicket('+id+')">购买</button></td>'+ //添加购票按钮
'</tr>';
}
//3.填充数据
//填充列表
$("#ticketList").html(html);
//填充分页数据
$("#totalPage").html(totalPage);
$("#pageSize").html(pageSize);
$("#count").html(count);
$("#currentPage").html(currentPage);
},
error: function (data) {
alert("失败啦");
}
});
} function buyTicket(id){
alert("buyTicket----"+id);
//2.发送请求
var params = {
id:id
};
var url = '/ticket2/buyTicket';
jQuery.ajax({
type: 'POST',
contentType: 'application/x-www-form-urlencoded',
url: url,
data: params,
dataType: 'json',
success: function (data) {
alert("成功");
//刷新数据
query(5,1);
},
error: function (data) {
alert("失败啦");
}
});
}
//执行js函数
query(5,1);
</script>
</html>
listOther.jsp
3.获取列表的控制层代码
与本站售票逻辑一模一样
/**
* 获取车票数据 高级查询 + 分页
*/
@RequestMapping("/data")
@ResponseBody //请求数据必须写这个
public ResultPage getData3(TicketQueryObj ticketQueryObj, String _pageSize, String _currentPage) {
//接收参数 可以将分页数据直接用TicketQueryObj对象就收,这里单独写出来是为了更好的理解 分页前端需要传的两个重要参数
if (_pageSize != null && !_pageSize.equals("")) {
ticketQueryObj.setPageSize(Integer.valueOf(_pageSize));
}
if (_currentPage != null && !_currentPage.equals("")) {
ticketQueryObj.setCurrentPage(Integer.valueOf(_currentPage));
}
//调用方法
ResultPage pageOther = ticketService.getPageOther(ticketQueryObj);
//控制跳转
return pageOther;
}
4.业务层代码
业务层逻辑与本站逻辑一样,都是在封装分页对象,不同的是本站的数据来自自己的dao获取,而站间互售来自接口调用返回的数据并解析
@Override
public ResultPage getPageOther(TicketQueryObj ticketQueryObj) {
List<Ticket> tickets = new ArrayList<>();
Integer count=0;
//发送httpClient请求
try {
//发送请求获取分页对象数据
String strRe = HttpClientUtil2.post("http://10.3.2.149:8080/ticket/data?s=cbsjh");
//解析数据
JSONObject jsonObject = JSONObject.fromObject(strRe);
//获取分页对象的列表
JSONArray list = jsonObject.getJSONArray("list");
//获取分页对象中的总共条数
count = jsonObject.getInt("totalSize");
//循环取出 列表的中对象将其转变为本站需要的对象属性
for (int i=0;i<list.size();i++){
JSONObject jsonObject1 = list.getJSONObject(i);
TicketOTher ticketOther = (TicketOTher)JSONObject.toBean(jsonObject1, TicketOTher.class);
Ticket ticket = new Ticket();
ticket.setId(ticketOther.getId());
ticket.setStartStation(ticketOther.getStartStation());
ticket.setStopStation(ticketOther.getStopStation());
ticket.setStartTime(ticketOther.getMoveTime());
//将解析完成后的对象装进列表中
tickets.add(ticket);
}
} catch (IOException e) {
e.printStackTrace();
}
ResultPage resultPage =new ResultPage();
//获取数据列表
resultPage.setList(tickets);
//总共条数查询数据库
resultPage.setCount(count);
//当前页
Integer currentPage = ticketQueryObj.getCurrentPage();
resultPage.setCurrentPage(currentPage);
//每页显示条数
Integer pageSize = ticketQueryObj.getPageSize();
resultPage.setPageSize(pageSize);
//总共页数
Integer totalPage=((count-1)/pageSize)+1;
resultPage.setTotalPage(totalPage);
return resultPage;
}
5.用到的HttpClientUtil2.java简单工具类如下:
//发送请求
public static String post(String url) throws IOException {
//1.发送对象
HttpPost httpPost = new HttpPost(url);
//2.创建客户端
DefaultHttpClient defaultHttpClient = new DefaultHttpClient();
//3.使用客户端发送请求
CloseableHttpResponse execute = defaultHttpClient.execute(httpPost);
//4.解析结果
HttpEntity entity = execute.getEntity();
String s = EntityUtils.toString(entity);
System.out.println("s="+s);
return s;
}
站间售票获取列表完成!重启项目查看站间互售列表吧!
大型运输行业实战_day09_2_站间互售实现的更多相关文章
- 大型运输行业实战_day11_2_事务理论与实际生产配置事务管理
1.什么是事务(Transaction:tx) 数据库的某些需要分步完成,看做是一个整体(独立的工作单元),不能分割,要么整体成功,要么整体生效.“一荣俱荣,一损俱损”,最能体现事务的思想.案例:银行 ...
- 大型运输行业实战_day15_1_全文检索之Lucene
1.引入 全文检索简介: 非结构化数据又一种叫法叫全文数据.从全文数据(文本)中进行检索就叫全文检索. 2.数据库搜索的弊端 案例 : select * from product whe ...
- 大型运输行业实战_day14_1_webserivce简单入门
1.简单使用 1.1.服务端 1.编写接口 package com.day02.sation.ws; /** * Created by Administrator on 1/12. */ public ...
- 大型运输行业实战_day13_1_定时任务spring-quartz
1.jar包 拷贝quartz-2.2.3.jar包到项目 2.编写定时任务类TicketQuart.java package com.day02.sation.task; import com.da ...
- 大型运输行业实战_day12_1_权限管理实现
1.业务分析 权限说的是不同的用户对同一个系统有不同访问权限,其设计的本质是:给先给用户分配好URL,然后在访问的时候判断该用户是否有当前访问的URL. 2.实现 2.1数据库设计标准5表权限结构 2 ...
- 大型运输行业实战_day11_1_aop理论与aop实际业务操作
1.aop概述 Spring的AOP:什么叫做AOP:Aspect oritention programming(面向切面编程)什么是切面:看图,业务方法 执行前后.AOP的目的:AOP能够将那些与业 ...
- 大型运输行业实战_day01_2_需求文档
1.文档格式 (见模板文件) 2.Axure简单使用 2.1安装Axure傻瓜式安装 2.2简单使用axure 3.总结 需求文件完成后应该包括三种文件: 1.axure文件 2.axure生成的ht ...
- 大型运输行业实战_day01_1_业务分析
1.业务分析 发展历史: 上车收费-->车站买票(相当于先收钱后上车)-->站务系统--->联网售票 2.项目结构 3.开发流程分析 1.业务分析 图文并茂 ...
- 大型运输行业实战_day10_1_自定义事务管理类
1.创建事务管理类 TransactionManager.java package com.day02.sation.transaction; import com.day02.sation.uti ...
随机推荐
- SEO之H1,H2,H3,H4....STRONG使用方法
作为一个SEO从业人员,我们不仅仅是要懂得如何通过网站内容和外链等SEO手段,其实一个优秀的SEOER在从事一个SEO案例时,首先着手的是如何从网站程序本身来打好网站SEO基础. 在平时和很多朋友的交 ...
- SQL 实践和技巧 <2>
转自 http://i.cnblogs.com/EditPosts.aspx?opt=1 几个小技巧 (1)||的使用: select ‘(‘||phone[1,3]||’)’phone[5, ...
- android studio 更新 Gradle错误解决方法(Gradle sync failed)
android studio 更新 Gradle错误解决方法 Android Studio每次更新版本都会更新Gradle这个插件,但由于长城的问题每次更新都是失败,又是停止在Refreshing ...
- 【转】C# 根据当前时间获取,本周,本月,本季度等时间段 .Net中Exception
1 DateTime dt = DateTime.Now; //当前时间 2 3 DateTime startWeek = dt.AddDays(1 - Convert.ToInt32(dt.DayO ...
- Sigar简介
大家好,我是Sigar.也许好多人还不认识我.下面就介绍一下我自己,好让大家对我有一个大致的了解. 我的全名是System Information Gatherer And Reporter,中文名是 ...
- java 调用windows bat脚本
当我们需要在java程序中调用外部程序,我们可用通过Runtime.exec()调用来完成. The class java.lang.Runtime features a static method ...
- python selenium-7自动发送邮件
https://jingyan.baidu.com/article/647f0115b78f8d7f2148a8e8.html 1.发送HTML格式的邮件 import smtplib from em ...
- 搭建OpenStack先电云平台
实际操作示意图 在VMware里面创建两台centos7的虚拟机作为搭建云平台的两节点配置如下: 1.第一台虚拟机 作为控制节点 2CPU 3G以上内存 硬盘50G 网络适配器一个nat 一个仅主 ...
- 基于Linux的Samba开源共享解决方案测试(四)
对于客户端的网络监控如图: 双NAS网关100Mb码率视音频文件的稳定读测试结果如下: 100Mb/s负载性能记录 NAS网关资源占用 稳定写 稳定写 CPU空闲 内存空闲 网卡占用 NAS1 8个稳 ...
- Bogart gSub.vb
'--------------Job No 0900408 -------------- '--DIM PART ONE ONLINE Update Order Qty '''主要新加過程名 Refr ...