信息发布软件,b2b软件,广告发布软件

 找回密码
 立即注册
搜索
查看: 3708|回复: 16
打印 上一主题 下一主题

[『JSP图文教程』] jsp和XML互换角色能使用还是好牛的存在

[复制链接]

1868

主题

1878

帖子

1万

积分

积分
10928
跳转到指定楼层
宣传软件楼主
发表于 2017-7-8 20:34:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

软件教程首图:

软件教程分类:JSP 图文教程 

软件图文教程视频教程分类:软件图文教程 

软件教程难易程度:软件初级教程 

软件教程发布日期:2017-07-08

软件教程关键字:jsp和XML互换角色能使用还是好牛的存在

① 本信息收集于网络,如有不对的地方欢迎联系我纠正!
② 本信息免费收录,不存在价格的问题!
③ 如果您的网站也想这样出现在这里,请您加好友情链接,我当天会审核通过!

④友情链接关键字:软件定制网站 网址:http://www.postbbs.com

软件教程详细描述
本帖最后由 群发软件 于 2017-7-8 20:36 编辑

 使用JavaServer Pages有三种不同的方法用于处理XML文档,每种方法都有利于提高分离页面代码与XML数据的水平,有利于简化开发网页的复杂度并且改善提高组件与页面代码的可重用性。
  JavaServer Pages ( JSP)和XML是Sun的J2EE的两个至关紧要的组件。 JSP是用于创建应用程序服务器端程序的有效工具,而客户可以是一个浏览器,一个设备或其它的应用程序。你可以使用XML描述数据并在联系服务器与系统的其余部分之间传递。如果你仔细考虑Web服务的抽象概念的话,JSP可以被认为是实现技术而XML则是数据封装和消息传送技术。 JSP页面可以通过三种方式使用XML:直接使用XML文件,使用JavaBeans来执行XML处理或者通过标记库使用XML。
  一、直接使用XML
  我们可以在JSP页面中直接使用XML,这要分为三类:
  1. JSP可以读取XML文件并且基于这些数据执行动作。例如:一应用程序可以读取具有某些特定结构的数据的XML文件。
  2. JSP可以创建XML文件以发送数据到客户程序或其它的应用程序。 JSP可以转换XML文件,这个变换可以是交给XSLT处理,由JSP作为控制器,或者通过非XSLT解决方案来完成。在这两种情况下,JSP的作用都是读取XML文件,转换它并生成一个输出。
  因为JSP包含内嵌的Java程序,所以它可以直接地调用一个分析程序来读/写xml数据。 这是非常不合理的方法,因为数据和代码逻辑并不能很好的被分离开。 另外,这样的程序也很难读得懂。 所以,下面我将介绍第二方法:使用JavaBeans。
  二、使用JavaBeans
  JSP可以通过<jsp:usebean>标记与JavaBeans紧密的整合起来。 下面的程序片段示范了如何使用在JSP页面中的一个JavaBean来设置并获取属性。
  <jsp:useBean id="cb" scope="session" class="xmlrep.Customer" />
  <jsp:setProperty name="cb" property="id" value="45" />
  <B> First Name is: </B>
  <%=cb.getFname() %>
  <p>
  <B> Last Name is: .</B>
  <%= cb.getLname() %>

  JSP与JavaBeans整合的特征就是可以自动把超文本标志语言的表单元素翻译成JavaBean属性。 如果有一个HTML表单并且想让它向JavaBean提交表单内容,你可以写下面的代码:
  <jsp:setProperty name="cb" property="*" />
  name属性包含JSP页面已经引用Bean的值。 前面<jsp:useBean>标记设置名称为" cb "。与设置单独的Bean属性不同,你可以使用星号来标志"全部的"属性。 JSP页面自动地映射HTML表单值为同名的Bean属性。如果你读取每个HTML表单元素,然后调用相应属性的Bean设置方法,那么结果也将是相同的。
  可以看到,类XML的标记允许JSP页面访问JavaBeans。 我们通过尽可能多的把封装的代码转变成可重用组件(JavaBeans),就可以把JSP页面中代码优化到最小的程度。你可以使用通用的语法分析程序,像Xerces或者JAXPI,在单独的JavaBeans里与XML文件交互作用--并且你可以在不改动JSP页面的情况下改变分析程序。 此外,Beans还可以使用XSLT来执行XML文件的转换。
  使用JSP和JavaBeans来完成的这些抽象的动作比直接在JSP页面中插入原始的Java程序要好得多,但是你仍然需要熟悉Java程序,以便随时改变JSP页面。应用程序的一致性与条理性依靠JavaBeans合作创建一个统一的输出结果的好坏程度。 例如,Bean中的缺陷可能会造成整个XML输出无效。依靠Beans指定资源的方法,可能同时带来执行性能的问题。
  三、通过标记库JSP与XML交互

  这也就是在前文中重点提到的,但是因为它实在太重要了,所以在本文中我必须也要提到。标记库可以定义出现在JSP页面中的作为类XML元素的自定义标签,可以把特定的Java代码与每个标记都关联起来。 例如,假定你可以访问一个天气情况数据库,而且你需要输出现在的天气状况。那么,你可以在JSP中插入JDBC程序代码直接查询数据库(虽然这并不是一个好的选择),把这些代码封装到一个JavaBean内,或者把它包装成一个标记库。 使用最后一个选择,你的JSP页面内的程序代码看上去就像:
  <%@taglib uri="the TLD file" prefix="foo" %>
  Current weather is <foo:Weather/>

  注意在上述程序代码中看不到任何Java代码的踪迹。 作为一个页面设计人员,你使用一种熟悉的语法就像<foo:weather/>,这些与其它的任何标记看起来非常相似。 在页面中包含现在的天气状况的HTML字符串的地方插入它。
  标记库有一个关联的XML格式的描述符文件,名叫Tag Library Descriptor(标记库描述符,TLD)。 在TLD文件中的每个标记都有一个条目,包括它的名称,版本和其它的任选信息。 在JSP页面内,你可以用" <%@_taglib prefix = " foo " %> "指令指定TLD文件。 属性" prefix "用来指定一个前缀,用来在JSP页面内使用特定的库来引用任何标记。那为什么我们要使用标记<foo:Weather/>而不仅仅是<Weather/>。 TLD文件的精确位置依赖于正在使用的应用程序服务器。
  一个标记库标记可以代替为了完成这段程序逻辑的相应的Java程序代码。每个标记都相当于一个相同名称的Java类。 这个类必须实现TagSupport接口,包含捕获事件触发器方法作为处理这个页面的JSP引擎。当它第一次遇到这个标记的时候,引擎就会调用doStartTag ()方法。 可以使这个方法为空或者当需要的时候才执行应用程序逻辑。当该方法返回SKIP_BODY时,那么引擎跳过这个标记体。 当它返回EVAL_BODY_INCLUDE时,引擎将会处理这个标记以及它的子标记。类似地,JSP引擎在分析了结束标记之后就会调用doEndTag ()方法。 doAfterBody ()方法让你可以在引擎处理元素体之后执行动作,但是必须在doEndTag ()方法作用之前。下面就是实现天气状况的Weather类的一个样本程序代码:
  import javax.servlet.jsp.*;
  import javax.servlet.jsp.tagext.*;
  import java.io.*;
  public class Weather extends TagSupport {
  public int doStartTag() {
  try {
  JspWriter out = pageContext.getOut();
  out.print(" sunny and cloudy mixed with " +
  "rain and sunshine. ");
  } catch (IOException e) {
  System.out.println("Error " + e);
  }
  return (SKIP_BODY);
  }
  }  

  当引擎遇到" <somePrefix:Weather/> "标记的时候,它会在标记库内搜索一个同名的类。如果doStartTag ()方法被实现的话(在本例中是这样的),它就会被调用。 这就使字符串包含适应显示的天气情况。因为方法返回了SKIP_BODY,JSP读取器移动到标记的末尾。
  最简单的使用JSP和标记库的方法就是使用Apache Tomcat引擎。 这个引擎也充当Servlet和JSP应用程序接口的引用实现。
  当使用标记库时,JSP页面看上去就非常像XML文件了。当JSP页面被处理时,引擎执行与标记相关联的程序代码(实际上,首先调用JSP引擎把JSP页面翻译成一个servlet,然后再编译servlet。与标记库相关联的方法都被包含在servlet中。),一个熟悉XML的人就可以设计并使用各种各样的页面布局进行试验,而不必改变任何Java程序代码。当然,代码与数据的分离的程度还是主要依赖标记库元素设计的好坏程度。




