用户登录界面(1.8版本--网站框架改进)

news/2024/5/15 11:12:37/文章来源:https://blog.csdn.net/weixin_33912445/article/details/93140670

1.创建数据库db_user与表users

 1 CREATE DATABASE db_user CHARACTER SET utf8;
 2 
 3 CREATE TABLE users (
 4     userid TINYINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
 5     username varchar(20),
 6     passwd varchar(20),
 7     email varchar(30),
 8     priority int
 9 );
10 
11 DROP TABLE users;
12 
13 SELECT * FROM users;
14 
15 INSERT INTO users(username,passwd,email,priority) VALUES('admin','admin','admin@sohu.com',1);
16 INSERT INTO users(username,passwd,email,priority) VALUES('shunping','shunping','shunping@sohu.com',1);
17 INSERT INTO users(username,passwd,email,priority) VALUES('tester1','tester2','tester1@sohu.com',5);
18 INSERT INTO users(username,passwd,email,priority) VALUES('tester2','tester2','tseter2@sohu.com',5);
19 INSERT INTO users(username,passwd,email,priority) VALUES('tester3','tester3','tester3@sohu.com',5);
20 INSERT INTO users(username,passwd,email,priority) VALUES('tester4','tester4','tester4@sohu.com',5);
21 INSERT INTO users(username,passwd,email,priority) VALUES('tester5','tester5','tester5@sohu.com',5);
22 INSERT INTO users(username,passwd,email,priority) VALUES('tester6','tester6','tester6@sohu.com',5);
23 INSERT INTO users(username,passwd,email,priority) VALUES('tester7','tester7','tester7@sohu.com',5);
24 INSERT INTO users(username,passwd,email,priority) VALUES('tester8','tester8','tester8@sohu.com',5);
25 
26 //快速增加记录
27 INSERT INTO users(username,passwd,email,priority) SELECT username,passwd,email,priority FROM users;
28 
29 SELECT COUNT(*) FROM users;
Database

 2.登录界面

 1 package com.tsinghua;
 2 
 3 import javax.servlet.http.*;
 4 import java.io.*;
 5 
 6 public class Login3 extends HttpServlet {
 7     public void doGet(HttpServletRequest req,HttpServletResponse res)  {
 8         try {
 9             res.setContentType("text/html;charset=utf8");
10             PrintWriter pw = res.getWriter();
11             String info1 = req.getParameter("info1");
12             String info3 = req.getParameter("info3");
13             pw.println("<html>");
14             pw.println("<body>");
15             //用户尚未登录提醒
16             if(info1!=null) {
17                 pw.println("<span>您还没有登录</span>");    
18             }
19             if(info3 != null) {
20                 pw.println("<span>您的用户名或密码错误</span>");    
21             }
22             pw.println("<h1>用户登录</h1>");
23             pw.println("<form action=loginCl3>");
24             pw.println("用户名:<input type=text name=username><br/>");
25             pw.println("密码:<input type=pasword name=passwd><br/>");
26             pw.println("<input type=checkbox name=checked value=2>两周之内不需要登录<br/>");
27             pw.println("<input type=submit value=login>");
28             pw.println("</form>");
29             pw.println("</body>");
30             pw.println("</html>");
31                 
32         }catch(Exception ex) {
33             ex.printStackTrace();    
34         }    
35     }
36     public void doPost(HttpServletRequest req,HttpServletResponse res)  {
37         this.doGet(req,res);    
38     }    
39 }
Login3.java

 3.数据库连接

 1 package com.tsinghua;
 2  
 3 import java.sql.*;
 4  
 5 public class ConnDB {
 6      private Connection con = null;
 7      public Connection getConn() {
 8          try {
 9              Class.forName("com.mysql.jdbc.Driver");
10              con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_user","root","");
11          }catch(Exception ex) {
12              ex.printStackTrace();
13          }    
14          return con;
15      }        
16  }
ConnDB.java

