WeX5通过Baas服务访问数据库
如何快速理解WeX5中UI2的应用和页面

本篇文章以最简单的hello应用为例,介绍WeX5中UI2前端框架的应用、页面的概念,以及页面的两种编译方式和应用的三种部署方式。
目录1 UI2的应用和页面2 制作一个简单的hello应用3 运行hello应用4 编译和部署hello应用4.1 页面编译方式一4.2 页面编译方式二4.3 UI三种部署运行方式1 UI2的应用和页面启动WeX5 Studio,可以看到模型资源目录下有UI2、Native和Bass三个目录:UI2:包含了所有WebUI的资源(.w、html、js、csss、图片等),为啥叫UI2,因为这是WeX5的第二代Web UI;Native:用作移动app开发;Baas:后端即服务Backend as a Service,为前端展现提供后端服务,例如访问数据库等等。
看上图UI2下的目录,所有的Web资源按目录组织,可以任意多级目录。
system目录包含UI2框架的核心js库、css和组件等资源。
UI2下除system目录之外的第一级目录我们通常称为一个Web应用,比如Demo、takeout就是WeX5自带的综合演示和外卖两个应用。
每个应用由多个页面和相关的资源组成,比如外卖有一个页面(index.w),demo应用就可以看到很多个页面。
开发WeX5的应用,就是利用系统js库、css库和组件编写应用页面(.w)。
页面是UI2的核心,页面是一个相对独立可复用的界面展现和交互单元,它即可作为Web页面独立运行,也可作为一个页面片段嵌入到别的页面运行。
每个页面包括.w、.js和.css 三个同名文件,.w是页面的主文件,.js和.css可以没有。
如果页面有.js和.css文件,.w在编译运行时会自动引入, 不需要手工在.w里链接引用。
比如外卖页面包含index.w、index.js、index.csss三个文件,在浏览器请求index.w时,index.w会自动请求index.js和index.css。
Wex5生成的APP连接扫描枪进行扫码的实现方法

Wex5生成的APP连接扫描枪进行扫码的实现方法一:外设扫描枪型号(测试使用):HoneyWell 1400g连接手机数据线:OTG二、实现原理扫描枪的功能就是阅读条码,然后把它转换为文本字符,转换完成时在文本字符后面增加回车事件(如果你的扫描枪扫描过程中没有回车事件,查阅扫描枪的说明书,找到自动回车设置图。
扫描一遍后即可自动增加回车功能)。
我们在APP中光标定位在输入框,用输入框接收文本字符信息,并利用回车事件触发方法保存扫码结果。
三、实现步骤W文件代码:<?xml version="1.0"encoding="utf-8"?><div xmlns="/1999/xhtml"component="$UI/system/components/justep/window/window"design="device:m;"xid="window"class="window"><div component="$UI/system/components/justep/model/model"xid="model"style="left:18px;top:83px;height:244px;"onLoad="modelLoad"/><div component="$UI/system/components/justep/panel/panel"class="x-panel x-full"xid="panel1"><div class="x-panel-top"xid="top1"><div component="$UI/system/components/justep/titleBar/titleBar" title="扫描枪界面"class="x-titlebar"><div class="x-titlebar-left"><a component="$UI/system/components/justep/button/button" label=""class="btn btn-link btn-only-icon"icon="icon-chevron-left" onClick="backBtnClick"xid="backBtn"><i class="icon-chevron-left"/><span/></a></div><div class="x-titlebar-title">扫描枪界面</div><div class="x-titlebar-right reverse"/></div></div><div class="x-panel-content"xid="content1"><div component="$UI/system/components/justep/row/row"class="x-row"xid="row1"><div class="x-col"xid="col1"><input component="$UI/system/components/justep/input/input" class="form-control"xid="tel"onChange="changeValue"/></div></div></div></div></div>1、页面加载时光标要定位在输入框,调用onLoad方法2、在wex5前端UI界面增加一个输入框,回车事件调用onChange方法Js文件代码:1、页面加载时光标定位在输入框Model.prototype.modelLoad = function(event) {var me = this;var tel = me.getElementByXid('tel');tel.focus();};2、扫码时响应回车事件,保存记录至数据库Model.prototype.changeValue = function(event) {var me = this;var mobilephone = $.trim(p('tel').val());if (mobilephone === "" || mobilephone === null) {return;} else if (mobilephone.length > 11) {me.getElementByXid('tel').value = "";} else {var params = {"mobilephone" : mobilephone};var error = function(msg) {Baas.showError(msg);};var success = function(resultData) {if (resultData == "1") {Common.hintInfo("扫码成功!");me.getElementByXid('tel').value = "";} else {Common.hintErr('扫码失败!');me.getElementByXid('tel').value = "";}};params = Common.addDevice(params);Baas.sendRequest({"url" : "/webservice/parkServer/saveParkRecordInfo1","params" : params,"success" : success,"error" : error});}};。
dbveaver数据结构比对

