大型运输行业实战_day09_2_站间互售实现

1.添加站间互售入口

  

  对应的html代码

   <button onclick="otherStation()">站间互售</button>

  对应的js发送函数

   function otherStation(){
//进入进入站间互售页面列表
window.location.href="/otherTicket/index";
}

 对应的控制层代码:

1  /**
2      * 站间互售页面
3      * @return
4      */
5     @RequestMapping("/index")
6     public String listPage() {
7         return "/WEB-INF/views/listOther.jsp";
8     }

 

2.站间互售列表页面listOther.jsp代码

   站间互售的页面与本站的页面完全一样,其实站间互售的本质与本站售票的逻辑几乎完全一样,唯一的不同是数据来源不同

  1 <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
  2 <html>
  3 <head>
  4     <title>车票列表</title>
  5     <%--引入jquery--%>
  6     <script type="text/javascript" src="/static/jquery-2.1.3.min.js"></script>
  7     <script type="text/javascript" src="/static/My97DatePicker/WdatePicker.js"></script>
  8 </head>
  9 <body>
 10 <br/>
 11 <button onclick="loginout()">注销</button>
 12 <button onclick="orderDetail()">订单明细</button>
 13 <br/>
 14 <br/>
 15 <div align="center">
 16     开始车站:<input id="startStation" type="text" value="" /> 17     到达车站:<input id="stopStation" type="text" value="" />
 18     <br/>
 19     开始时间:<input id="startTimeMin"  onclick="WdatePicker()" value=""/>
 20     结束时间:<input id="startTimeMax" onclick="WdatePicker()" value=""/>
 21     <button onclick="query(5,1)">查询</button>
 22 
 23     <table id="ticketList" width="50%" border="1" cellspacing="1">
 24         <tr>
 25             <td>编号</td>
 26             <td>开始车站</td>
 27             <td>到达车站</td>
 28             <td>操作</td>
 29         </tr>
 30         <%--模拟假数据--%>
 31         <tr>
 32             <td>1</td>
 33             <td>北京</td>
 34             <td>成都</td>
 35             <td><button>购买</button></td>
 36         </tr>
 37     </table>
 38     <button onclick="firstPage()">首页</button>
 39     <button onclick="upPage()">上页</button>
 40     <button onclick="nextPage()">下页</button>
 41     <button onclick="lastPage()">末页</button>
 42     跳转到<input id="currentPage1" value="" size="1"/><button onclick="jumpPage()">跳转</button>,
 43     每页显示<span id="pageSize">10</span>条,
 44     当前<span id="currentPage">5</span>/<span id="totalPage">10</span>页,
 45     总共<span id="count">48</span> 46 </div>
 47 </body>
 48 <script type="text/javascript">
 49 
 50 
 51    function orderDetail(){
 52        //进入订单明细页面
 53        window.location.href="/order/index";
 54    }
 55     function loginout(){
 56        //进入注销处理控制层
 57         window.location.href="/login/loginout";
 58     }
 59     //首页
 60     function firstPage(){
 61          alert("--firstPage--");
 62         //获取每页显示条数
 63        var _pageSize =  $("#pageSize").html();
 64         query(_pageSize,1);
 65     }
 66     //上页
 67     function upPage(){
 68         alert("--upPage--");
 69         var _pageSize =  $("#pageSize").html();
 70         //当前页
 71         var currentPage=$("#currentPage").html();
 72         var _currentPage=currentPage-1;
 73         query(_pageSize,_currentPage);
 74     }
 75     //下页
 76     function nextPage(){
 77         alert("--nextPage--");
 78         var _pageSize =  $("#pageSize").html();
 79         //当前页
 80         var currentPage=$("#currentPage").html();
 81         //var _currentPage=currentPage+1;//不能这样直接加必须使用函数
 82         var _currentPage= parseInt(currentPage)+1;
 83         query(_pageSize,_currentPage);
 84     }
 85     //末页
 86     function lastPage(){
 87         alert("--lastPage--");
 88         var _pageSize =  $("#pageSize").html();
 89         //当前页
 90         var _currentPage=$("#totalPage").html();
 91         query(_pageSize,_currentPage);
 92     }
 93     //跳转到
 94     function jumpPage(){
 95         alert("--jumpPage--");
 96         var _pageSize =  $("#pageSize").html();
 97         //当前页
 98         var _currentPage=$("#currentPage1").val();
 99         query(_pageSize,_currentPage);
100     }
101   /**
102    *  注意在调用该函数时必须输入参数
103    *  查询+ 分页
104    *  */
105     function query(_pageSize,_currentPage){
106        // alert("------query------");
107         //1.获取参数
108         var  startStation = $("#startStation").val();
109         var  stopStation = $("#stopStation").val();
110       //查询时间范围获取
111       var  startTimeMin = $("#startTimeMin").val();
112       var  startTimeMax = $("#startTimeMax").val();
113         //2.发送请求
114         var params = {
115            // startStation:startStation,
116             stopStation:stopStation,
117             _pageSize:_pageSize,//分页需要的数据
118             _currentPage:_currentPage//分页需要的数据
119         };
120       if (null!=startStation && ''!=startStation){//开始车站有值的时候才传递参数
121           params['startStation']=startStation;  //动态向json中添加参数
122       }
123       if (null!=startTimeMin && ''!=startTimeMin){//最小时间
124           params['startTimeMin']=startTimeMin;
125       }
126       if (null!=startTimeMax && ''!=startTimeMax){//最大时间
127           params['startTimeMax']=startTimeMax;
128       }
129         var url = '/otherTicket/data';
130         jQuery.ajax({
131             type: 'POST',
132             contentType: 'application/x-www-form-urlencoded',
133             url: url,
134             data: params,
135             dataType: 'json',
136             success: function (data) {
137                 //取出列表
138                var ticketList = data.list;
139                 //取出分页数据
140                 var currentPage= data.currentPage;
141                 var count= data.count;
142                 var pageSize= data.pageSize;
143                 var totalPage= data.totalPage;
144                 var html='<tr>'+
145                         '<td>编号</td>'+
146                         '<td>开始车站</td>'+
147                         '<td>到达车站</td>'+
148                         '<td>发车时间</td>'+
149                         '<td>余票数</td>'+
150                         '<td>线路类型</td>'+
151                         '<td>操作</td>'+  //添加购票按钮
152                         '</tr>';
153                 //解析数据到table表中
154                 for (var i=0;i<ticketList.length;i++){
155                     //取出一个对象   java里面的内省机制
156                     var  ticket = ticketList[i];
157                     var id = ticket.id;
158                     var startStation=  ticket.startStation;
159                     var stopStation=  ticket.stopStation;
160                     //发车时间
161                     var startTime = ticket.startTime;
162                    var standby = ticket.standby;
163                     var typeName = ticket.typeName;
164                     html+='<tr>'+
165                             '<td>'+id+'</td>'+
166                             '<td>'+startStation+'</td>'+
167                             '<td>'+stopStation+'</td>'+
168                             '<td>'+startTime+'</td>'+
169                             '<td>'+standby+'</td>'+
170                             '<td>'+typeName+'</td>'+
171                             '<td><button onclick="buyTicket('+id+')">购买</button></td>'+ //添加购票按钮
172                             '</tr>';
173                 }
174                 //3.填充数据
175                 //填充列表
176                 $("#ticketList").html(html);
177                 //填充分页数据
178                 $("#totalPage").html(totalPage);
179                 $("#pageSize").html(pageSize);
180                 $("#count").html(count);
181                 $("#currentPage").html(currentPage);
182             },
183             error: function (data) {
184                 alert("失败啦");
185             }
186         });
187     }
188 
189    function buyTicket(id){
190        alert("buyTicket----"+id);
191        //2.发送请求
192        var params = {
193            id:id
194        };
195        var url = '/ticket2/buyTicket';
196        jQuery.ajax({
197            type: 'POST',
198            contentType: 'application/x-www-form-urlencoded',
199            url: url,
200            data: params,
201            dataType: 'json',
202            success: function (data) {
203                alert("成功");
204                //刷新数据
205                query(5,1);
206            },
207            error: function (data) {
208                alert("失败啦");
209            }
210        });
211    }
212     //执行js函数
213     query(5,1);
214 </script>
215 </html>
listOther.jsp

 

 3.获取列表的控制层代码

    与本站售票逻辑一模一样

 1  /**
 2      * 获取车票数据 高级查询 + 分页
 3      */
 4     @RequestMapping("/data")
 5     @ResponseBody  //请求数据必须写这个
 6     public ResultPage getData3(TicketQueryObj ticketQueryObj, String _pageSize, String _currentPage) {
 7         //接收参数    可以将分页数据直接用TicketQueryObj对象就收,这里单独写出来是为了更好的理解 分页前端需要传的两个重要参数
 8         if (_pageSize != null && !_pageSize.equals("")) {
 9             ticketQueryObj.setPageSize(Integer.valueOf(_pageSize));
10         }
11         if (_currentPage != null && !_currentPage.equals("")) {
12             ticketQueryObj.setCurrentPage(Integer.valueOf(_currentPage));
13         }
14         //调用方法
15         ResultPage pageOther = ticketService.getPageOther(ticketQueryObj);
16         //控制跳转
17         return pageOther;
18     }

 

 4.业务层代码

    业务层逻辑与本站逻辑一样,都是在封装分页对象,不同的是本站的数据来自自己的dao获取,而站间互售来自接口调用返回的数据并解析

 1  @Override
 2     public ResultPage getPageOther(TicketQueryObj ticketQueryObj) {
 3         List<Ticket> tickets = new ArrayList<>();
 4         Integer count=0;
 5         //发送httpClient请求
 6         try {
 7             //发送请求获取分页对象数据
 8             String strRe = HttpClientUtil2.post("http://10.3.2.149:8080/ticket/data?s=cbsjh");
 9             //解析数据
10             JSONObject jsonObject = JSONObject.fromObject(strRe);
11             //获取分页对象的列表
12             JSONArray list = jsonObject.getJSONArray("list");
13             //获取分页对象中的总共条数
14              count = jsonObject.getInt("totalSize");
15             //循环取出 列表的中对象将其转变为本站需要的对象属性
16             for (int i=0;i<list.size();i++){
17                 JSONObject jsonObject1 = list.getJSONObject(i);
18                 TicketOTher ticketOther = (TicketOTher)JSONObject.toBean(jsonObject1, TicketOTher.class);
19                 Ticket ticket = new Ticket();
20                 ticket.setId(ticketOther.getId());
21                 ticket.setStartStation(ticketOther.getStartStation());
22                 ticket.setStopStation(ticketOther.getStopStation());
23                 ticket.setStartTime(ticketOther.getMoveTime());
24                 //将解析完成后的对象装进列表中
25                 tickets.add(ticket);
26             }
27         } catch (IOException e) {
28             e.printStackTrace();
29         }
30         ResultPage resultPage =new ResultPage();
31         //获取数据列表
32         resultPage.setList(tickets);
33         //总共条数查询数据库
34         resultPage.setCount(count);
35         //当前页
36         Integer currentPage = ticketQueryObj.getCurrentPage();
37         resultPage.setCurrentPage(currentPage);
38         //每页显示条数
39         Integer pageSize = ticketQueryObj.getPageSize();
40         resultPage.setPageSize(pageSize);
41         //总共页数
42         Integer totalPage=((count-1)/pageSize)+1;
43         resultPage.setTotalPage(totalPage);
44         return resultPage;
45     }

 

5.用到的HttpClientUtil2.java简单工具类如下:

 1    //发送请求
 2     public static String post(String url) throws IOException {
 3         //1.发送对象
 4         HttpPost httpPost = new HttpPost(url);
 5         //2.创建客户端
 6         DefaultHttpClient defaultHttpClient = new DefaultHttpClient();
 7         //3.使用客户端发送请求
 8         CloseableHttpResponse execute = defaultHttpClient.execute(httpPost);
 9         //4.解析结果
10         HttpEntity entity = execute.getEntity();
11         String s = EntityUtils.toString(entity);
12         System.out.println("s="+s);
13         return s;
14     }

 

站间售票获取列表完成!重启项目查看站间互售列表吧!

posted @ 2018-01-08 09:59  李东平|一线码农  阅读(384)  评论(0编辑  收藏  举报