4.映射表users

 1 //与表users一一映射
 2 package com.tsinghua;
 3 
 4 import java.sql.*;
 5 
 6 public class UserBean {
 7     private int userId;
 8     private String userName;
 9     private String passwd;
10     private String email;
11     private int priority;
12     public void setUserId(int userId) {
13         this.userId = userId;    
14     }        
15     public int getUserId() {
16         return     this.userId;
17     }
18     public void setUserName(String userName) {
19         this.userName = userName;    
20     }
21     public String getUserName() {
22         return this.userName;    
23     }
24     public void setPasswd(String passwd) {
25         this.passwd = passwd;    
26     }
27     public String getPasswd() {
28         return this.passwd;    
29     }
30     public void setEmail(String email) {
31         this.email = email;    
32     }
33     public String getEmail() {
34         return this.email;    
35     }
36     public void setPriority(int priority) {
37         this.priority = priority;
38     }
39     public int getPriority() {
40         return this.priority;    
41     }
42 }
UserBean.java

 5.sql语句处理,操作表users

  1 //处理users表--->操作UserBean
  2 //业务逻辑处理
  3 
  4 package com.tsinghua;
  5 
  6 import java.sql.*;
  7 import java.util.*;
  8 import com.tsinghua.*;
  9 
 10 public class UserBeanCl {
 11     private Connection ct=null;
 12     private PreparedStatement ps=null;
 13     private ResultSet rs=null;
 14     private int pageCount=0;
 15     
 16     public int getPageCount() {
 17         return this.pageCount; 
 18     }
 19     
 20     public ArrayList getResultByPage(int pageNow,int pageSize) {
 21         
 22         //将数据库中记录分页 
 23         ArrayList arraylist = new ArrayList();
 24         try {
 25             int rowCount=0;
 26             ConnDB cd = new ConnDB();
 27             ct = cd.getConn();
 28             ps = ct.prepareStatement("select count(*) from users");
 29             rs = ps.executeQuery();
 30             if(rs.next()) {
 31                 rowCount = rs.getInt(1);
 32             }
 33             //计算pageCount
 34             if(rowCount % pageSize == 0) {
 35                 pageCount = rowCount / pageSize;    
 36             }else {
 37                 pageCount = rowCount / pageSize + 1;    
 38             }
 39          
 40             ps = ct.prepareStatement("select * from users limit ?,?");
 41             ps.setInt(1,(pageNow-1)*pageSize);
 42             ps.setInt(2,pageSize);
 43             rs = ps.executeQuery();
 44             if(rs.next()) {
 45                 UserBean ub = new UserBean();
 46                 ub.setUserId(rs.getInt(1));
 47                 ub.setUserName(rs.getString(2));
 48                 ub.setPasswd(rs.getString(3));
 49                 ub.setEmail(rs.getString(4));
 50                 ub.setPriority(rs.getInt(5));
 51                 arraylist.add(ub);    
 52             }
 53              
 54         }catch(Exception ex) {
 55             ex.printStackTrace();
 56         }finally {
 57             this.close();
 58         }
 59         return arraylist;
 60     }
 61                 
 62     //验证用户
 63     public boolean checkUser(String user,String pass) {
 64         boolean bool = false;
 65         try {
 66             ConnDB cd = new ConnDB();
 67             ct = cd.getConn();
 68             ps = ct.prepareStatement("select passwd from users where username=?");
 69             ps.setString(1,user);
 70             rs=ps.executeQuery();
 71             if(rs.next()) {
 72                 String sPasswd = rs.getString(1);
 73                 if(sPasswd.equals(pass)) {
 74                     bool=true;
 75                 }    
 76             }
 77         }catch(Exception ex) {
 78             ex.printStackTrace();    
 79         }finally {
 80             this.close(); 
 81         }
 82         return bool;    
 83     }
 84     public void close() {
 85         try {
 86             if(rs!=null) {
 87                 rs.close();    
 88                 rs=null;
 89             }    
 90             if(ps!=null) {
 91                 ps.close();
 92                 ps=null;    
 93             }
 94             if(ct!=null) {
 95                 ct.close();    
 96                 ct=null;
 97             }
 98         }catch(Exception ex) {
 99             ex.printStackTrace();    
100         }    
101     }
102         
103 }
UserBeanCl.java

 6.业务逻辑处理

 1 package com.tsinghua;
 2 
 3 import javax.servlet.http.*;
 4 import java.io.*;
 5 import java.sql.*;
 6 import com.tsinghua.*;
 7 
 8 public class LoginCl3 extends HttpServlet {
 9     public void doGet(HttpServletRequest req,HttpServletResponse res) {
10         
11         try {
12             String user = req.getParameter("username");
13             String pass = req.getParameter("passwd");
14              
15              //检验用户
16              UserBeanCl ubc = new UserBeanCl();
17              if(ubc.checkUser(user,pass)){
18                   
19                     String checked = req.getParameter("checked");
20                     if(checked!=null) {
21                      
22                         //创建Cookie
23                         Cookie username = new Cookie("myName",user);
24                         Cookie passwd = new Cookie("myPasswd",pass);
25                         //设置存在时间
26                         username.setMaxAge(14*24*60*60);
27                         passwd.setMaxAge(14*24*60*60);
28                         //将Cookie回写到客户端
29                         res.addCookie(username);
30                         res.addCookie(passwd);
31                     }
32                     
33                     
34                      HttpSession hs = req.getSession(true);
35                     //添加session属性
36                     hs.setAttribute("uname",user);
37                     //设置存在时间
38                     hs.setMaxInactiveInterval(20);
39                      
40                     
41                     //跳转到欢迎页面
42                     res.sendRedirect("wel3?user="+user);    
43                  
44              }else {
45                  res.sendRedirect("login3?info3=err3");    
46              }
47         }catch(Exception ex) {
48             ex.printStackTrace();    
49         } 
50     }
51     public void doPost(HttpServletRequest req,HttpServletResponse res) {
52         this.doGet(req,res);
53     }    
54 }
LoginCl3.java

 7.欢迎界面

  1 package com.tsinghua;
  2 import javax.servlet.http.*;
  3 import java.io.*;
  4 import java.sql.*;
  5 import java.util.*;
  6 import com.tsinghua.*;
  7 
  8 public class Wel3 extends HttpServlet {
  9     public void doGet(HttpServletRequest req,HttpServletResponse res) {
 10         //数据库
 11         Connection con = null;
 12         PreparedStatement ps = null;
 13         ResultSet rs = null;
 14         try {
 15             //html格式声明
 16             res.setContentType("text/html;charset=utf8"); 
 17             //分页 
 18             int pageSize=3;   //每页记录数     
 19             int pageNow=1;    //希望当前页数
 20             
 21             String user="";
 22             String pass="";
 23             
 24             //动态的接收pageNow    
 25             String sPageNow = req.getParameter("pageCur");
 26             if(sPageNow!=null) {
 27                 pageNow = Integer.parseInt(sPageNow);    
 28             }
 29             
 30                         
 31             PrintWriter pw = res.getWriter();
 32             //获取session属性
 33             HttpSession hs = req.getSession(true);
 34             String name = (String)hs.getAttribute("uname");
 35             
 36             //session不存在
 37             if(name==null) {
 38                 //检测是否有Cookie信息
 39                 Cookie []allCookies = req.getCookies();
 40                 if(allCookies != null) {
 41                     for(int i=0;i<allCookies.length;i++) {
 42                         Cookie temp = allCookies[i];
 43                         if(temp.getName().equals("myName")) {
 44                             user = temp.getValue();    
 45                         }else if(temp.getName().equals("myPasswd")) {
 46                             pass = temp.getValue();    
 47                         }
 48                     }
 49                     if(user.equals("")&&pass.equals("")) {
 50                         res.sendRedirect("loginCl3?username="+user+"&passwd="+pass);
 51                     }else {
 52                         //跳转登陆页面,提醒用户未登录
 53                         res.sendRedirect("login3?info1=err1");    
 54             
 55                     }
 56                 } 
 57             }
 58              
 59             UserBeanCl ubc = new UserBeanCl();
 60             ArrayList arraylist = ubc.getResultByPage(pageNow,pageSize);
 61             int pageCount = ubc.getPageCount(); 
 62              
 63             //欢迎用户(用户名)
 64             pw.println("Welcome your coming,"+name+"<br/>");
 65             //图片
 66             pw.println("<img width=100px height=100px src=imgs/KSYoon.jpg>");
 67             //输出分页后users表中信息
 68             pw.println("<table border=1>");
 69             pw.println("<tr>");
 70             pw.println("<th>userid</th>");
 71             pw.println("<th>username</th>");
 72             pw.println("<th>passwd</th>");
 73             pw.println("<th>email</th>");
 74             pw.println("<th>priority</th>");
 75             pw.println("</tr>");
 76              
 77             for(int i=0;i<arraylist.size();i++) {
 78                 UserBean ub = (UserBean)arraylist.get(i);
 79                 pw.println("<tr>");
 80                 pw.println("<td>"+ub.getUserId()+"</td>");
 81                 pw.println("<td>"+ub.getUserName()+"</td>");
 82                 pw.println("<td>"+ub.getPasswd()+"</td>");
 83                 pw.println("<td>"+ub.getEmail()+"</td>");
 84                 pw.println("<td>"+ub.getPriority()+"</td>");
 85                 pw.println("</tr>");    
 86             }
 87             
 88             pw.println("</table>");
 89             
 90             //上一页
 91             if(pageNow!=1) {
 92                 pw.println("<a href=wel3?pageCur="+(pageNow-1)+">上一页</a>");    
 93             }
 94             
 95             //页数链接
 96             for(int i=pageNow;i<pageNow+10;i++) {
 97                 //想要显示的当前页
 98                 pw.println("<a href=wel3?pageCur="+i+">"+i+"</a>");
 99             }
100              
101             //下一页
102             if(pageNow!= pageCount) {
103                 pw.println("<a href=wel3?pageCur="+(pageNow+1)+">下一页</a>");    
104             }
105         }catch(Exception ex) {
106             ex.printStackTrace();    
107         } 
108     }
109     public void doPost(HttpServletRequest req,HttpServletResponse res) {
110         this.doGet(req,res);    
111     }    
112 }
Wel3.java

 8.servlet部署

 1 <servlet>
 2     <servlet-name>login3</servlet-name>
 3     <servlet-class>com.tsinghua.Login3</servlet-class>
 4   </servlet>
 5   <servlet-mapping>
 6     <servlet-name>login3</servlet-name>
 7     <url-pattern>/login3</url-pattern>
 8   </servlet-mapping>
 9 