DBVeaver是一款常用的数据库管理工具,具有数据结构比对功能,可以帮助用户快速准确地比对数据库中的数据结构差异。
数据结构比对是数据库管理中非常重要的一环,它能够帮助我们发现数据库中的变化,并及时进行相应的处理,保证数据库的一致性和完整性。
本文将从以下几个方面介绍DBVeaver的数据结构比对功能:一、DBVeaver数据结构比对的基本原理1. 数据结构比对是指将两个数据库中的表结构、视图结构、索引结构等进行对比,以找出差异并做出相应的处理的过程。
2. DBVeaver利用数据库连接工具来连接不同的数据库,然后通过比对工具来比对数据库中的数据结构,最终生成比对报告,帮助用户了解数据库之间的差异性。
二、DBVeaver数据结构比对的具体操作步骤1. 连接数据库:用户需要通过DBVeaver的连接功能连接到要比对的两个数据库,确保能够访问到数据库中的数据结构信息。
2. 启动数据结构比对功能:在DBVeaver中选择相应的数据库连接,点击数据结构比对按钮,启动比对功能。
3. 选择比对对象:在比对窗口中选择要比对的数据库对象,比如表、视图、索引等。
4. 执行比对:点击执行比对按钮,等待比对结果生成。
5. 查看比对报告:比对完成后,DBVeaver会生成比对报告,用户可以通过报告来查看数据库中的差异、相似和相同之处。
三、DBVeaver数据结构比对的应用场景1. 数据库版本升级:在数据库版本升级过程中,往往需要比对新旧版本之间的数据结构差异,以确保升级后数据库的正常运行。
2. 备份数据一致性检查:对于备份的数据库,我们需要经常检查备份的数据结构与原数据库的数据结构是否一致。
3. 数据库合并:在数据迁移或合并时,需要比对不同数据库中的数据结构,以确保数据的完整性和一致性。
四、DBVeaver数据结构比对功能的优点1. 界面友好:DBVeaver的比对功能操作简单,界面清晰易懂,用户可以直观地了解数据库的差异。
安装部署指南

3.1 SQL Server 2005 .....................................................................................................................................6 3.1.1 SQL Server 2005 安装...................................................................................................................6 3.1.2SQL Server 2005 卸载..................................................................................................................11
大数据华为认证考试(习题卷3)

