zoukankan      html  css  js  c++  java
  • 大型运输行业实战_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     }

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

  • 相关阅读:
    phpcms后台进入地址(包含No permission resources错误)
    phpmyadmin上传大sql文件办法
    ubuntu彻底卸载mysql
    Hdoj 2602.Bone Collector 题解
    一篇看懂词向量
    Hdoj 1905.Pseudoprime numbers 题解
    The Python Challenge 谜题全解(持续更新)
    Hdoj 2289.Cup 题解
    Hdoj 2899.Strange fuction 题解
    Hdoj 2199.Can you solve this equation? 题解
  • 原文地址:https://www.cnblogs.com/newAndHui/p/8241271.html
Copyright © 2011-2022 走看看