10   <servlet>
11     <servlet-name>loginCl3</servlet-name>
12     <servlet-class>com.tsinghua.LoginCl3</servlet-class>
13   </servlet>
14   <servlet-mapping>
15     <servlet-name>loginCl3</servlet-name>
16     <url-pattern>/loginCl3</url-pattern>
17   </servlet-mapping>
18 
19   <servlet>
20     <servlet-name>wel3</servlet-name>
21     <servlet-class>com.tsinghua.Wel3</servlet-class>
22   </servlet>
23   <servlet-mapping>
24     <servlet-name>wel3</servlet-name>
25     <url-pattern>/wel3</url-pattern>
26   </servlet-mapping>
27 
28  <servlet>
29     <servlet-name>connDB</servlet-name>
30     <servlet-class>com.tsinghua.ConnDB</servlet-class>
31   </servlet>
32   <servlet-mapping>
33     <servlet-name>connDB</servlet-name>
34     <url-pattern>/connDB</url-pattern>
35   </servlet-mapping>
36 
37   <servlet>
38     <servlet-name>userBean</servlet-name>
39     <servlet-class>com.tsinghua.UserBean</servlet-class>
40   </servlet>
41   <servlet-mapping>
42     <servlet-name>userBean</servlet-name>
43     <url-pattern>/userBean</url-pattern>
44   </servlet-mapping>
45 
46   <servlet>
47     <servlet-name>userBeanCl</servlet-name>
48     <servlet-class>com.tsinghua.UserBeanCl</servlet-class>
49   </servlet>
50   <servlet-mapping>
51     <servlet-name>userBeanCl</servlet-name>
52     <url-pattern>/userBeanCl</url-pattern>
53   </servlet-mapping>
View Code