大数据华为认证考试(习题卷3)第1部分:单项选择题,共51题,每题只有一个正确答案,多选或少选均不得分。
1.[单选题]ElasticSearch 存放所有关键词的地方是()A)字典B)关键词C)词典D)索引答案:C解析:2.[单选题]DWS DN的高可用架构是:( )。
A)主备从架构B)一主多备架构C)两者兼有D)其他答案:A解析:3.[单选题]关于Hive与传统数据仓库的对比,下列描述错误的是:( )。
A)Hive元数据存储独立于数据存储之外,从而解耦合元数据和数据,灵活性高,二传统数据仓库数据应用单一,灵活性低B)Hive基于HDFS存储,理论上存储可以无限扩容,而传统数据仓库存储量有上限C)由于Hive的数据存储在HDFS上,所以可以保证数据的高容错,高可靠D)由于Hive基于大数据平台,所以查询效率比传统数据仓库快答案:D解析:4.[单选题]以下哪种机制使 Flink 能够实现窗口中无序数据的有序处理?()A)检查点B)窗口C)事件时间D)有状态处理答案:C解析:5.[单选题]下面( )不是属性选择度量。
A)ID3 使用的信息增益B)C4.5 使用的增益率C)CART 使用的基尼指数D)NNM 使用的梯度下降答案:D解析:C)HDFSD)DB答案:C解析:7.[单选题]关于FusionInsight HD Streaming的Supervisor描述正确的是:( )。
A)Supervisor负责资源的分配和任务的调度B)Supervisor负责接受Nimbus分配的任务,启动停止属于自己管理的Worker进程C)Supervisor是运行具体处理逻辑的进程D)Supervisor是在Topology中接收数据然后执行处理的组件答案:B解析:8.[单选题]在有N个节点FusionInsight HD集群中部署HBase时、推荐部署( )个H Master进程,( )个Region Server进程。
基于微信企业平台的校园移动OA系统设计与实现