如果你访问该页,还可以连接到resource,init.jsp和其它源代码文件
此致
}
 
Two great tastes that taste great together
作者:Alex Chaffee

概览:
XML和JSP是这些日子中最热的东西。本文介绍如何联合这两
种技术来建设动态网站。你还可以同时看一下DOM,XPath,XSL,
和其它Java-XML技术的示例代码。
我们在此假设你已经了解JavaServer Pages(JSP)和Extensible
Markup Language (XML)。但也许你对该如何综合使用它们仍然有些
迷惑。
JSP的应用很容易,你可以用它设计网页,使之看起来似乎和HTML一
样。唯一的不同是JSP是动态执行的。例如,它们可以处理表单form
和读写数据库。
XML的应用的说明则比较困难。似乎所有的产品都支持它,每个人也
好象都以各种不同目的在使用它。
在本文中,你可以看到如何使用一种相当先进的方式用XML来设计一
个系统。许多站点有巨量数据收集并以一种很标准或很不标准的方式
来显示它们。我将设计一个系统,它使用XML文件在web服务器上进行
存储,并用JSP来显示数据。
XML vs 关系型数据库
"等一下!"你可能问,"你用XML文件存储数据吗?为什么不使用数据库?"
这个问题问的很好。我的回答是,对很多目的用途来说,用数据库太
过浪费了。.要使用一个数据库,你必须安装和支持一个分离的服务器
处理进程(a separate server process),它常要求有安装和支持它
的administrator。你必须学习SQL, 并用SQL写查询,然后转换数据,
再返回。而如果你用XML文件存储数据,将可减少额外的服务器的负
荷。还有,你还找到了一个编辑数据的简单方法。你只要使用文本编
辑器,而不必使用复杂的数据库工具。XML文件很容易备份,和朋友共
享,或下载到你的客户端。同样的,你可以方便地通过ftp上载新的
数据到你的站点。
XML还有一个更抽象的优点,即作为层次型的格式比关系型的更好。
它可以用一种很直接的方式来设计数据结构来符合你的需要。你不需
要使用一个实体-关系编辑器,也不需要使你的图表(schema)标准
化。 如果你有一个元素(element)包含了另一个元素,你可以直接
在格式中表示它,而不需要使用表的关联。
注意,在很多应用中,依靠文件系统是不够充分的。如果更新很多,
文件系统会因为同时写入而受到破坏。数据库则通常支持事务处理,
可以应付所发生的请求而不至于损坏。对于复杂的查询统计要有反复
、及时的更新,此时数据库表现都很优秀。当然,关系型数据库还
有很多优点,包括丰富的查询语言,图表化工具,可伸缩性,存取
控制等等。
(注意:你可以使用简单的文件锁定来提供一个事务处理服务器,你还
可以在java中执行一种 XML index-and-search工具,不过这已经是
另外一篇文章的主题了。)
在下面这样的案例中,正如大多数中小规模的、基于发布信息的站
点一样,你可能涉及的大多数数据存取都是读,而不是写,数据虽
然可能很大,但相对来说并没有经常的更新变化,你也不需要做很
复杂的查询,即使你需要做,也将用一个独立的查询工具,那么成
熟的RDBMS的优点消失了,而面向对象型的数据模型的优点则可以得
到体现。
最后,为你的数据库提供一个查询器外壳来进行SQL查询并将他们转
化进入XML stream也是完全有可能的。
所以你可以选择这二种方式之一。XML正变成一种非常健壮的,便于
编程的工具,作为某个成熟的数据库的前端工具来进行存储和查询。
(Oracle的XSQL servlet即是这种技术的一个很好的例子。)
应用篇:一个在线相册
所有人都喜欢照相!他们喜欢展示自己的,亲人的,朋友的,度假
时的照片,而 Web 是他们展示的好地方。-- 即使千里之外的亲戚
都可以看到。我将着重于定义一个单独的Picture对象。(这一应用的
源代码在Resources中可以取得) 。该对象描述了表示一张照片所需
要的字段:title,date,一个可选的标题,以及对图片来源的一个指
向。
一个图象,需要它自己的一些字段:源文件( GIF/JPEG)的定位,宽
度和高度像素(以协助建立<img> 标记。 这里可以看到一个很简单
优点,即使用文件系统来代替数据库的时候,你可以将图形文件存
放在与数据文件相同的目录中。
最后,让我们来用一个元素扩展图片记录,该元素定义了一套缩略
图(thumbnail)来用于内容表或其它地方。这里我用了和先前同样
定义的图片内容。
一张图片的XML表示可以是这样的:
<picture>
<title>Alex On The Beach</title>
<date>1999-08-08</date>
<caption>Trying in vain to get a tan</caption>
<image>
<src>alex-beach.jpg</src>
<width>340</width>
<height>200</height>
</image>
<thumbnails>
<image>
<src>alex-beach-sm.jpg</src>
<width>72</width>
<height>72</height>
</image>
<image>
<src>alex-beach-med.jpg</src>
<width>150</width>
<height>99</height>
</image>
</thumbnails>
</picture>
注意,通过使用XML, 你将一张单独图片的全部信息放到了一个单独
的文件中,而不是将它分散放入3-4个表中。
我们将这称为 .pix file
-- 于是你的文件系统会是这样的:
summer99/alex-beach.pix
summer99/alex-beach.jpg
summer99/alex-beach-sm.jpg
summer99/alex-beach-med.jpg
summer99/alex-snorkeling.pix
etc.
技术篇
俗话说,要剥下猫的皮的方法何止一种。同样,将XML数据放到JSP
中也不止一种办法。这里列举了其中一些方法,(其实,很多其它工
具也可以做得同样出色。)
DOM: 你可以使用类(classes)来调用DOM接口(interface)对XML
文件进行分析检查。
XMLEntryList: 你可以使用我的代码来将XML加载到name-value
pairs 的java.util.List中。
XPath: 你可以使用一个 XPath处理器(如Resin)通过路径名在XML
文件中定位元素。
XSL:你可以使用某种XSL处理器将XML转换成为HTML。
Cocoon: 你可以使用开放源码的Cocoon framework
运行你自己的bean: 你可以写一个外壳类(wrapper class),使用某
种其它技术来将数据加载到字定义的JavaBean中。
请注意这些技术将和一个你从另外来源取得的XML stream执行得同样
出色,例如一个客户端或者一个应用服务器。
JavaServer Pages
JSP规范有很多替身,不同的JSP产品表现也不尽相同,不同版本之间
也有差别。我选择了Tomcat,这基于以下原因:
它支持大多数最新的JSP/servlet规范
它受到 Sun和Apache认同
你可以独立运行它而不需要另外配置一个Web服务器。
它是开放源码的
你可以选择任何你喜欢的JSP引擎,但要自己配置它,它必须至少支
持JSP 1.0规范。0.91和1.0之间有了许多区别。而JSWDK
(Java Server Web Development Kit) 可能刚刚好地适合要求。
JSP结构
当创建一个jsp网站 (Webapp), 我喜欢将公用的函数、导入、常量、
变量声明都放入到一个单独的文件init.jsp中。 然后用
<%@include file="init.jsp"%>加载到每一个文件中去。
<%@include%> 就象C语言的 #include, include在编译时使其中的
文本作为一个部分被加入并一起进行编译,相对地, <jsp:include>
标记则是使其中的文件被独立地进行编译,然后在文件中嵌入一个对
它的调用。
查找文件
当JSP启动时,初始化后第一件事情就是查找你要的XML文件。它是怎
么知道在众多文件中你要找的是哪一个? 它来自与一个参数,使用者
会在调用jsp的URL中加入参数: picture.jsp?file=summer99/alex-beach.pix
(或者通过HTML表单来传递文件参数)。
但是,当JSP接受此参数以后,你仍然只完成了一半工作,因为还要
知道文件系统的根目录在哪里。例如,在Unix系统中,实际文件可能
在这样的路径:
/home/alex/public_html/pictures/summer99/alex-beach.pix。
JSP文件在执行状态时没有当前路径概念。所以你为java.io包要给出
一个绝对路径。
Servlet API可以提供一个方法来将一个URL路径,从相对于当前JSP
或Servlet的路径转化成为一个绝对的文件系统路径。方法是:
ServletContext.getRealPath(String)。
每一个JSP有一个叫做application的 ServletContext对象。所以代
码可以是:
String picturefile =
application.getRealPath("/" + request.getParameter("file"));
或者
String picturefile =
getServletContext().getRealPath("/" + request.getParameter("file"));
它也可以在servlet中工作。(你必须加上 / 因为此方法需要传递request.getPathInfo
()的结果。)
这里有一个重要的提示:每当你存取本地的资源,要非常小心地检查输入数据的合法性

黑客或者粗心的用户,可能发送伪造的或错误的数据来破坏你的站
点。例如,请想一下以下的表达会发生什么结果:
如果输入了file=../../../../etc/passwd。这样用户回读到你的
服务器的password文件!
DOM (Document Object Model)
DOM 代表文档对象模型Document Object Model。它是浏览XML文档
的一种标准API,由World Wide Web Consortium (W3C)发展。 接口
在org.w3c.dom包中,文档参见W3C站点。
有许多可用的DOM分析器工具。我选择了 IBM的XML4J。但你可以使用
任何其它的DOM分析器。这是因为DOM是一套接口,而不是类 --所有的
DOM分析器(parser)必须返回同样地处理这些接口的对象。
遗憾的是,虽然很标准,DOM还是有两大缺陷:
1 API虽然也是面向对象的,还是相当笨重。
DOM parser并没有标准的API,所以, 当每一个分析器返回一
个org.w3c.dom对象,文档对象--分析器初始化和文件自身加载的方
式,对应于不同分析器通常总是特定的。
这个简单的上面已描述的图片文件在DOM中可以在一个树结构中通
过一些对象表示如下:
Document Node
--> Element Node "picture"
--> Text Node "/n " (whitespace)
--> Element Node "title"
--> Text Node "Alex On The Beach"
--> Element Node "date"
--> ... etc.
为了取得“Alex On The Beach”,你要做一些方法调用,游历DOM
树,而且,分析器可能选择分散“whitespace”文本nodes的一些数
据,你不得不使用循环和串联等 (你可以通过调用normalize()来
纠正这个问题。)分析器可能还包含了分离的XML实体(如 &),
CDATA nodes或者其它实体nodes (如<b>big<b>会被变成至少三个
node。也没有办法在DOM中简单表示"get me the text value of
the title element." 总之,在DOM中游历有一点笨重。(参见本文
用XPath取代DOM章节。)
2 从更高处看,DOM的问题是XML对象无法象Java对象一样可以直接得
到,它们需要通过 DOM API一个一个地得到。
你可以参考我的为Java-XML Data Binding技术讨论做的一些归纳,
那里也用了这种直接使用Java的方法来存取XML数据。
我写了一个小的工具类,叫做DOMUtils,包含了静态方法来执行公用
的DOM任务。例如,要获得根(图片)元素的title子元素的文本内
容,你可以编写如下代码:
Document doc = DOMUtils.xml4jParse(picturefile);
Element nodeRoot = doc.getDocumentElement();
Node nodeTitle = DOMUtils.getChild(nodeRoot, "title");
String title = (nodeTitle == null) ? null : DOMUtils.getTextValue(nodeTitle)
;
得到image子元素的值也同样直接:
Node nodeImage = DOMUtils.getChild(nodeRoot, "image");
Node nodeSrc = DOMUtils.getChild(nodeImage, "src");
String src = DOMUtils.getTextValue(nodeSrc);
等等。
一旦你需要将Java变量用于每一个相关的元素,你必须做的是将变
量嵌入到 HTML 标记中去:
<table bgcolor="#FFFFFF" border="0" cellspacing="0" cellpadding="5">
<tr>
<td align="center" valign="center">
<img src="<%=src%>" width="<%=width%>" height="<%=height%>" border="0" alt="
<%=src%>"></td>
</tr>
</table>
用JSP bean进行model/view分离
所有上面的picture-dom.jsp代码是很不吸引人的。虽然你可以在jsp中加入上万条
java代码,但这样就没有使用JSP JavaBeans方法看上去来得简单。
javabean存放了大量Java代码,并在JSP脚本中加以调用。
为了制作一个模型,将所有java代码放在JSP中来开始一个项目,这样
相对比较简单。一旦有什么新的想法可以直接回去展开代码,然后改写
为一些JavaBeans。虽然投资较高,但长远来看回报更好,因为你的应
用更为模型化。 你可以在多个页面中重复使用bean而不用担心剪贴带
来的不良后果。
在我们的案例中,一个典型的JSP JavaBean是从XML中展开字符串。
你可以定义Picture, Image和Thumbnails类,来表示主要的XML文件
中的元素。 这些beans带有构造器constructors或者setter方法,它
们从展开值中带入一个DOM node或一个文件名。你可以参
考picturebeans包或picture-beans.jsp.
在看代码时请注意以下几点:
* 我将接口的定义独立于类的执行,这样你可以很自由地选择在将来
进行替代,你可以将值存放在一个List中,或者在DOM自身,甚至可
以在数据库中。
* bean在一个自定义的包中被定义--picturebeans。所有JSP bean必
须要在某一个包中。大多数JSP引擎都不能从缺省包中发现类。
* 除了get方法,我也提供了set方法,当前你只是读取,但在将来,
你要让用户编辑图片,所以你要规划用语修改写入属性的功能。
* <%=picture.getCaption()%>取代了 <%=caption%>, 因为值是存放
在一个bean中而不是本地变量中。但是,如果你需要,你可以将本地
变量定义为
String caption = picture.getCaption(); 这也是允许的,这可以使
代码更容易阅读和理解。
 
* 通过thumbnails放大缩小
你可能已经注意到我的第一个的 JSP的输出, picture-dom.html,
使用了全部大小的源图片文件。我们可以稍微修改一下代码,使它显
示一个缩略图,我将把缩略图列表存放在XML数据文件中。
让我们定义一个参数,zoom,它的值决定了要显示哪一个缩略图。点
击这个缩略图后回显示全部大小的图片;点击Zoom In或Zoom Out按钮
将选择列表中下/上一种缩略图。
* 由于缩略图对象返回一个Image对象的java.util.List,所以要找到
正确的缩略图并不容易,如果用(Image)picture.getThumbnails().get(i)的话。
* 要制作Zoom In和 Zoom Out连接,你必须建立一个对同一页面的递归的引用,但
使用不同的参数。为了做到这一点,你要使用request.getRequestURI()方法。这
只为你提供了该servlet的路径,没有参数,所以你可以在此补上你要的参数。
<%
if (zoom < (thumbnails.size() -1)) {
out.print("<a href='" +
request.getRequestURI() +
"?file=" + request.getParameter("file") +
"&zoom=" + (zoom+1) +
"'>");
out.print("Zoom In</a>");
}
%>
这里是一个HTML的屏幕拷贝。
http://www.javaworld.com/jw-03-2000/jspxml/picture-dom.html
使用JSP bean
JSP规范定义了 <jsp:useBean>标记来自动实例化和使用JavaBeans。useBean标记可以总

被嵌入的Java代码取代,这里我也是这么做的。也是由于这样的原因
人们有时质问使用 useBean 和setProperty标记还有什么必要。这种
做法的优点是:
标记语法有利于HTML设计者独立工作。
useBean有一个scope参数,可以自动地决定bean是否必须存储为一个
本地变量,一个 session变量或一个application属性。
如果这个变量是持久的(session或application),useBean必要时可以
将它初始化,并切在它确实存在的时候才去取得变量。
长远看标记对今后的JSP规范版本来说更为便携(portable)或者更
改执行(例如,, 一个假定的JSP引擎在一个数据库中存储了变量,或
者跨服务器共享数据。)
这个应用中对应的useBean语句为:
<jsp:useBean id="picture" scope="request" class="picturebeans.DOMPicture">
<%
Document doc = DOMUtils.xml4jParse(picturefile);
Element nodeRoot = doc.getDocumentElement();
nodeRoot.normalize();
picture.setNode(nodeRoot);
%>
</jsp:useBean>
或者,如果你在DOMBean中定义一个setFile(String)方法:
<jsp:useBean id="picture" scope="request" class="picturebeans.DOMPicture">
<jsp:setProperty name="picture" property="file" value="<%=picturefile%>"/>
</jsp:useBean>
使用XMLEntryList
为了克服DOM APIs的一些不足,我创建了一个类,叫做XMLEntryList。这个类
执行了 Java Collections接口java.util.List,以及java.util.Map的
get和put方法,它提供了一套更直观的方法来在一个简单的XML树结构
中往返移动。你可以使用Collections API的标准抽象(abstraction)来
进行象获得 迭代或子视图等。在EntryList的每一个入口都有一个键
key和一个值,就象Map一样;键就是子结点(child nodes)的名字
而值要么是字符串,要么是下一级(child)XMLEntryLists。
XMLEntryList并不意味着可以完全代替DOM。它还无法执行某些DOM的
功能。但是,它是一个方便的外壳(wrapper)在你的XML数据结构上
用于执行基本的getting, setting和 list-oriented 功能。例如,
你可以使用这样的写法来得到图片node的caption元素:
String caption = (String)picturelist.get("caption");
caption字段的值早已被作为一个字符串分析和存储了。
缓存 Caching
尽管有很多优点,分析一个XML文件总是需要耗费时间。为了改进基
于XML的应用的性能,你需要使用某种缓存技术。这种缓存必须在内存
中保存XML对象,记住它们来自哪一个文件。如果对象被加载以后文件
被修改了,那么对象需要重新加载。我开发过一个用于这种数据结构
的简单方法,叫做CachedFS.java。你可以供给一个CachedFS 调用返
回功能(function),使用实际执行xml分析的内部类,将文件转为一
个对象。cache于是可以在内存中存储那个对象。
这里是创建cache的代码,这一对象有application scope,所以此后的
请求可以使用同一对象cache。我将把这些代码放到init.jsp,这样你
就不必将这些初始化的代码剪贴到其他JSP文件中去了。总之,你必须
在一个公共的地方定义application-scope对象。
<jsp:useBean id="cache" class="com.purpletech.io.CachedFS" scope="applicatio
n">
<% cache.setRoot(application.getRealPath("/"));
cache.setLoader( new CachedFS.Loader() {
// load in a single Picture file
public Object process(String path, InputStream in) throws IOException
{
try {
Document doc = DOMUtils.xml4jParse
(new BufferedReader(new InputStreamReader(in)));
Element nodeRoot = doc.getDocumentElement();
nodeRoot.normalize();
Picture picture = new DOMPicture(nodeRoot);
return picture;
}
catch (XMLException e) {
e.printStackTrace();
throw new IOException(e.getMessage());
}
}
});
%>
</jsp:useBean>
XPath
XPath在XML tree中是一个简单的用于定位node的语法。它比 DOM更
容易使用,因
当你要转入另一个node时不必每次都要产生方法调用,你可以把整
个路径嵌入到一个字符串中去,例如:
/picture/thumbnails/image[2].
Resin产品包含了一个XPath处理器,你可以将它加入到自己的应用
中去。你可以使用 Caucho XPath对象加载于其自身,不必购买Resin
体系的其它产品。
Node verse = XPath.find("chapter/verse", node);
Resin也包含有一个脚本语言,与JavaScript兼容,允许在jsp中对
XPath和XSL的简单存取。
XSL
这篇文章讨论了在JSP中嵌入Java来从XML node中展开数据。完成做同
样工作还可以有另外一种常见的模型:Extensible Stylesheet Language (XSL)。
这一模型和JSP模型有着根本的不同。在JSP中,主要内容是HTML,它包含了
一些Java代码片段;而在XSL中,主要内容是XSL文档,它包含了一些
HTML片段。如果要讨论XSL和 Java/JSP之间的关系,这里的空间已经
不够了。在JavaWorld杂志中将有一篇文章来探讨如何同时使用XSL和
JSP。
目前的结论和未来的发展之路
在读完这篇文章后,相信你应该有了一个JSP-XML应用及其强大威力
的很好的思路及结构认识。然而你也要知道一些它的局限。
开发JSP-XML应用中最令人烦闷的是为每一个 XML schema中的元素
element创建JavaBean。XML Data Binding 组织正在开发一种技术,
可以为每一个给定的schema自动生成Java类。同样的,我也开发了
一种原型-开放源码的Java-XML data binding技术。另外,IBM
alphaWorks最近也推出了XML Master, 或称为XMas,这是另一
种XML-Java data binding系统。
另外一种可能性是扩展文件系统的功能,建立一些更加强大的功能,
如查询和事务处理。自然地,我也开始期望这种功能类型也可以作为
开放源码工程来得到发展。那么,有没有谁愿意写一个XML搜索引擎



untoJSP打造更完美的WEB系统也不是不可能的事吧next很好用的中国制药网自动信息发布软件
回复

使用道具 举报

0

主题

978

帖子

980

积分

积分
980
信息发布软件沙发
发表于 2017-7-13 03:24:55 | 只看该作者
蛋和18号笨蛋的工号,态度很好很细心很赞

回复 支持 反对

使用道具 举报

0

主题

660

帖子

654

积分

积分
654
推广工具板凳
发表于 2017-7-20 01:22:41 | 只看该作者
,设计非常符合我的初衷。售后服务非常不错,这个我很放心,而且首页设计的比我原先的店铺好很多很多,真的是很满

回复 支持 反对

使用道具 举报

0

主题

1023

帖子

1034

积分

积分
1034
软件定制开发地板
发表于 2017-7-20 03:08:18 | 只看该作者
按照我的意思做的,中间改了几次,最后很满意,店家费心了,下次再来

回复 支持 反对

使用道具 举报

1

主题

2204

帖子

565

积分

积分
565
5#定制软件#
发表于 2017-7-26 19:54:32 | 只看该作者
家,技术经验都很精湛,物超所值,值得推荐!

回复 支持 反对

使用道具 举报

0

主题

577

帖子

559

积分

积分
559
6#定制软件#
发表于 2017-7-27 05:02:22 | 只看该作者
好,服务也很好,下次一定还找你们做,谢谢,非常满意

回复 支持 反对

使用道具 举报

0

主题

661

帖子

669

积分

积分
669
7#定制软件#
发表于 2017-7-28 13:39:29 | 只看该作者
错的购物,客服很细心、热情,对我提的所有问题都耐心回答,一步一步教我操作,让我们能够很顺利地完成这次购物。售后培训也很耐心,以后还会来的。

回复 支持 反对

使用道具 举报

0

主题

653

帖子

594

积分

积分
594
8#定制软件#
发表于 2017-7-30 22:58:29 | 只看该作者
不错,和卖家描述的一样,值得入手,好评

回复 支持 反对

使用道具 举报

0

主题

632

帖子

628

积分

积分
628
9#定制软件#
发表于 2017-7-31 04:29:05 | 只看该作者
情的服务态度点个赞!下次有需要还会来!~

回复 支持 反对

使用道具 举报

0

主题

652

帖子

686

积分

积分
686
10#定制软件#
发表于 2017-8-1 05:22:23 | 只看该作者
。几天就做好了。很满意!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读
信息发布软件AIWROK苹果IOS线条类[Line]复杂示例
AIWROK苹果IOS线条类[Line]复杂示例
信息发布软件AIWROK软件苹果IOS线条实作简单示例
AIWROK软件苹果IOS线条实作简单示例
信息发布软件AIWROK软件IOS苹果线条类[Line]方法小结
AIWROK软件IOS苹果线条类[Line]方法小结 . 线条宽度设置方法2. 线条高度设置方法3. 线条颜色设置方法实用演示例子:
信息发布软件AIWROK软件苹果IOS吐司toast.show方法小结
AIWROK软件苹果IOS吐司toast.show方法小结 实例呈现:
信息发布软件AIWROK软件苹果IOS系统图色视觉[opencv]方法小结
AIWROK软件苹果IOS系统图色视觉[opencv]方法小结 方法 1:OCR 识别(指定区域)方法 2:获取图像 Base64 编码方法 3:获取 Mat 对象方法 4:Mat 转 Image方法 5:Base64 转 Image方法 6:读取图片文件为 Image方法 7:释放图像资源实战示例子:
信息发布软件AIWROK软件苹果IOS系统图色视觉[opencv]方法小结
AIWROK软件苹果IOS系统图色视觉[opencv]方法小结 方法 1:cv 文件找图(模版匹配 cv 找图)方法 2:cv 文件 OCR(模版匹配 OCR)方法 3:模版匹配(通过模版匹配找到目标对象)方法 4:找多图方法 5:转灰度图(图像转灰度图)方法 6:裁切图片(从大图中截图裁切图片)方法 7:二值化方法 8:颜色翻转实战实例:
信息发布软件AIWROK软件苹果IOS系统随机数[RJrxn1afZqW7yjf2NK]方法小结
AIWROK软件随机数[RJrxn1afZqW7yjf2NK]方法小结 📌GQGqcAlZv2随机字符📌WBJqf91s7J随机整数📌LtUqFOGkc6随机小数📌随机布尔值生成函数📌随机数组元素选择函数使用示例表 📌随机日期使用示例表使用示例表使用示例表📌随机UUID生成函数函数说明表使用示例表📌随机密码 / 验证码随机密码 / 验证码生成函数及使用说明[/backcolor]函数说明表[/backcolor]使用示例表[/back
信息发布软件AIWROK软件苹果系统里的事件[event]方法小结
AIWROK软件苹果系统里的事件[event]方法小结 方法 1:截屏开始方法 2:截屏暂停方法 3:截屏恢复实战示例:
信息发布软件AWIROK苹果系统屏幕类[screen]方法小结
AWIROK苹果系统屏幕类[screen]方法小结 方法 1:lockScreen(锁定屏幕缓存)方法 2:unLockScreen(解锁锁屏幕缓存)方法 3:isOpenShortcut(是否开启快照截屏)方法 4:getScreenWidth(获取屏幕宽度)方法 5:getScreenHeight(获取屏幕高度)方法 6:ocr(识别支持设定区域)方法 7:screenShot(截图缩放,记得调用 close 释放图像)方法 8:screenShotFull(全尺寸截图,记得调用 close 释放图像)实战实例子:单独 OCR
信息发布软件AIWROK软无任何苹果IOS系统配置[config]方法小结
AIWROK软无任何苹果IOS系统配置[config]方法小结 getConfig 获取配置📌setConfig设置配置实际示例:
信息发布软件AIWROK软件安卓日志窗口[logWindow]方法小结总汇集合
AIWROK软件安卓日志窗口[logWindow]方法小结总汇集合 clear 清理日志📌close关闭日志窗口📌setAlpha设置透明度📌setClickModel设置可点模式,就是无法穿透桌面📌setColor设置日志字体颜色📌setDrag设置为手动拖拽模式setHeight设置高度📌setNoClickModel设置为不可点,穿透桌面📌setPosition设置位置📌setSize设置日志字体大小setTitle设置标题📌setWidth 设置
信息发布软件AIWROK安卓类日志类[print]方法小结总汇集合
AIWROK安卓类日志类方法小结总汇集合 print.log:输出调试 / 日志信息2. print.err:输出错误信息3. print.time:启动计时4. print.timeEnd:结束计时并返回时长5. print.warn:输出警告信息完整的示例:
信息发布软件AIWROK软件苹果IOS快捷指令代理服务[shortAgent]方法小结
AIWROK软件苹果IOS快捷指令代理服务[shortAgent]方法小结 openApp启动app📌appopenUrl打开网址或者Scheme📌openSelf自启动📌screenShot代理截屏📌getTopApp 获取顶端app(I0S18+)特别示例:
信息发布软件AIWROK系统安卓找字OCR___方法小结总汇集合
AIWROK系统安卓找字OCR___方法小结总汇集合 findIncludeText查询包含文字🔍🔢findIncludeTexts查询包含文字多目标🔍🔢findSimilarText模糊查询🔍🔢findText查询文字🔍🔢getAllDetect 获取所有目标🔍🔢getAllString 获取所有字符串🔍🔢getJson 获取json对象🔍🔢getJsonString 获取json字符串🔍🔢MLKitOcr文字
信息发布软件AIWROK软件toast_显示方法小结
AIWROK软件toast_显示方法小结 toast.setAlpha___设置透明度toast.setPoint___设置位置toast.setSize___设置字号toast.setTextColor___设置文字颜色toast.showLong___显示长吐司toast.show___显示吐司特别案例:示例二:示例三倒计时到指定时间并显示剩余时间(红色文字):
信息发布软件AIWROK软件苹果系统方法快捷指令[shortcut]方法小结
AIWROK软件苹果系统方法快捷指令[shortcut]方法小结 openApp启动app(需要前台运行)📌openUrl打开网页(需要前台运行)📌runShortcut打开快捷指令(需要前台运行)
信息发布软件AIWROK软件苹果IOS矩形类[rect]方法小结
AIWROK软件苹果IOS矩形类[rect]方法小结 getLeft 获取左边界📌getRight获取右边界📌getTop获取上边界📌getBottom 获取下边界📌getWidth 获取宽度📌getHeight 获取高度📌getCenterX 获取中心X坐标📌getCenterY 获取中心Y坐标📌inRect 判断点是否在矩形内📌set设置矩形的边界📌toString输出字符串📌getRandX生成随机X坐标📌getRandY生成随
信息发布软件AIWROK软件IOS系统里脚本项目[project]方法小结
AIWROK软件IOS系统里脚本项目方法小结 📌getCodePath 获取代码完整目录📌getPluginsPath 获取插件完整目录📌getResourcesPath 获取资源完整目录📌getCard 获取卡密📌getVersion 获取脚本版本调用示例代码:
信息发布软件IOS功能苹果AIWROK软件剪贴板类[clipboard]方法小结
IOS功能苹果AIWROK软件剪贴板类[clipboard]方法小结 copyToClipboard 复制到剪贴板📌copyToClipboardPIP复制到剪贴板📌readFromClipboard 从剪贴板读取示例方法实用:
信息发布软件AIWROK软件IOS苹果系统检测目标类[Detect]方法方法小结
AIWROK软件IOS苹果系统检测目标类[Detect]方法方法小结 📌score 获取检测分数📌getRect 获取检测区域📌clickRandom随机点击📌click点击示例演示:
信息发布软件AIWROK苹果IOS系统里的打印[print]方法小结
AIWROK苹果IOS系统里的打印方法小结 📌now返回本次脚本运行所有日志📌last 返回上次脚本运行所有日志📌showPip 显示画中画,必须前台📌hidePip 隐藏画中画,必须前台log日志📌log日志📌warn警告err 错误📌debug 调试简写printl示例方法演示:
信息发布软件AIWROK软件超多功能越全HID小结方法大放送
AIWROK软件超多功能越全HID小结方法大放送 ⌨️📌back:back 键⌨️📌backspace 键盘back删除键⌨️📌click:点击坐标⌨️📌clickPercent:点击百分比坐标⌨️📌clicks:连续点击⌨️📌clicksV2:连续点击 v2(可设置按下时长)⌨️📌connetBLE:连接蓝牙 HID(必须先完成配对)⌨
信息发布软件AIWROK软件苹果找图YoloV5目标检测[YoloV5]方法小结
AIWROK软件苹果找图YoloV5目标检测[YoloV5]方法小结 📌detectPercent预测📌loadModel 加载模型📌close释放模型
信息发布软件&#128241;⌨️最全的AIWROK软件安卓 HID方法集合小结A
信息发布软件示例苹果IOS系统简单展示一下H5界面AIWORK WebView 示例
示例苹果IOS系统简单展示一下H5界面AIWORK WebView 示例
信息发布软件用AIWROK软件IOS苹果系统创建一个黄色主题风格的 WebView 示例H5
用AIWROK软件IOS苹果系统创建一个黄色主题风格的 WebView 示例H5printl('//🍎交流QQ群711841924');// 创建一个黄色主题风格的 WebView 示例function createYellowThemedWebViewExample() { // 创建 WebView 实例 var web = new WebView(); // 显示界面 web.show(); // 加载黄色主题风格的 HTML 内容 web.loadHtml(`<!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UT
信息发布软件苹果创建一个蓝色主题风格的 WebView 示例H5
苹果创建一个蓝色主题风格的 WebView 示例H5 演示了如何创建和操作 WebView 控件。代码中使用了注释的方式避免了实际的 URL 加载和界面关闭,以确保安全性和功能性。以下是代码的详细说明: function createYellowThemedWebViewExample() {...}:定义了一个名为 createYellowThemedWebViewExample 的函数,用于创建一个带有黄色主题风格的 WebView 示例。var web = new WebView();:创建了一个新的 WebView 实例。web.show()
信息发布软件AIWROK软件苹果IOS控件[WebView]方法小结
AIWROK软件苹果IOS控件[WebView]方法小结 📌show显示界面📌loadFile 加载本地文件📌loadHtml 加载 HTML内容📌dismiss关闭界面📌loadUrl加载网页URL完整演示例子:
信息发布软件AIWROK苹果部分功能UI-水平容器[Horizontal]方法小结
AIWROK苹果部分功能UI-水平容器[Horizontal]方法小结 📌addView添加子控件📌removeView移除视图📌clearAllViews清空所有视图📌getViewCount 获取视图数量📌setSpacing设置控件间距📌setBackgroundColor设置背景颜色📌setAlignment 设置对齐方式示例子 1 风格:示例风格 2:
信息发布软件AIWROK软件苹果IOS里的UI-输入框类[Input]方法小结
AIWROK软件苹果IOS里的UI-输入框类方法小结 📌setText 设置输入框文本📌getText 获取输入框文本 📌setlD设置控件ID📌setDefultText 设置默认值📌setTextColor设置文本颜色📌setFontSize设置字体大小📌setBackgroundColor 设置背景颜色📌setWidth设置输入框宽度📌setHeight 设置输入框高度📌setPlaceholder 设置占位符文本📌setTextAlignment 设
信息发布软件AIWROK软件苹果IOS系统Ul-空白站位[Space]方法小结
AIWROK软件苹果IOS系统Ul-空白站位[Space]方法小结 📌setHeight设置高度📌setWidth设置宽度📌setBackgroundColor 设置背景颜色完整示例:
信息发布软件AIWROK软件苹果IOS系统里UI-界面视图[IOSView]方法小结
苹果IOS系统里UI-界面视图方法小结 📌show显示界面📌dismiss关闭📌UIaddView添加📌getView获取view视图📌setBackgroundColor 设置背景颜色完整示例:
信息发布软件&#128296;UI-复选框类[CheckBox]方法小结
🔨UI-复选框类[CheckBox]方法小结📌setText 设置复选框标题📌getText 获取复选框标题📌setID设置控件ID📌setDefultSelect 设置默认值📌select选中复选框📌deselect取消选中复选框📌isSelect获取选中状态📌setColor设置复选框颜色 📌setWidth 设置控件宽度📌setHeight 设置控件高度📌onClick 按钮点击事件示例完整例子:
信息发布软件AIWROK软件IOS系统里的UI-标签类[Label]方法小结
AIWROK软件IOS系统里的UI-标签类[Label]方法小结 📌setText设置标签文本📌setTextColor 设置文本颜色📌setBackgroundColor设置背景颜色📌setFontSize设置字体大小📌setWidth 设置标签宽度📌setHeight设置标签高度📌setTextAlignment设置文本对齐方式完整示例方法例子:
信息发布软件AIWROK软件IOS苹果Ul-垂直容器[Vertical]方法小结
AIWROK软件IOS苹果Ul-垂直容器[Vertical]方法小结//方法小结,交流QQ群711841924//第一个方法:addView添加子控件var label = new Label();label.setText("Hello World");//第二个方法:removeView移除视图var v = new Vertical();v.removeView(0); // 移除第一个子控件//第三个方法:clearAllViews清空所有视图var v = new Vertical();v.clearAllViews(); // 清空所有控件//第四个方法:getViewCount 获取视图数量var v = new Ver
信息发布软件&#128296;AIWROK软件苹果系统UI-按钮[ Button]方法小结
🔨AIWROK软件苹果系统UI-按钮[ Button]方法小结//UI-按钮[ Button]方法小结,交流QQ群711841924// 方法一:setText 设置按钮标题var btn = new Button();btn.setText("点击我");// 方法二:getText 获取按钮标题var btn = new Button();string title = btn.getText();// 方法三:setColor设置按钮颜色var btn = new Button();btn.setColor(50, 100, 150); // 设置按钮颜色为RGB(50, 100, 150)// 方法四:setTextColor 设置
信息发布软件txt文件读写[txt]方法和UI-TAB界面视图[TabView]小结
txt文件读写[txt]方法和UI-TAB界面视图[TabView]小结//UI-TAB界面视图[TabView]方法小结,交流QQ群711841924 // 方法一:show显示界面 //申请一个UI var tab = new TabView(); tab.setTitels(['首页','关于']) vc.show(() => { //页面加载完后执行以下代码 printl("hello IOS") //创建一个水平容器 var h = new Horizontal() //创建一个按钮 var btn = new Butt
信息发布软件TomatoOCR文字识别[tomatoOCR]方法小结[OCR]
TomatoOCR文字识别[tomatoOCR]方法小结[OCR]
信息发布软件苹果系统OCR文字识别和OkHttp 网络请求管理
苹果系统OCR文字识别和OkHttp 网络请求管理
信息发布软件iosApp管理小结和苹果Ocr识别结果小结
iosApp管理小结和苹果Ocr识别结果小结
信息发布软件苹果IOS系统专用AIWROK软件HID键鼠模块小结
苹果IOS系统专用AIWROK软件HID键鼠模块小结
信息发布软件AIWROK软件IOS贝塞尔曲线
AIWROK软件IOS贝塞尔曲线 hid.moveToRealPoint(333, 1146);:这行代码指示设备(可能是模拟器或自动化测试工具)的hid(Human Interface Device)模块将操作点移动到屏幕上的坐标点(333, 1146)。这个点被定义为曲线的起点。sleep.second(1);:在移动到起点后,程序会暂停1秒钟。这是为了让设备有足够的时间到达起点位置,确保后续操作的准确性。接下来的几行代码定义了贝塞尔曲线的参数:startX 和 startY 定义了曲线的起点。en
信息发布软件AIWROK软件调用多任务随机倒计时函数
AIWROK软件调用多任务随机倒计时函数 代码逐行解释function 多任务随机倒计时(minSeconds, maxSeconds, 任务列表) {定义一个名为 多任务随机倒计时 的函数,该函数接受三个参数:minSeconds:倒计时的最小秒数。maxSeconds:倒计时的最大秒数。任务列表:一个包含多个任务对象的数组,每个任务对象都有一个任务名称和一个任务函数。 var randomInterval = Math.floor(Math.random() * (maxSeconds - minSeconds + 1) + mi
信息发布软件AIWROK软件对接豆包实例分享
AIWROK软件对接豆包实例分享 解释总结:创建一个新的 okHttp 对象实例:var http = new okHttp();创建了一个新的 okHttp 对象实例,并将其赋值给变量 http。okHttp 是一个用于发送 HTTP 请求的库。设置 HTTP 请求头:var aa = uiText.findByID("gd").getText();通过 uiText.findByID 方法找到 ID 为 “gd” 的控件,并获取其文本内容,赋值给变量 aa。uiText.findByID 是一个用于在用户界面上查找特定 ID 的控件的方法,getText
信息发布软件屏幕操作自动化随机点击与滑动函数示例
x和y是百分比形式的屏幕坐标,用于指定点击的大致位置。x范围和y范围定义了在指定坐标点附近点击的随机范围。function 随机位置点击(x, y, x范围, y范围) {定义了一个名为随机位置点击的函数,该函数接受四个参数:x、y、x范围、y范围。 // 将百分比坐标转成真实坐标 var x1 = screen.percentToWidth(x); var y1 = screen.percentToHeight(y);这里将百分比形式的x和y坐标转换为实际屏幕上的像素坐标。screen.percentT
信息发布软件aiwrok软件如何获取getRealPointRGB 获取真实坐标RGB?
getRealPointRGB 获取真实坐标RGB,为什么叫真实坐标 RGB?// 截屏 var img = screen.screenShotFull(); // 定义目标 RGB 值(假设目标图标的 RGB 值为 [255, 0, 0]) var targetRgb = [255, 0, 0]; // 遍历屏幕某区域(例如 [100, 100] 到 [300, 300]),查找目标 RGB 值 var startX = 100; var startY = 100; var endX = 300; var endY = 300; for (var x = startX; x <= endX; x++) { for (var y = start
信息发布软件AIWROK软件京东广告后台意图跳转方法
// 导入包 importClass(Packages.android.content.Intent); importClass(Packages.android.net.Uri); importClass(Packages.android.content.ActivityNotFoundException); importClass(Packages.android.widget.Toast); importClass(Packages.android.os.Handler); importClass(Packages.android.os.Looper); // 设置京东用户页面的URL var userId = "京东用户ID"; // 请替换为实际用户ID var url = "openapp.jdmobile:
信息发布软件AIWROK软件意图跳转支付宝的用户ID打开支付宝用户页面
AIWROK软件意图跳转支付宝的用户ID打开支付宝用户页面importClass(Packages.android.content.Intent); importClass(Packages.android.net.Uri); importClass(Packages.android.content.ActivityNotFoundException); importClass(Packages.android.widget.Toast); importClass(Packages.android.os.Handler); importClass(Packages.android.os.Looper); // 设置支付宝用户页面的URL var userId = "支付宝用户ID"; // 请替
信息发布软件AIWROK软件的对像怎么打印出来呢?
AIWROK软件的对像怎么打印出来呢?对像怎么打印出来呢?// 官方QQ群 711841924 var 手机 = { 手机品牌: "小米", 手机型号: "小米15", 手机颜色: "黑色", 手机产地: "广东" }; // 获取当前时间 var currentTime = new Date().toLocaleTimeString('zh-CN', { hour12: false, hour: '2-digit', minute: '2-digit', second: '2-digit' }); // 自定义打印格式 printl("[" + currentTime + "] #10 【Nativ
信息发布软件AIWROK软件QQ特殊意图跳转
AIWROK软件QQ特殊意图跳转 这段代码的功能是尝试通过安卓设备上的QQ应用展示指定QQ用户的个人资料卡片。如果设备上没有安装QQ应用,则会提示用户并转而通过浏览器打开该用户的QQ空间网页。以下是代码的逐行说明: // 导入包:这只是对接下来几行导入安卓类库的一个注释说明。importClass(Packages.android.content.Intent);:导入安卓Intent类,用于在不同组件之间进行交互,比如从一个应用跳转到另一个应用。importClass(Pack
信息发布软件微信广告意图跳转
微信广告意图跳转// AWIROK软件官方群号711841924// 导入包importClass(Packages.android.content.Intent);importClass(Packages.android.net.Uri);importClass(Packages.android.content.ActivityNotFoundException);importClass(Packages.android.widget.Toast);importClass(Packages.android.os.Handler);importClass(Packages.android.os.Looper);// 设置微信用户页面的URLvar userId = "微信用户ID"; // 请替换为实际用户IDva
信息发布软件AIWROK软件微博意图跳转代码分享
AIWROK软件微博意图跳转代码分享 这段代码的主要功能是尝试在安卓设备上通过微博应用的URL Scheme跳转到指定微博用户的个人页面。如果设备上没有安装微博应用,则会提示用户并尝试通过网页链接打开该用户的微博个人页面。具体解释如下:导入包:首先,代码通过importClass方法导入了一些安卓开发中常用的类。这些类的功能包括:Intent:用于在不同组件之间进行交互,比如启动活动、发送广播等。Uri:表示统一资源标识符,通常
信息发布软件AIWROK软件无障碍获取当前activity地址
AIWROK软件无障碍获取当前activity地址无障碍获取当前activity地址:getCurrentActivity() 是一个方法,其作用是无障礙获取当前活动地址。以下是对其用法的详细分析:方法名称名称:getCurrentActivity()解释:get:表示这是一个获取数据的方法。CurrentActivity:表示获取当前活动(Activity)的地址或其他相关信息。作用:这个方法的作用是获取当前活动的地址,且不会出现障碍(例如无需额外传参或依赖其他复杂逻辑)。返回值返
信息发布软件loadDex 加载插件和TomatoOCR实例演示
说明:可以使用安卓studio 开发出apk,jar,或者dex使用此方法加载模块,注意:插件直接放到插件文件夹中然后上传到手机英文方法: loadDex(plugin),加载插件到系统参数:plugin:插件名称例如导入的插件为 p1.dex,则参数名就填写 loadPlugin(‘p1.dex’)案例://导入dex模块 rhino.loadDex('p1.dex') //导入apk模块 rhino.loadDex('demo.apk')importClass 导入插件中的类方法说明:通过这个方法可以导入插件里编写好的类英文方法:imp
信息发布软件AIWROK软件根据文本和类名查找并点击第一个Facebook节点
根据文本和类名查找并点击第一个Facebook节点展示了如何根据不同的条件使用auto.nodeSearch来查找和点击节点。示例1:根据文本和类名查找并点击第一个Facebook节点// 查找所有文本为 "Facebook" 且类名为 "android.widget.TextView" 的节点 var nodes = auto.nodeSearch(3000).text("Facebook").className("android.widget.TextView"); // 获取找到的第一个节点 var node = nodes.getNode(0); // 点击该节点 node.click()
信息发布软件AIWROK软件字符串大小写转换 字符串大小写转换使用函数
字符串大小写转换 字符串大小写转换使用函数let originalString = "Hello, World!"; let mixedCaseString = originalString.toUpperCase().toLowerCase(); // 实际上是多余的,因为结果和原始字符串的小写形式相同 console.log(mixedCaseString); // 输出: hello, world! // 条件转换示例 function toggleCase(str) { return str === str.toUpperCase() ? str.toLowerCase() : str.toUpperCase(); }
信息发布软件苹果IOS中的HID文件接口文档
苹果IOS中的HID文件接口文档ios操作方法connet连接手机http://192.168.0.112:81/connetscreenshot截屏接口ios屏幕截屏可以指定截屏后的图像尺寸参数:width:宽度height:高度http://192.168.0.112:81/screenshot?width=720&height=1280&compress=100getScreenWidth获取屏幕宽度参数:http://192.168.0.112:81/getScreenWidth鼠标操作方法click点击屏幕真实坐标参数:x:横坐标y:纵坐标http://192.168.0.112:81/click?x=500&y=500
信息发布软件H5调用app和保存配置
本帖最后由 信息发布软件 于 2025-6-27 09:26 编辑 void runJs(function code)h5执行app JS脚本window.at.runJs(function (){ //这里写ATjs代码 printl("你好"); auto.home(); }.toString());void runJsFile(String file) H5运行APP JS文件window.at.runJsFile('主脚本.js');void callFunction(String funname,String arg) H5执行脚本方法window.at.callFun('main',"hello");String getRootPath() 获取项目根
信息发布软件AIWROK软件HID物理按键对应码和组合键用法
本帖最后由 信息发布软件 于 2025-6-26 06:21 编辑 hid.keyPress(0,keycode.A());//在光标后面输入aa//方法1hid.keyPress(0,keycode.Enter());//亮屏//方法2hid.keyPress(0,0x07);//唤醒屏亮屏hid.keyPress(0,0x66);//息屏,关屏HID 键码表功能键按键名称HID 码(十进制)HID 码(十六进制)ESC410x29F1580x3AF2590x3BF3600x3CF4610x3DF5620x3EF6630x3FF7640x40F8650x41F9660x42F10670x43F11680x44F12690x45Backspace420x2ATab430
信息发布软件AIWROK软件里IOS提前复制内容按组进行下标调用
AIWROK软件里IOS提前复制内容按组进行下标调用由于iOS系统采用的是单线程运行机制,这意味着它无法像多线程系统那样在后台同时处理多个任务。因此,在复制操作时,您无法在后台直接复制内容,而是需要通过弹出窗口来完成复制粘贴功能。这种操作方式虽然安全,但在一定程度上会影响操作效率。为了提升工作效率,您可以采用以下方法:提前复制内容:在需要频繁使用某些固定内容时,可以提前将这些内容复制到剪贴板,以便后续快速调用
信息发布软件AIWROK软件里IOS系统如何自动存储和读取配置UI输入框
AIWROK软件里IOS系统如何自动存储和读取配置UI输入框 这段代码是使用AiWork安卓自动化IDE编写的,主要功能是在iOS设备上创建一个包含输入框、单选框和复选框的视图,并实现这些控件的状态保存和值的获取。下面是对代码的详细说明: [*]var vc = new IOSView();:创建一个新的iOS视图对象vc,用于在iOS设备上显示控件。 [*]vc.show(() => { ... });:调用show方法显示视图,并在回调函数中添加控件和设置它们的行
信息发布软件AIWROK软件IOS如何使用webview 实现 h5界面ui加载html代码
AIWROK软件IOS如何使用webview 实现 h5界面ui加载html代码var web = new WebView()web.show();web.loadHtml(`<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>WKWebView JS to Swift</title> <style> body { font-family: -apple-system, BlinkMacSystemFont, sans
信息发布软件AWIROK软件编辑器自定义右键菜单
function setupEditorActions(editor) { // 定义 addAction 函数 function addAction(label, order, textToInsert) { // 添加自定义右键菜单项的逻辑 } // 定义 UIControl 函数 function UIControl(label, order) { // 添加自定义右键菜单项的逻辑 } // 调用 UIControl 函数以添加 "控件调用" 右键菜单项 UIControl('控件调用', 0); // 调用 addAction 函数以添加 "if..."
信息发布软件用AIWROK软件写入表格并读取WROK文件方法
四种不同的方法来处理二维数组数据,并将其保存为CSV或DOCX格式的文件,或者从DOCX文件中读取内容。以下是每种方法的详细说明:第一个方法:原始二维数组,按列保存// 官方交流群711841924 // 第一个方法,原始二维数组,按列保存 var 表格数据 = [ ["1", "110", "130"], // 第一行数据 ["其他数据1", "其他数据2", "其他数据3"], // 第二行数据 ]; // 将二维数组转换为 CSV 格式字符串 var csv数据 = 表格数据
信息发布软件AIWROK软件IOS系统里如何实现ocr识别屏幕文字
AIWROK软件IOS系统里如何实现ocr识别屏幕文字最简单的ocr识别//截图 var img = screen.screenShotFull(); //ocr识别 var ocrres=img.ocr(0, 0, 1, 1) printl(ocrres) //释放内存 否则会内存泄漏 img.close(); 先对图像进行处理后再ocr识别 解决部分文字不准问题//截屏并转成mat格式 var img = screen.screenShotFull(); var mat = img.getMat(); //二值化 opencv.threshold(mat,50,200) //printl(mat) //转成im

QQ|( 京ICP备09078825号 )

本网站信息发布软件,是可以发布论坛,发送信息到各大博客,各大b2b软件自动发布,好不夸张的说:只要手工能发在电脑打开IE能发的网站,用这个宣传软件就可以仿制动作,进行推送发到您想发送的B2B网站或是信息发布平台上,不管是后台,还是前台,都可以进行最方便的广告发布,这个广告发布软件,可以按月购买,还可以试用软件,对网站的验证码也可以完全自动对信息发布,让客户自动找上门,使企业轻松实现b2b发布,这个信息发布软件,均是本站原创正版开发,拥有正版的血统,想要新功能,欢迎提意见给我,一好的分类信息群发软件在手,舍我其谁。QQ896757558

GMT+8, 2025-9-17 03:14 , Processed in 0.242193 second(s), 55 queries .

宣传软件--信息发布软件--b2b软件广告发布软件

快速回复 返回顶部 返回列表