转载于:https://www.cnblogs.com/KSYoon/p/9435960.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_726027.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Linux就该这么学》培训笔记_ch20使用LNMP架构部署动态网站环境

《Linux就该这么学》培训笔记_ch20使用LNMP架构部署动态网站环境 文章最后会post上书本的笔记照片。 文章主要内容&#xff1a; 源码包程序LNMP动态网站架构 配置Mysql服务配置Nginx服务配置php服务搭建Discuz论坛选购服务器主机书本笔记源码包程序 在RPM和Yum出现之前&#xf…

5-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案微信小程序篇(配置网站--网站配置上数据库)...

https://www.cnblogs.com/yangfengwu/p/11037653.html php和数据库打交道,这样整个网页就完美了,有了数据存储,交互,动态网页才完美 首先修改下php.ini 文件 告诉php当前的扩展库路径 扩展库--就是扩展的其它功能的库 这个就是扩展库文件夹,里面有很多功能性文件 就是增加这…

C#中利用JQuery实现视频网站的缩略图采集

最近有朋友想要采集优酷的视频标题和缩略图 (哈哈, 并非商业目的). 找到我帮忙, 考虑到有我刚刚发布的SpiderStudio, 我毫不犹豫的答应了. 首先在网页上视频的基本结构为: div.v- div.v-meta-title //标题- div.v-thumb / img //缩略图 对应的JQuery表达式为: $("div.v&q…

