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

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

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

[复制链接]

1847

主题

1857

帖子

1万

积分

积分
10800
跳转到指定楼层
宣传软件楼主
发表于 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软件常见正则方法集合小结
//适用本文档ES5系统安卓 JavaScript引擎Rhinoconst 字符 = { /** * 匹配查找字符串中的内容 * @param {string} str 需要查找的字符串 * @param {string|RegExp} searchvalue 需要查找的字符串或正则表达式 * @returns {Array|null} 成功:返回包含匹配结果的数组,失败:返回null * @example * // 示例1:查找字符串 * var str = "How are you doing you today?"; * var fgh = 字符.匹配查找(str
群发软件AIWORK类语聊智能聊天机器人带意图识别例子演示
类语聊智能聊天机器人带意图识别例子演示 飞桨智能聊天机器人集成指南示例代码转换为实际可用的智能聊天机器人应用。1. 代码结构说明当前代码包含两个主要模块:HTTP工具模块提供基础的HTTP请求功能,用于与飞桨API进行通信: [*]HTTP工具.创建请求() - 创建HTTP请求实例 [*]HTTP工具.设置请求头(http, headers) - 设置HTTP请求头 [*]HTTP工具.POST请求(url, data, headers) - 发送POST请求并处理响应 智能聊天机器人模块实现
群发软件AIWROK软件时间方法集合小结
AIWROK软件时间方法集合小结//适用本文档ES5系统安卓 JavaScript引擎Rhinoconst 时间 = { /** * 获取当前时间戳 * @returns {number} 返回当前的时间戳(毫秒) * @example * var timestamp = 时间.当前时间戳(); * printl(timestamp); // 输出类似: 1677649423000 */ 当前时间戳: function() { return Date.now(); }, /** * 格式化时间为指定格式 * @param {Date|number|str
群发软件IOS苹果TabView视图和Horizontal水平布局控件
IOS苹果TabView视图和Horizontal水平布局控件 导航条视图模式可以支持多个页面标签切换案例:创建TAB视图显示视图function show(function fun)参数 func :ui显示以后调用的方法设置tabtab.setTitles(["首页", "关于", "我的"])//关闭视图tab.dismiss()添加子视图tab.addView(tabindex,view)参数tabindex:tab的序号从0开始参数 view:子视图案例Horizontal水平布局控件用于横向放置多个控件案例:
群发软件苹果熟悉layout线性布局和IOS苹果View视图
本帖最后由 群发软件 于 2025-3-27 07:34 编辑 线性布局是垂直或者水平布局类似网格 水平布局 比如就是一行可以放多个控件文本框:按钮:单选框:复选框类似上面这样一行可以放多个控件的就是水平布局垂直布局就是一行只能放一个元素文本框按钮单选复选混合布局,就是水平和垂直嵌套就可以实现复杂的界面例如一个登录界面,先创建一个垂直布局 ,每个垂直布局的每一行再放一个水平布局用户名————————密码————————
群发软件AIWROK软件生成椭圆曲线手势
这段代码定义了一些用于生成和执行贝塞尔曲线手势的函数。具体来说,代码分为以下几个部分: 1随机数生成函数: 这个函数 random(a, b) 使用 rand.randNumber(a, b) 来生成一个在 a 到 b 之间的随机数。不过,在完整的代码中,rand.randNumber 需要是一个已定义的函数或库方法。 2椭圆曲线点生成器: 函数 generateEllipticPoints(a, b, xStart, xEnd, step) 用于根据椭圆曲线的参数 a 和 b,在指定的 x 范围内生成一系列的点。
群发软件AIWROK软件屏幕自动化操作方法汇集
代码的简要说明和一些注意事项: [*]MLKitOcr 文字识别: [*]代码中使用了 MLKitOcr 方法来进行文字识别。'zhs' 和 'zh' 都是中文的识别代码,但通常使用 'zh'。 [*]识别结果通过 getAllString() 方法获取,然后打印出来。 [*]使用完截图后,记得调用 recycle() 方法来释放资源。 [*]截图并压缩: [*]使用 screenShot 方法可以指定截图的尺寸和压缩质量。 [*]检查截图是否成功后再进行后续操作。 [*]计算面
群发软件苹果IOS在IDE中配置AIWork直播插件的详细图文教程
在IDE中配置AIWork直播插件的详细图文教程以下是关于在集成开发环境(IDE)中配置AIWork直播插件的详细步骤说明,帮助您顺利完成设置。第一步:安装IDE1. 下载并安装IDE· 下载安装包:访问官方网站或可信来源下载最新版本的IDE安装包。· 安装步骤:a. 双击安装包文件,按照提示完成安装。b. 安装完成后,重启计算机以确保环境变量生效。· 验证安装:打开IDE,检查是否能正常运行,确保所有组
群发软件AIwok软件苹果IOS手机初始化设置和IOS HTTP接口
配置要求:IDE AIWORK >3.25手机 >= iphone6sIOS版本 >=IOS15(ios15不支持画中画日志,16以上支持)苹果HID硬件必须设置:自动息屏:必须关闭,不然截屏权限会自动关闭蓝牙:必须打开辅助触控:必须打开 (设置->辅助功能->触控->辅助触控->打开)软件安装1.下载tf并安装https://testflight.apple.com/join/1sVURYPb或者扫二维码下载 安装完tf以后 再安装aiwork初始化第一步 硬件连接手机,选择硬件第二步 开启辅助触
群发软件AIWROK软件多线程协作示例代码解析
AIWROK软件多线程协作示例代码解析 详细说明 [*]线程对象创建 [*]使用new thread()创建两个独立线程对象 [*]dataThread用于数据处理,logThread用于日志记录 [*]每个线程有独立的执行上下文和生命周期 [*]数据生成线程 [*]通过runJsCode方法执行匿名函数 [*]使用for循环生成1-5的序列数据 [*]java.lang.Thread.sleep(1000)实现1秒间隔(Rhino引擎特性) [*]线程命名为"数据线程"便于调试识别 [*]日志记录线程
群发软件AiWork软件下载蓝奏云OCR文件到文件夹
这段代码是一个用于从蓝奏云(Lanzou)下载文件的自动化工具脚本,主要基于JavaScript编写,并且是在一个安卓自动化环境中运行的,例如使用AiWork这样的自动化IDE。代码中定义了一个主要的函数downloadLanzouFile,它接受三个参数:文件的URL地址url,保存文件的路径saveFilePath,以及最大重试次数maxRetries(如果未提供,函数默认设置为5次)。代码的主要功能和步骤如下: [*]初始化和配置: [*]定义了蓝奏云的备用域
群发软件setTimeout__方法异步延迟加载函数
这段代码定义了一个简单的任务链,模拟了一个从数据查询到数据处理再到数据保存的流程。代码中使用了runTime.setTimeout来模拟每个任务的执行耗时。以下是代码的详细说明: [*]taskOne函数:这是第一个任务,负责开始数据查询。 [*]使用printl函数打印一条消息,表示任务一即将开始。 [*]使用runTime.setTimeout函数来模拟数据查询的过程,设置的延迟时间为3秒(3000毫秒)。 [*]在3秒后,生成一个模拟数据字符串"查
群发软件floatUI悬浮窗 实用示例合集
floatUI悬浮窗 实用示例合集如何使用 floatUI 创建不同的 UI 组件,并为它们设置点击事件。每个示例都展示了不同的 UI 布局和事件处理逻辑。示例 1: 创建一个带有多个按钮的垂直布局,并为每个按钮设置不同的点击事件var f1 = new floatUI(); f1.loadSXML(` <vertical> <button text="按钮1" id="button1"/> <button text="按钮2" id="button2"/> <button text="按钮3"
群发软件AIWROK软件找图__方法小汇集
方法一:定义图像查找函数 [*]功能:在指定的查找区域内查找与模板图像相似度达到设定值的目标,并自动点击该目标的中心位置。 [*]参数: [*]searchRegion:查找区域的相对坐标,格式为 [x1, y1, x2, y2],其中 (x1, y1) 是左上角坐标,(x2, y2) 是右下角坐标。 [*]templateImage:模板图像的Base64编码字符串。 [*]similarity:相似度阈值,用于判断是否匹配。 [*]流程: [*]获取屏幕截图并转换为Mat格
群发软件awirok软件找色__方法小汇集
群发软件AIWORK 软件全功能 OCR 查找区域功能代码示例
    // 第一个示例:获取屏幕截图并进行 OCR 文字识别(简体中文)var img1 = screen.screenShotFull();var ocr1 = img1.MLKitOcr('zhs');var text1 = ocr1.getAllString();printl(text1);img1.recycle();/*说明:- 这是一个最基本的 OCR 示例。- 使用 MLKitOcr 方法通过简体中文词库识别截图中的文字。- 最终输出识别到的全文本信息。*/// 第二个示例:指定区域内的 OCR 文字识别(中文)var img2 = screen.s
群发软件AiWROK软件里的OpenCV图片分辨率压缩和质量压缩
// 导入必要的Android和OpenCV类importClass(android.graphics.Bitmap);importClass(java.io.File);importClass(org.opencv.core.Core);importClass(org.opencv.core.Mat);importClass(org.opencv.core.Size);importClass(org.opencv.imgproc.Imgproc);// 全屏截图var img = screen.screenShotFull();if (img.isNull()) {printl("截图失败");exit();}// 原始图片信息var originalPath = "/sdcard/original.jpg";img.save(originalP
群发软件定时任务示例:使用 setInterval 和 clearInterval 实现多种功能
1. 倒计时功能var countdownTime = 10; var countdownInterval; function updateCountdown() { if (countdownTime > 0) { console.log("剩余时间: " + countdownTime + "秒"); countdownTime--; } else { clearInterval(countdownInterval); console.log("倒计时结束!"); } }用法启动:startCountdown()停止:stopCountdown()应用场景游戏倒计时、会议提醒、考试计时、烹饪计时等。2. 实时时
群发软件AIWORK软件将数组↔互转字符串
AIWORK软件将数组↔互转字符串1.方法将数组转换为字符串// 定义函数function myFunction() {// 定义一个包含水果名称的数组var fruits = ["Banana", "Orange", "Apple", "Mango"];console.log("原始数组: ", fruits);// 使用 toString 方法将数组转换为字符串var str = fruits.toString();console.log("转换后的字符串: ", str);// 返回转换后的字符串return str;}// 调用函数var result = myFunction();2. 将数组互转字符串/
群发软件Boolean对象构造AIWROK函数深度解析
本类目代码集合:  //第一个,boolean.constructor_函数的引用 // 创建布尔对象 var myBool = new Boolean(true); // 访问构造函数 printl(myBool.constructor); // 输出: function Boolean() { [native code] } // 确认构造函数的类型 printl(myBool.constructor === Boolean); // 输出: true //第二个,boolean.toString___布尔转字符 // 创建一个 Boolean 对象 var boolTrue = new Boolean(true); v
群发软件AIWROK软件随机时间和随机倒计时用法技巧分享
群发软件安卓自动化[auto]大集合第一部
安卓自动化[auto]大集合第一部第一个:back按下回退键auto.back();这个代码示例展示了如何调用一个名为 back() 的函数来返回上一页或执行某种“返回”操作。例子:function demoExample() { // 打印信息表明即将返回上一页 printl("即将返回上一页"); // 使用 auto.back() 返回上一页 auto.back(); } // 调用示例函数 demoExample(); 代码说明:function demoExample() { ... }:定义了一个名
群发软件AIWROK软件随机位置范围点击和范围随机拖动
   /* * 随机位置点击函数 * @param {number} x - 点击位置的百分比 X 坐标 * @param {number} y - 点击位置的百分比 Y 坐标 * @param {number} x范围 - X 坐标的随机范围 * @param {number} y范围 - Y 坐标的随机范围 */ function 随机位置点击(x, y, x范围, y范围) { // 将百分比坐标转成真实坐标 var x1 = screen.percentToWidth(x); var y1 = screen.percentToHeight(y); /
群发软件AIWORK软件FTP完整例子自动链接可以上传可以下载
AIWORK软件FTP完整例子自动链接可以上传可以下载/* 欢迎使用AiWork安卓自动化IDE 帮助文档: http://help.autoapp.net.cn 官方地址: www.aiwork24.com qq群: 743723025 */ // 加载FTP库 // 通过rhino.loadDex方法加载名为"ftp.dex"的Java库文件,该文件包含了用于FTP操作的类 rhino.loadDex(project.getResourcesPath() + "ftp.dex"); // 导入所需的FTP操作类和Java IO包 importClass(org.apache.common
群发软件AWIROK软件:如何实现OCR找字并点击功能?
var img = screen.screenShotFull(); var ocrres = img.paddleOCR(640, [0, 0, 1, 1]); var dect = ocrres.findIncludeText('今日头条'); if (dect != null) { console.log('今日头条'); dect.click(); // 点击检测到的“今日头条”区域 dect.hidClick(); sleep.millisecond(3000); // 暂停3秒 } else { // 找图返回目标数组 var detects = opencv.findImagesEx('图色982357继续安装.cv');
群发软件手机改了分辨率后有误差用公式计算加减还原点击
有的人用改分辩率软件,更改了手机的分辩率,为了让所有手机通用一种点击方法,计算偏差,可以用这段代码实现。两种方法如下:第一种方法:function calculateFunction(inputValue) { function leastSquaresFit(x, y) { var n = x.length; var sumX = 0; var sumY = 0; var sumXY = 0; var sumX2 = 0; for (var i = 0; i < n; i++) { sumX += x;
群发软件原生webview的h5如何跟aiwork交互
原生webview的h5如何跟aiwork交互 原生activity和h5交互案例.zip 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");Str
群发软件AIWORK软件图片二值化封装使用方法说明
群711841924// 引入 Android 和 OpenCV 的类 importPackage(org.opencv.core); importPackage(org.opencv.imgproc); importPackage(org.opencv.android); importClass(android.graphics.Bitmap); function screenshotAndBinarize(width, height, quality, threshold1, threshold2) { // 进行屏幕截图 var bitmap = screen.screenShot(width, height, quality).getBitmap(); // 将 Bitmap 转换为 OpenCV
群发软件使用AIWORK的ADB命令执行: 实现安卓设备的远程命令
第一个例子:开启代理模式判断agent.start()agent.start() 函数用于开启代理模式,需 root 权限,无需参数。此函数执行后会返回一个布尔值:如果成功返回 true,否则返回 false。下面是一个可能的使用例子: // 尝试启动代理模式 let result =agent.start(); printl(result); if (result) { console.log("代理启动成功!"); } else { console.log("代理启动失败,请检查是否具有root权限。"); } 此
群发软件理解Activity:安卓应用中的关键组件
在安卓开发中,Activity 是一个非常重要的组件,主要用于以下几个方面:用户界面展示:每个 Activity 通常代表一个完整的屏幕或界面,用户与应用的交互主要通过 Activity 实现。例如,一个邮件应用可能包含一个显示邮件列表的 Activity,以及另一个用于阅读邮件内容的 Activity。生命周期管理:Activity 有一个生命周期,即创建、启动、恢复、暂停、停止和销毁等状态。开发者可以通过重写
群发软件AIWORK全能图像处理开发指南:从截图采集到OCR识别的全链路实现
1.截取屏幕的全屏截图:var img = screen.screenShotFull(); 这行代码用于截取当前屏幕的全屏截图,并将截图存储在变量img中。2.文字识别,默认语言为中文:var ocr = img.MLKitOcr('zh'); printl(ocr.getJsonString()); 使用MLKitOcr方法对截图img进行文字识别,指定语言为中文’zh’,并将识别结果以JSON字符串形式打印出来。3.获取图片大小(以字节为单位):var size = img.byteSize(); printl('图片大小: ' + size + ' 字
群发软件AIWROK软件中的okHttp上传文件详解
以这个网站为例子https://ocr.wdku.net/我们首先抓包上传的参数通过以上抓包我们分析出 几个关键点第一:上传的url是 https://ocr.wdku.net/upload第二:二进制的参数名字是 file第三:其他参数user,name,from,fileName现在使用okhttp上传方法以此填写参数var http1=new okHttp(); var fromdata= new map()//其他参数使用map格式 fromdata.add("user","default") fromdata.add("name","t019bf9f2ac19af88b0.webp.png_173915
群发软件通过HTTP接口实现屏幕连续点击功能的易语言代码示例
.版本 2 .支持库 eHTTP .程序集 窗口程序集_启动窗口 .子程序 _启动窗口_创建完毕 .子程序 发送HTTP请求 .参数 请求URL, 文本型 .局部变量 响应内容, 文本型 // 创建HTTP请求对象 HTTP请求对象 = HTTP请求 () // 设置请求URL HTTP请求对象.设置URL (请求URL) // 发送GET请求 响应内容 = HTTP请求对象.发送GET () // 显示响应内容(可选) 信息框 (响应内容, #信息图标, “响应内容”) .子程序
群发软件实现AIWork软件开机自动启动且不弹出界面
这个代码的主要作用是,手机一开机就自动不弹界面,自动开始运行脚本,如果你想定时脚本,也是需要先打开脚本的,这个需要自己在主脚本的JS运行才可以// 自启动逻辑if (autoStar == true) { printl("开机自启动"); Import("主脚本.js");} else { // 加载主界面 var win = window.loadUI("主界面.ui"); win.show();}这段代码主要用于设置一个应用程序在开机时是否自动启动。代码逻辑如下: [*]代码首先检查变量 autoS
群发软件AIWORK+图鉴:点选验证码智能识别系统集成指南
详细版:function sendImageToAPI(username, password, typeid) { var url = "http://api.ttshitu.com/predict"; // API地址 // 截取全屏图像并裁剪验证码区域 var img = screen.screenShotFull().cutImagePercent(0.17, 0.412, 0.83, 0.57).toBase64(); // 准备POST请求的数据 var postData = JSON.stringify({ username: username, password: password, typeid: t
群发软件MuMu 模拟器借助 ADB 桥接与 AIWROK 软件成功连接的步骤详解
MuMu模拟器桥接ADB模式连接AIWROK软件教程:他模拟器官方网站:https://mumu.163.com/ 第一步准备工作, 同时开多个模拟器会导致端口冲突,新手先折腾一个,成功后再试多开。 如果之前开过其他模拟器(雷电、夜神等),先全部关掉!先确定你这里只有一个模拟器,因为多个,他可能端口不同的,一个连接上了,其它也能链接上,最好是先一个先折腾着,这样后面就简单了。 然后开启他的网络桥接状态。打开MuMu模拟器 → 点击右上角
群发软件JavaScript中贝塞尔曲线的实现与应用
随机数生成函数 function random(a, b) { return rand.randNumber(a, b); } /** * @param time_ms {number} 执行时间 ms 例如 3000 * @param t {number} 间隔系数 0-1 间, 越小线条线条越圆润,计算量越大, 例如 0.005 * @param pt {number[][]} 控制点坐标的二维数组 例如 [[137,169],[140,283]] */ function bezier(time_ms, t, pt) { var gesture1 = new path(); // 创建一个手势对象 gesture1.se
群发软件键鼠.随机百分比点击方法结合屏幕百分比和随机偏移,实现精准且自然的
第一个,键鼠HID随机点击例子const 键鼠 = {}; 键鼠.点击 = function (x, y) { if (typeof x === "undefined") return false; if (typeof y === "undefined") return false; return hid.click(x, y); } 键鼠.随机点击 = function (x, y, random) { if (typeof x === "undefined") return false; if (typeof y === "undefined") return false; let random_s = random || 10; let x
群发软件应用关闭函数的设计
第一个:定义一个关闭当前窗口的函数// 定义一个关闭当前窗口的函数 function close() { // 本示例创建一个带有一个按钮的窗口,点击按钮关闭当前窗口 // 初始化一个新的活动(窗口) var ac = new activity(); // 加载布局代码,使用 LinearLayout 替换 vertical ac.loadXML(` <LinearLayout> <Button id="button1" text="第一个按钮"/> </LinearLayout>
群发软件多点屏幕颜色检测:10秒内变化监控
群发软件智能链接:在安卓上无缝切换快手与抖音
1.这是一段快手的意图跳转例子// 导入包 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 = "2037335125"; var url = "kwai://prof
群发软件在AIWROK软件中使用OkHttp设置HTTP请求头中的Cookie并输出
群发软件监听广播事件:onBroadcastEvent 方法详解
本帖最后由 群发软件 于 2025-1-16 09:43 编辑 event事件侦听使用 onBroadcastEvent 方法的示例:// 监听广播事件 event.onBroadcastEvent(function(msg) { // 在接收到消息时打印出来 print(msg); }); 说明:onBroadcastEvent 是一个用于监听广播事件的方法。它接收一个函数作为参数,该函数会在事件触发时执行。在这个例子中,当收到消息时,打印该消息。这个示例演示了如何实现一个简单的事件监听
群发软件自动下载与安装:多线程管理指定文件夹APK和图片文件的下载完整性检查
自动下载与安装:多线程管理指定文件夹APK和图片文件的下载完整性检查
群发软件用AiWork如何写出一个一个播放器呢?
用AiWork如何写出一个一个播放器呢? 用软件可以写出一个简易的播放器,专门听歌甚至占用内存极少,极度容易的播放器例子。 传到手机只需要播放就可以了。这个如果您希望从一个MP3列表中逐个播放文件, 您可以先创建一个包含所有MP3文件路径的数组, 然后使用循环或递归的方式来遍历并播放这些文件。这里是一个示例代码,展示了如何实现这一功能: 这段代码首先定义了一个mp3List数组, 包含了您想要播放的M
群发软件蓝奏云-文件下载(2.8.9版本)
群发软件自动留言工具下载
自动留言工具下载,这个软件可以自动评论这四个网站,也是新加新收集回来的,不过这些网站虽然可以匿名评论留言,放网址,放宣传的关键字,但却有一个验证码,这个验证码吧,你整起来是可以识别的,但没有必要,还不如自己对接火眼这些打码网站来的实在,现在人工智能也可以识别验证码了,而且准确率比普通的打码网站更高,甚至可以给出更好的图片修复技术,也算是一个人工智能的一个彻底应用层级吧,有可能 GPT5 后面连视频验证码
群发软件自动网址转换自动提交蜘蛛池软件
自动网址转换自动提交蜘蛛池软件,增加二个标题作为宣传目标的网站,它们可以自动的增加标题作为关键字和宣传联系方式,然后通过微信读书和微软的这个软件搜获功能,将网址转换成宣传链接的地方的,目前这两个网址是有效的,收录快,后面也做了一个蜘蛛池的扔投喂,也就是发着发着,他会自动的去发一个所有网址,然后清空所有网址,每次只有两个作为提交的作用,能达到发外链,投哺蜘蛛池的效果的,也就是这二个现在有效果的,提交
群发软件自动评论网站全自动发帖软件
自动评论网站全自动发帖软件,这个软件增加七个可以自动评论的网站,效果还蛮好的,他们都是相似后台的,有几个还是极高权重的留言网站,打开网址,可能不是直接的发帖顶帖的输入框,但是只要加一个点击发言就可以进去评论了,网站自由度比较高,可以发自己的标题和内容,也可以发一些外链上去,收录都极高,都不用发帖都可以有很高的权重网站,都是这些实际的网址才行,有的同一个网站,收录不一定好,但有的帖子浏览量高,发帖权
群发软件2025新版本自动评论自动提交蜘蛛池软件
自动评论自动提交蜘蛛池软件,今天因为网站过时,更新三个更加时效的网站,他们都可以自动的在收录比较好的帖子增加收录,你可以在这里刷广告,也可以在这些地方刷外链,都可能被秒收录的节奏,这些评论,往往都是他们自己刷了几千万条的外链,刷了几千万条的广告信息留下的繁殖链接区域名,网站收录好才是真的亮眼的地方,打卡一下就可以收录,不记录权重,只看最终的百度收录效果吧,这些网站是实时放一些收录的热门帖子评论效果
群发软件精英乓乒网全自动发布帖子软件下载
精英乓乒网自动发帖软件,这个网站客以久了,居然还可以发帖,吸引来了一群人盯在它的网站进行发帖子,不过现在不论是买号发还是什么号,都给安排上了二个验证码,登陆一个会动的验证,好在登陆成功一次后,后面不用,不过他的发帖一个是回答问题的验证码,一个是会动的验证码,会动的验证码识别率不是很高的,毕境他有时候会截图和会动的那一秒时候进行了切换图片,这样就可能导致截图不成功,这么久了,所有平台对这些会动的验证
群发软件百度贴吧全自动群发软件下载
百度贴吧软件,这个网站发帖是比较难的,但效率可以说全网最高的,所以总是有一种日不落的帝国感觉,三到二头,都会有人拉出来软件跑一跑,这个网站也是蛮折腾的,有时候严格,有时候松驰,导致有的人专靠这个吃饭的,总是有一种吃不到葡萄说葡萄酸的感觉,这个脚本用 POST 把图片上传上去,然后按照自己需要,弄成了图片成文字组合,很明显的软文结构,能上去一遍不被收录也无所谓,一样人气满满的在上面生根发了芽,有委大的人气
群发软件策梅特博客自动发帖工具下载
策梅特博客群发软件,这类博客网站可以用最简单的代码实现自己的博客需求,以前是先流行的,现在只能被当作新手的训练场了,这种博客需要自己购买登陆账号才可以发的,只有一个登陆,一个发帖界面,首页是实时更新的,发什么就实时更新什么,这类网站都有新手保护期,即你前期发什么都容易收录,后面就没有可以发展的条件了,网站发帖快,没有什么阻碍的地方,收录也是实时提交的,他们都开通了后台对接的,所以发帖收录不用另外提
群发软件apipost博客群发软件
apipost博客群发软件,这个网站是 POST 发博客的地方,注册账号要邮箱验证码,注册后想发博客还要手机验证码的,绑定一次后就可以发帖,发帖的时候有一个按住验证码,刚好软件也有这个功能,按住五秒就可以实现过这个验证码的样子,没有啥难度,就是账号可能比较麻烦一些了,软件可以自动登陆账号,然后打开发博文的网页,再按住验证码识别成功后,输入标题内容,群发博客的任务就这样完成了,这个软件可以自动切换账号去发帖,发
群发软件aliexpress产品网站发布宣传软件
aliexpress产品发布软件,这个是外贸产品供应信息发布网站,对于国外的 B2B 网站可能还在发展阶段的,所以网站对于这些还是比较吃香的,aliexpress.com 这个网站是一种分类比较强大的网站了,他们国外的,还是比较注重细节分类的,所以会有很多地方需要调试,不过网站也提供了一 键复制属性的功能,和以前机械网站一样,因为他们分类那种细节都到了螺丝纹度的,如果用属性复制功能,会比较简单,只要改一改标题,图片,和视频就可
群发软件51搜了网发布宣传软件全自动发布帖子软件下载
搜了网资讯产品自动发布软件下载, 这个软件可以自动发产品,产品这里是发家电维修类别的,比较复杂一些有几十个选项要填的,第一次做这个网站,你会感觉到头皮发麻,不知所措,很多下拉什么的都要逐个调试,图片这里还要上传六张图片,不然会出错,发不出去的,第二个选择发帖项是资讯的,以前有验证码,现在全部可以不用验证码自动发帖子,轻轻松松就可以发完导入的所有内容帖子,再也不用填那个计算的验证码了吧,网站收录还是
群发软件抖音图文和视频发布工具下载地址
抖音图文发布和抖音视频自动上传软件,这个软件可以自动上传抖音图片并且附上文字和获取图片的各种各样名称作为标题进行发布,有的人账号似乎拖动不了网页,只好出这个座标点击的版本,这样就不会有啥问题了,他是可以准确定位到上传按钮,并且准确的输入内容作为标签,这样就可以发上去的内容标题带上标签关键字,带上账号切换功能,妥妥的是一个宣传视器,用这个软件发布的视频和图文,基本不会被封号,只要你发的不是太快,发的
群发软件发布宣传软件自动评论留言软件
增加四个评论网站发信息,这里三个网站是一样的,另一个网站比较特别,是一个下载站的评论,还是极少有网站有这么自由的,不过正因为他们秒发秒收录的极致才会被看中选择,一个是鞋袜网站,一个叫懒人计算器网站,一个叫生活养生 70 条,还有一个叫微导航网站,这个网站没有验证码的,全部自由发挥,只要秒发秒显示的,不用审核,另外三个网站也是有三条链接收录比较好,其它自创的收录是不行的,他这些留言网站,只针对收录好的某
群发软件易次元图片发布头条软件
易次元图片发布头条软件,这个网站可以说是动漫不变的话题,他们总是会创作出各种各样的人气话题,所以这个网站收录一直是一个重点关注对象,只是这个网站也是确实管的极度严格的,不管你是在里面创建小组,还是去增加图片相册,或是直接发帖,都有可能被百度收录,这个网站一个号只能发五帖,就自动切换账号了,不过要是出验证码就没有好的法子了,他这个验证码,拖对了也会经常判断你是错的,所以滑动方法是没有问题的,只是人也
群发软件OOKT百科网站发布宣传软件
OOKT百科网站自动发布软件,这种头条新类网站就是以前的 ZBLOG 的模块,这类网站搭建容易,也比较安全,没有什么大的漏洞,主要是简单稳定,只要服务器还可以,几乎不会出什么差错,这个网站也是养熟了,然后出来放号出售的,这类网站做好了后,收录几乎都不会差到哪去,都比较好的百度收录效果,买好账号添加到软件的账号密码列表,导入标题内容自动发帖,这个网站的分类会比较麻烦一些,主要是他这个嵌套的操作代在码有一点编差
群发软件星空社区全自动B2B发帖软件
星空社区全自动B2B发帖软件,这个网站是 B2B 后台的样子,做了二套网站,一个是针对普通网页版本进行发帖的,一套是 POST 后台发帖的形式,这样就可以自动的拥有二种模式,一个是发的快,一种是收录好,有的时候你就像是在这些地方做有用功似的,你把能量传递过去就会得到两种效果,看你怎么选择,有蜘蛛池的时候,当然是用自己的 POST 版本了,要是没有就用普通的版本浪费点电能,一定要传二张以上的图片,图片不要超过 3M 比较好
群发软件鸡病专业网论坛全自动发帖软件
鸡病专业网论坛全自动发帖软件,这是一个发外链的论坛哈,你要把链接放到软件列表的内容 2 和内容 3 已经加上了白底了,正常内容可以放在内容 1 这样就可以做到悄悄进村,打枪的不要了,这个软件是先采集整个版块的网址,放到列表中去,每一次都会有一个大循环,重复操作,为什么要这样弄呢,因为这个脚本只是顶帖用的,没有什么大的效果操作,顶的太快被发现了可能就是一顿乱封号处理了,论坛有点被全部扒下来顶的感觉,发链接不
群发软件gongkong网早自动论坛顶帖软件
gongkong网早自动论坛顶帖软件,现在发帖太多限制了,很多人把目光转到这些大论坛,进行了偷偷发外链,怎么个方法,其实要是你查到了这些人的外链就很明白是怎么弄的,就是把自己的网址,弄成白底颜色这样操作,这样管理员是看不到你发了网址一堆的在下面的,加上现在人都很少有查询的,只要不是很过份,基本都可以发很久,就像现在这个论坛一样,看了很多人都在偷偷的发一些蜘蛛链接在里面,这样就可以造成迷糊的操作了,这个软件
群发软件盐城商务网全自动发布帖子软件
盐城商务网全自动群发软件,这个网站是 B2B 网站来的,买号才可以每天发几百条,要是加上现在的蜘蛛池技术,收录还是很可观的,要是没有蜘蛛池就会收录的极少了,这个软件包有二个功能,一个是 POST 的后台发送,能全自动看不到过程,只有过程日志呈现,另一个是普通的版本,能看到运行过程,第一个脚本是占用资源是比较少的,另一个显示过程的肯定就加载的东西自然就多,网站有五个分类可以发,全部都导入到软件里去了,你只要操
群发软件自动网站评论软件下载地址
后台评论更新五个网站打包,这几个网站只有一个后台是不同的,其余的都是帝国的 CMS 系统,后台和验证码都一样的,网站的验证码都几乎一样,可以用图鉴这个网站打码比较便宜一些,都不需要注册账号,匿名就可以评论,他显示的是 IP 进行的,验证码也可能会打错,不管这个只好按出错率判断了,五个网站,第一个要不肜填写标题,其余几个都要填写标题,标题带联系方式就行了,后面的这四个网站可以填写内容,他们主要不是收录当页,

QQ|( 京ICP备09078825号 )

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

GMT+8, 2025-4-2 08:09 , Processed in 0.325151 second(s), 55 queries .

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

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