技术与应用APPLICATION编辑 李 真文 / 邵富明基于微信企业平台的校园移动OA 系统设计与实现摘 要:本文以研究移动APP开发和校园OA系统为方向,引入“基于微信企业平台的校园移动OA系统”的设计思路,介绍了如何以移动混合开发框架为核心,利用可执行业务模型驱动设计方法,将微信公众平台企业号开发技术与移动OA技术相结合,构建跨端的业务架构平台的实践做法以及根据系统需求将平台的功能设计为组织权限管理、校务工作管理、学生德育管理、教学教研管理、班主任考核管理、技能竞赛管理六大模块,最终实现了基于微信企业平台的校园移动OA系统,达到轻开发、可重用的效果。
关键词:校园移动OA 微信企业平台 移动混合开发框架 业务模型驱动一、项目概述该项目来源于为广州市技师学院建立的一个基于微信企业平台的校园移动OA 系统。
该系统是以《技工教育“十三五”规划》为依据,以全面推进技工院校信息化建设为目标,面向学校内部员工的服务群体,依托移动业务和便携设备,在移动互联网和移动开发技术的环境下,彻底解决校园信息服务的实时性问题,有效消除校园信息孤岛现象,并为全体教职工提供高效安全、灵活便捷的校园移动办公平台。
该项目开发的动机是在“广州市高级技工学校办公自动化系统”和“广州市高级技工学校微信订阅号”的应用基础上,研究分析校园办公系统的移动业务需求,对微信企业平台和移动OA 进行定制开发,重点解决校园移动办公一体化应用和信息资源灵活整合的问题。
二、核心技术该项目系统的构建主要从业务架构信息系统、移动混合开发框架、微信企业平台三个技术层面进行移动校园OA 系统整体设计,系统开发核心技术包含如下。
1.业务模型体系业务模型体系包含数据模型、流程模型、界面模型、组织模型等四个部分。
业务模型体系能够全面、精确地描述用户需求,具有提升和保障管理软件的能力,能满足管理软件设计的基本规范,是管理软件自动化、质量控制和保障的基础。
2.Justep X5技术框架该项目采用Justep X5业务架构平台(简称X5)进行业务架构信息系统开发,利用其企业级应用开发工具定制设计应用模块,节约项目经济成本,消除企业信息化孤岛。
WeX5的UI部分和传统Web页面开发的差异
WeX5是跨端移动开发框架,BeX5是基于WeX5的企业快速开发平台,它们都采用前后端分离的开发模式,和Web传统的前端页面开发(例如extjs)比较类似,和jsp存在差异。
WeX5、BeX5和Web传统的前端页面开发最大的差异在于,WeX5、BeX5采用了单页模式,实现资源不重复加载:∙由于采用单页模式,X5引入了RequireJS,实现资源异步按需加载,且只加载一次∙作为快速开发工具,X5提供了可视化界面设计器∙作为快速开发工具,对界面常用功能进行封装,实现界面全面组件化这样的UI开发与传统UI开发有哪些不同呢?下面就从页面部分、页面中的数据、js部分、发布等几个方面具体说明。
∙1、页面部分o 1.1、页面加载事件o 1.2、页面关闭事件o 1.3、获取url的参数o 1.4、引用jso 1.5、引用csso 1.6、使用xid而非ido 1.7、获取到input输入框的输入内容o 1.8、页面跳转o 1.9、图片路径 <img src=?>o 1.10、信息提示o 1.11、上传文件o 1.12、详细页面的制作o 1.13、界面控制o 1.14、路由o 1.15、背景图片o 1.16、事件o 1.17、调用actiono 1.18、在前端获得session的值o 1.19、在前端访问全局变量∙2、页面中的数据∙3、js部分o 3.1、全局变量o 3.2、自定义js方法o 3.3、自定义公共js文件o 3.4、获取elemento 3.5、获取jQuery对象o 3.6、创建节点,删除节点o 3.7、增加事件,删除事件∙4、发布o 4.1、设置首页标题o 4.2、更换图标o 4.3、部署到Web 应用服务器1、页面部分1.1、页面加载事件∙传统——window.onload 事件 ∙ X5——model 组件的onload 事件1.2、页面关闭事件∙传统——window.onunload 事件 ∙ X5——model 组件的onunload 事件1.3、获取url 的参数∙ 传统JS ——只有一种参数,就是url 中?后面的参数,从location.href 中截取 ∙JSP ——使用<% String 参数值 = request.getParameter(“参数名”);%>获取 ∙ X5—— 有三种参数,url 中可以显示出来的有两种参数,一种是?后面的参数,另一种是#!后面的JSON 格式的参数,还有一种是url 中不显示的复杂参数。
SpagoBI开源BI平台_安装配置及使用说明v15
U
U
U
U
1.1 SPAGOBI介绍 ........................................................................................................................................... 6
审核日期
批准人 批准日期
第 2 页 共 142 页
SpagoBI-开源 BI 平台软件安装配置与使用说明
目
录
修订记录 .................................................................................................................................................................. 2
[ ] 初稿 [ ] 发布 [ √] 修订
编 撰: 编撰日期: 保密级别: 文档版本:
肖渺 ****-**-** 公开 1.5
【 SpagoBI 开源 BI 平台软件 】 【安装配置与使用说明】
2012 年 09 月
SpagoBI-开源 BI 平台软件安装配置与使用说明
修订记录
版本 0.5 0.6 0.7 0.8
2.2.1 Document配置 ................................................................................................................................... 23
U
U
DVWAXSS(Stored)通关教程
DVWAXSS(Stored)通关教程Stored Cross Site Scripting存储型XSS,持久化,代码是存储在服务器中的,如在个⼈信息或发表⽂章等地⽅,加⼊代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,⽤户访问该页⾯的时候触发代码执⾏。
这种XSS⽐较危险,容易造成蠕⾍,盗窃cookie等。
Low Security LevelDVWA XSS (Stored) 通关教程Web安全 / 2018-03-31 / 1 条评论 / 5,195 viewsStored Cross Site Scripting存储型XSS,持久化,代码是存储在服务器中的,如在个⼈信息或发表⽂章等地⽅,加⼊代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,⽤户访问该页⾯的时候触发代码执⾏。
这种XSS⽐较危险,容易造成蠕⾍,盗窃cookie等。
Low Security Level<?phpif( isset( $_POST[ 'btnSign' ] ) ) {// Get input$message = trim( $_POST[ 'mtxMessage' ] );$name = trim( $_POST[ 'txtName' ] );// Sanitize message input$message = stripslashes( $message );$message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() // Sanitize name input$name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! T // Update database$query = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );";$result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res//mysql_close();}>相关函数介绍trim(string,charlist)函数移除字符串两侧的空⽩字符或其他预定义字符,预定义字符包括\0、\t、\n、\x0B、\r以及空格,可选参数charlist⽀持添加额外需要删除的字符。
dbveaver数据结构比对 -回复
dbveaver数据结构比对-回复DbWaver数据结构比对在现代数据管理中,数据的比对是一个非常重要的任务。
在数据比对过程中,我们需要比较两个不同数据结构之间的差异,并找出其中的共同点和不同点。
DbWaver是一款强大的数据库管理工具,提供了数据结构比对的功能,帮助用户在不同的数据库之间进行结构差异的比较与同步。
在本文中,我们将一步一步回答有关DbWaver数据结构比对的相关问题。
第一步:选择数据库进行比对DbWaver支持多种数据库类型,包括MySQL、Oracle、SQL Server等。
在开始数据比对之前,我们需要选择要比对的两个数据库。
可以是同一类型的不同数据库,也可以是不同类型的数据库。
DbWaver能够根据所选数据库类型自动识别其数据结构。
第二步:比对数据表的结构数据库中最基本的数据组织形式是数据表,因此,在进行数据结构比对时,我们首先需要比较两个数据库中的数据表。
DbWaver能够比较数据表的各个方面,包括表名、字段、索引、约束等。
在比对结果中,我们可以清晰地看到两个数据库之间的差异,例如一个数据库中有而另一个数据库中没有的表,或者字段名、数据类型等不一致的情况。
第三步:比对表中字段的结构数据表中的字段是数据存储的基本单元,因此,在进行数据结构比对时,我们还需要比较两个数据库中表的字段结构。
DbWaver能够比较表中字段的名称、数据类型、长度、精度等属性,并找出其中的差异。
在比对结果中,可以清楚地看到两个数据库之间字段的新增、删除或修改,以及字段属性变化的情况。
第四步:比对表中索引和约束索引和约束是数据库中用于提高查询性能和保持数据一致性的重要机制。
在进行数据结构比对时,我们还需要比较两个数据库中索引和约束的结构。
DbWaver能够比较索引和约束的名称、类型、字段和条件等属性。
在比对结果中,我们可以清楚地看到两个数据库之间索引和约束的新增、删除或修改情况。
第五步:同步数据结构差异数据结构比对不仅能够帮助我们找出数据库之间的差异,还能够提供同步的功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WeX5通过Baas服务访问数据库1案例概述本案例实现了对takeout_order(外卖订单表)表的分页查询、关键字检索和修改保存的能力,数据库表结构参见WeX5自带的mysql数据库。
案例代码分为服务端和客户端两部分:服务端包含一个servlet(com.justep.baas.test.DemoServlet),用于为客户端提供数据查询和数据保存的Web服务;客户端包含一个.w页面(/UI2/demo/baas/simpleData/index.w),页面上的数据集通过ajax请求访问服务端提供的Web服务,实现数据的增删改查。
2服务端2.1导入baas工程1、运行“启动WeX5开发工具.bat”;2、打开Java透视图,选择菜单“窗口-打开透视图-Java”;3、导入baas工程,选择菜单“文件-导入”,选择“常规-现有项目到工作空间中”,“下一步”,“选择根目录-浏览”,选择WeX5目录下“apache-tomcat\webapps\baas”,“完成”。
2.2JNDI数据源配置/baas/META-INF/context.xml<?xml version="1.0"encoding="UTF-8"?><Context reloadable="true"><Resource name="jdbc/takeout"type="javax.sql.DataSource"maxActive="100"maxIdle="30"driverClassName="com.mysql.jdbc.Driver"url="jdbc:mysql://127.0.0.1:3306/takeout"username="root"password="x5"/></Context>注意:Tomcat 6启动时,自动将“/baas/META-INF/context.xml”复制一份到“\apache-tomcat\conf\Catalina\localhost\baas.xml”。
但是当context.xml内容修改后,Tomcat 并不会自动更新。
所以,修改context.xml的内容后,需要手动更新“\apache-tomcat\conf\Catalina\localhost\baas.xml”。
切记!切记!特别注意:由于Tomcat 6的bug(https:///bugzilla/show_bug.cgi?id=44725),不要在Tomcat服务运行时删除“\apache-tomcat\conf\Catalina\localhost\baas.xml”,否则Tomcat会自动删除WEB-INF/web.xml。
2.3Java Servletcom.justep.baas.test.DemoServlet// Servlet入口,通过判断action参数,进入各自对应的实现方法public void service(ServletRequest request, ServletResponse response) throws ServletException {try {String action = request.getParameter("action");if ("queryOrder".equals(action)) {queryOrder(request, response);} else if ("saveOrder".equals(action)) {saveOrder(request, response);}} catch (Exception e) {e.printStackTrace();throw new ServletException(e);}}这里实现了queryOrder和saveOrder两个action。
// 查询订单,实现了分页查询和按检索关键字过滤private static void queryOrder(ServletRequest request, ServletResponse response) throws SQLException, IOException, NamingException {// 参数序列化JSONObject params = (JSONObject) JSONObject.parse(request.getParameter("params"));// 获取参数String columns = params.getString("columns"); // 要返回的数据列Integer limit = params.getInteger("limit"); // 分页查询的行数Integer offset = params.getInteger("offset"); // 分页查询的行偏移String search = params.getString("search"); // 检索关键字// 存放SQL中的参数值List<Object> sqlParams = new ArrayList<Object>();// 存放SQL中的过滤条件List<String> filters = new ArrayList<String>();if (!Util.isEmptyString(search)) {// 增加过滤条件filters.add("fUserName LIKE ? OR fPhoneNumber LIKE ? OR fAddress LIKE ? OR fContent LIKE ?");// 检索关键字中如果没有%,则前后自动加%search = (search.indexOf("%") != -1) ? search : "%" + search + "%";// 增加参数值,参数的个数和顺序必须与过滤条件的?相匹配for (int i = 0; i < 4; i++) {sqlParams.add(search);}}Table table = null;// 获取数据源连接Connection conn = Util.getConnection(DATASOURCE_TAKEOUT);try {// 执行单表数据查询,返回Tabletable = Util.queryData(conn, TABLE_TAKEOUT_ORDER, columns, filters, "fCreateTime DESC", sqlParams, offset, limit);} finally {// 必须关闭数据源连接conn.close();}// 输出Table做为返回结果,这里会自动转换为Table的JSON格式Util.writeTableToResponse(response, table);}private static void saveOrder(ServletRequest request, ServletResponse response) throws ParseException, SQLException, NamingException {// 参数序列化JSONObject params = (JSONObject)JSONObject.parse(request.getParameter("params"));// 获取参数JSONObject data = params.getJSONObject("data"); // 订单数据的JSON格式// JSON转换TableTable table = Transform.jsonToTable(data);// 获取数据源连接Connection conn = Util.getConnection(DATASOURCE_TAKEOUT);try {// 开启事务conn.setAutoCommit(false);try {// 保存TableUtil.saveData(conn, table, TABLE_TAKEOUT_ORDER);// 提交事务mit();} catch (SQLException e) {// 如果发生异常,首先回滚事务,然后把异常继续抛出conn.rollback();throw e;}} finally {// 必须关闭数据源连接conn.close();}}在上面的代码中,大多数都是用来处理参数、数据库连接和事务的代码,核心代码其实只有以下几句:// 执行单表数据查询,返回Tabletable = Util.queryData(conn, TABLE_TAKEOUT_ORDER, columns, filters, "fCreateTime DESC", sqlParams, offset, limit);// 输出Table做为返回结果,这里会自动转换为Table的JSON格式Util.writeTableToResponse(response, table);// JSON转换TableTable table = Transform.jsonToTable(data);2.4 Servlet 配置/baas/WEB-INF/web.xml3 客户端3.1 页面设计/UI2/demo/baas/simpleData/index.w页面上包含一个数据组件orderData ,orderData 的列设置与数据库表takeout_order 的列<servlet><servlet-name>X5 Baas Demo Servlet</servlet-name><servlet-class>com.justep.baas.test.DemoServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>X5 Baas Demo Servlet</servlet-name><url-pattern>/demo</url-pattern> </servlet-mapping> Util.saveData (conn, table, TABLE_TAKEOUT_ORDER );结构相匹配。