网站被劫持到其它网站如何解决

2019独角兽企业重金招聘Python工程师标准>>> 前段时间网站被黑了&#xff0c;从百度打开网站直接被劫持跳转到了cai票&#xff0c;du博网站上去&#xff0c;网站的首页index.html文件也被篡改成一些什么北京sai车&#xff0c;pk10&#xff0c;一些cai票的关键词内容…

没有网站,靠什么来吸引近9亿的互联网用户

2018年水果连锁企业百果园&#xff0c;其线上销售额突破20亿元、日订单量达6万单,光小程序用户数累计达到了1300万。 数据显示&#xff0c;以互联网起家的瑞幸咖啡在2018年的互联网市场占有率在30%左右&#xff0c;而作为咖啡巨头的星巴克互联网市场占有率仅10%左右。为什么会出…

Ajax_Apache访问资源文件的权限配置、资源存放路径配置、配置虚拟主机、动态网站静态网站区别...

1、配置资源的访问权限 修改配置文件&#xff1a;httpd.conf 文件 改完之后要重启 2、切换资源默认存放目录www 修改配置文件httpd.conf 文件中的存放目录 3、Apache是否能够同时支持多个站点 Apache能否支持通过不同的域名访问不同的站点 可以 做法&#xff1a;配置虚拟主机…

我的第一个发布到网上的程序,已经超过二十家网站收录了,呵呵,高兴

邮箱专家 1.3┊具备了文件拖放/自动搜索/自动解析等功能┊简体中文绿色免费版 软件大小&#xff1a;106 K热门等级&#xff1a; 更新时间&#xff1a;2008-08-21联 系 人&#xff1a;x_iayu163.com下载次数&#xff1a;450开 发 商&#xff1a; 界面预览&#xff1a;无软件类别…

python怎么测试一个网站的延迟_测量服务器的ping延迟-Python

I have a list of server IP addresses, I need to check if each one is online and how long the latency is. I havent found any straight forward ways of implementing this, and there seems to be a few problems in calculating latency accurately. Any ideas? 解决…

支付回调失败怎么处理_Thinkphp网站支付宝异步回调验签失败问题

php中文网最新课程每日17点准时技术干货分享手头一个项目&#xff0c;用到了支付宝手机网站支付&#xff0c;项目用tp做的&#xff0c;下载支付宝SDK后修改后调起正常&#xff0c;同步接口也可访问&#xff0c;但异步接口验签总是错误失败&#xff0c;fail&#xff0c;追踪到Ao…

最炫表白网站html5源码_(自适应手机版)响应式滚屏智能化物流设备类网站织梦模板 HTML5蓝色人工智能设备网站源码...

模板名称&#xff1a;(自适应手机版)响应式滚屏智能化物流设备类网站织梦模板 HTML5蓝色人工智能设备网站源码下载本套织梦模板采用织梦最新内核开发的模板&#xff0c;这款模板使用范围广&#xff0c;不仅仅局限于一类型的企业&#xff0c;物流设备、智能设备、人工智能类的网…

php冗余数据,WordPress网站提速优化之清理数据库冗余数据

最近小 C 发现数据库中有很多冗余数据&#xff0c;就想清理优化下数据库加快网站的运行速度&#xff0c;下面小 C 就教大家如何清理数据库表。PS&#xff1a;请注意看观看此文请认真&#xff0c;一定要先备份&#xff0c;备份&#xff0c;备份重要的事说三遍。备份后在执行 SQL…

laravel 开发的双语网站_2019年重庆市第十二届中等职业学校技能大赛网页前端开发项目教师培训成功举办...

点上方蓝字&#xff0c;欢迎关注我们&#xff01;2019年11月7日&#xff0c;重庆市第十二届中等职业学校技能大赛Web前端开发项目在重庆市南川隆化职业中学校成功举办&#xff01;本次培训由重庆市教育科学研究院主办&#xff0c;重庆市南川隆化职业中学校承办&#xff0c;成都…

说说大型高并发高负载网站的系统架构(更新)【转】

我在CERNET做过拨号接入平台的搭建&#xff0c;而后在Yahoo&3721从事过搜索引擎前端开发&#xff0c;又在MOP处理过大型社区猫扑大杂烩的架构升级等工作&#xff0c;同时自己接触和开发过不少大中型网站的模块&#xff0c;因此在大型网站应对高负载和并发的解决方案上有一些…

ISA2006发布内网非80端口网站

一&#xff1a;环境介绍1&#xff1a;内部网络有几个网站需要发布A&#xff1a;[url]http://10.0.0.171[/url]B&#xff1a;[url]http://10.0.0.172[/url]C&#xff1a;[url]http://10.0.0.173:8081[/url]2&#xff1a;内部网络通过ISA2006与外网相连&#xff0c;ISA外网地址是…

门户网站建设方案ppt_停车场整体建设方案(ppt)

交通大脑一体化平台解决方案(ppt)数据大脑运营中心规划方案(ppt)停车大数据平台总体规划方案(ppt)停车场整体规划方案(ppt)5G智慧公交大脑平台方案(ppt)5G中杆路内视频停车解决方案(ppt)AI城市数据大脑平台建设方案(图文)城市数据大脑平台技术规划方案(ppt)城市数据大脑平台演进…

云服务器ecs上能放几个网站,云服务器ecs能放几个站点

云服务器ecs能放几个站点 内容精选换一换对于已安装Cloud-Init/Cloudbase-Init的云服务器&#xff0c;首次执行切换/故障切换操作&#xff0c;或者创建容灾演练后&#xff0c;系统第一次启动时会运行Cloud-Init/Cloudbase-Init&#xff0c;为云服务器重新注入初始化数据&#x…

ArcGIS Server网站发布后地图显示空白的原因之一

一般来说&#xff0c;在地图网站发布后&#xff0c;如果地图区域显示为空白&#xff0c;但可以看到其他控件&#xff0c;可能是因为&#xff1a;1、引用的service运行不正常&#xff1b;2、通过local方式连接而没有添加arcgis identity&#xff1b;3、Web Server机器名中含有下…

WordPress建站指南

WordPress建站指南前言&#xff1a;WordPress是我所见的博客服务程序中最好的了&#xff0c;可以灵活配置出令人难以置信的华丽界面&#xff0c;以及很多新奇有趣的功能&#xff0c;在享受新奇乐趣的同时&#xff0c;学习和分享&#xff0c;实在是人生一大快事。有图有真相&…

mysql5.5.28安装详最后一个步骤时为啥一直转_.NET网站自动化部署

(给DotNet加星标&#xff0c;提升.Net技能)转自&#xff1a;2Jcnblogs.com/jijunjian/p/13781048.html前言又到一年国庆&#xff0c;终于有了难得的几天空闲&#xff0c;计划陪陪媳妇娃子&#xff0c;再把最近阅读的几本相关书总结梳理下。当然&#xff0c;计划总是美好的&…

美团旅游网_类似于美团、携程、飞猪的网站还有哪些?

酒店管理郑叫兽今天给大家分享&#xff1a;虽然酒店行业内部的竞争激烈&#xff0c;但是OTA平台之间的竞争也激烈。市面上&#xff0c;除了携程、艺龙、去哪儿、美团、飞猪等主流平台&#xff0c;京东&#xff0c;滴滴也开始了这方面的业务。于是&#xff0c;ota 酒旅预定这个市…