温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

JSP标记学习笔记 (转)

发布时间:2020-08-05 11:35:16 来源:ITPUB博客 阅读:65 作者:worldblog 栏目:编程语言
JSP标记学习笔记 (转)[@more@] 

JSP标记学习笔记XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

ginkou.fly  2002-9-18

1.  概述

1)  什么是JSP标记

顾名思义,JSP标记就是在JSP文件中使用的标记。它类似于html语法中的标记,像head 、table 。通过在JSP文件中引用它(就像使用html标记那样),可以更方便的实现对Java 代码模块的重用。

2)  为什么要使用JSP 标记技术(与javabean相比)

好处:

J JSP 标记可以处理JSP正文的内容,比如改变文本显示样式;而javabean不可以。

J JSP标记接口简单,易于使用,也易于开发和维护。

坏处:

L JSP标记在进行设置时要比javabean复杂很多,体现在JSP标记库描述文件(*.tld)的配置上。

L JSP标记实现的功能远不如javabean强大。

L 当前只要JSP1.1支持JSP标记,而JSP1.0和1.1都支持对Bean的使用。

2.  JSP标记的开发简介。

JSP标记的开发需要编写2种独立的文件。一种是定义标记功能的java类文件,一种是将xml元素名称(标记)映射到标记实现的标记库描述符文件。

⑴ 编写标记处理程序类文件

需要继承javax.servlet.jsp.tagext.TagSupport类;

简单示例:

//文件名ExampleTag.java

import javax.servlet.jsp.*;

import javax.servlet.jsp.tagext.*;

import java.io.*;

 public class ExampleTag extends TagSupport {

  //程序的执行起始点

    public int doStartTag() { 

  try {

    JspWriter out=pageContext.getOut();

    out.print(“Custom tag example”);

  }catch (IOException ioe) {

    System.out.println(“Error in ExampleTag : “ + ioe);

  }

    return(SKIP_BODY);

  //当标记包括的内容为空时返回SKIP_BODY,表示标记功能

  //已执行完成

  }

}

  编译好的class文件将位于服务器的的特定位置。

⑵ 编写标记库描述符文件

将标记名和其代表的功能实现联系在一起。

  简单示例:

  <!--文件名:csajsp-taglib.tld-->

 

PUBLIC “-//Sun Microsystem,Inc.//DTD JSP Tag Library 1.1//EN”

J2EE/dtds/web-jsptaglibrary_1_1.dtd">http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd>

//以上是标准的文件头

//以下是标签库描述

1.0 //Tag 库的版本

1.1 //Jsp 库的版本

csajsp//自定义标记前缀名

//标记描述符文件的uri,可以是空

My custom tag! //标记库的描述信息

//以下定义新标记

  example //自定义的标记名

  tags.ExampleTag//定位标签处理类文件

Simplest example//描述信息

EMPTY // 不处理Jsp文件正文内容

此文件将配置在服务器的特定位置

⑶ 使用以上自定义的标记

<!--文件名:simpleExample.jsp-->

<%@ taglib uri = “csajsp-taglib.tld” prefix = “csajsp” %> //进行标记使用声明

<csajsp:example /><TITLE></P> <P><LINK REL=STYLESHEET HREF=”JSP-styles.css”</P> <P>   TYPE=”text/css”></P> <P><HEAD></P> <P><BODY></P> <P><H1><B><csajsp:example /></B><H1> /使用标记</P> <P><B><csajsp:example /></B></P> <P></BODY></P> <P></HTML></P> <P>这样最终在在浏览器上输出为</P> <P>  Custom tag example</P> <P>3.  深入的JSP标记开发</P> <P>⑴ 添加标记属性</P> <P>在标记处理类中可以通过函数setAttribute(String value) 为jsp标记分配属性,这样标记处理程序根据获取的属性值来实现相关功能。</P> <P>比如 private String message = “Default Message”;</P> <P>public void setMessage(String message) {</P> <P>  this.message=message;</P> <P>  }</P> <P><B>注意</B>:属性名message是小写的,设置函数中的Message是大写的。</P> <P>◆与之相关的在tld文件中需要在tag元素中添加如下元素</P> <P><tag></P> <P></P> <P><name>message</name> //属性名</P> <P><required>false</requied> //属性值是否必须提供。False表示不必,存在缺省值。</P> <P><rtexprvalue>true</rtexprvalue></P> <P>//ture表示属性值可以使用jsp表达式,false表示禁</P> <P>//止使用</P> <P></attribute></P> <P></tag></P> <P>◆对应jsp文件中引用为:<prefix : name message = “ Hello!” /></P> <P>⑵ 使用标记正文</P> <P> 即是在标记中使用一些包含jsp脚本元素、文本等的内容,这些内容由jsp引擎处理。</P> <P> 形式如下:</P> <P> <prefix : tagname> body(正文内容) <prefix : tagname></P> <P> 在处理jsp标记的正文前,将会调用处理程序的doStartTag()方法,此时要在此方法中返回EVAL_BODY_INCLUDE 以表明包含有标记正文;处理完后,将会调用doEndTag()方法,此后要让jsp引擎继续处理后面的页面,得返回EVAL_PAGE,否则返回SKIP_PAGE。</P> <P> ◆对应在tld文件中需要在tag元素中添加如下元素</P> <P> <tag></P> <P> …</P> <P> <bodycontent>JSP</bodycontent> //表明包含正文</P> <P> …</P> <P> </tag></P> <P> 另外:可以设置一些条件来判断是否包含正文的,如下:</P> <P> public int doStartTag() {</P> <P>    ServletRequest request = pageContext.getRequest();</P> <P>  String debugFlag = request .getParameter(“debug”);</P> <P>  If ((debugFlag!=null) && (!debugFlag.equalsIgnoreCase(“false”))) {</P> <P>    Return (EVAL_BODY_INCLUDE);</P> <P>  }</P> <P>  else {</P> <P>    return(SKIP_BODY);</P> <P>  }</P> <P>  }</P> <P>这样只有在url尾部给出请求参数值debug = true,才会显示标记正文的内容。这样可以隐藏一些调试信息。</P> <P>⑶ 对标记正文进行处理</P> <P>  jsp的标记可以对包含的正文进行处理(修改),然后再输出。这需要标记处理类继承BodyTagSupport类(TagSupport类的继承)。这个类提供了2个重要的方法用于正文处理。</P> <P>  → doAfterBody:默认执行的方法,在此方法中包含正文的处理过程。</P> <P>→ getBodyContent:返回BodyContent类型的的对象,此对象包含了有关标记正文的信息。</P> <P> BodyContent类型包含的重要方法:</P> <P>→ getEnclosingWriter:返回JspWriter方法,输出内容。</P> <P>→ getString:返回包含全部jsp标记正文的字符串。</P> <P><B>注意</B>:这里和⑵中介绍的输出jsp标记正文的方式不一样。前者的输出是先由jsp引擎解释,这里是在jsp标记处理程序中直接输出到给浏览器。</P> <P>另外,在doAferBody中返回SKIP_BODY,表示终止标记正文处理;若返回的是EVAL_BODY_TAG,将会再一次调用doAferBody方法,重新处理标记正文,直到返回SKIP_BODY为止。</P> <P>示例:</P> <P>→标记处理程序片:</P> <P>//下面的程序片将调用一个filter方法,此方法用于把jsp正文中的字符< > “ & 分别用⁢  >  &guot;  &来代替。以使浏览器按字符原样输出,不进行解释。</P> <P>public class FillterTag extends BodyTagSupport {</P> <P>  public  int doAfterBody() {</P> <P>    BodyContent body=getBodyContent();</P> <P>  String filteredbody=ServletUtilities.filter(body.getString()); //将正文得到的字符串过滤</P> <P>  Try {</P> <P>    JspWriter out=body.getEnclosingWriter();</P> <P>out.print(filteredBody); //输出过滤后的文本</P> <P>}catch(IOException ioe) {</P> <P>  System.out.println(“Error in FilterTag: “ + ioe);</P> <P>}</P> <P>return(SKIP_BODY); //终止jsp正文处理</P> <P>  }</P> <P>→标记符描述文件片</P> <P>  …</P> <P>  <tag></P> <P>  <name>filter</name></P> <P>  <tagclass>tags.FilterTag</tagclass></P> <P>  <bodycontent>JSP</bodycontent></P> <P>  </tag></P> <P>  …</P> <P>→jsp文件片</P> <P>  <csajsp:filter></P> <P>  <STRONG>I love you!</STRONG><BR></P> <P>  <EM>I love you!<EM></P> <P>  </csajsp:filter></P> <P>  这样,在浏览器中输出的标记正文应当是</P> <P><STRONG>I love you!</STRONG><BR></P> <P><EM>I love you!<EM></P> <P> 而不是</P> <P><B> I love you!</B></P> <P><I> I love you!</I></P> <P><I> </I> ⑶使用jsp嵌套标记。</P> <P>  可以对多个JSP标记进行嵌套引用,这样子标记就可以访问和存储父标记的数据和方法。</P> <P>   子标记访问父标记需要使用BodyTagSupport类中的 findAccetorWithClass方法。注意它只能查找临近的父标记。</P> <P>  假如在jsp文件中如下的嵌套引用:</P> <P>  <!- - 此嵌套标记模拟条件判断- -></P> <P>  <csajsp:if></P> <P>  <csajsp:condition>true</csajsp:condition></P> <P>  <csajsp:then>Condition was true</csajsp:then></P> <P>  <csajsp:else>Condition was false</csajsp:else></P> <P>  </csajsp:if></P> <P>  相应的标记处理程序片:</P> <P>  →对于if标记,执行类如下:</P> <P>  public class IfTag extends TagSupport {</P> <P>    private boolean condition ;</P> <P>  private Boolean haSCOndition = flase ;</P> <P>  public void setCondition(Boolean condition) { //设置判断条件的真假;condition子标</P> <P>//记调用</P> <P>    this.condition = condition ;</P> <P>    hasCondition = true ;</P> <P>  }</P> <P>public Boolean getCondition() {  //获取判断条件的真假then 、else子标</P> <P>//记调用</P> <P>    return(condition) ;</P> <P>  }</P> <P>  public void setHasCondition(Boolean flag) {  //判断if标记后是否存在条件,由</P> <P>//condition子标记调用</P> <P>    this.hasCondition = flag ;</P> <P>  }</P> <P>  public Boolean getHasCondition() {  //获取是否存在判断条件的信息,由</P> <P>//then、else标记调用</P> <P>    return(hasCondition) ;</P> <P>  }</P> <P>  public int doStartTag() {</P> <P>    return(EVAL_BODY_INCLUDE)  //包含子标记</P> <P>  }</P> <P>   }</P> <P>→那么对于condition等其它子标记的处理程序,需要获取父标记处理程序对象:</P> <P>IfTag  parent=(IfTag)  findAncestorWithClass(this,IfTag.class)</P> <P>之后就可以操作父标记处理程序的相应方法。</P> <P>示例:(对于condition标记)</P> <P>public class IfConditionTag extends BodyTagSupport {</P> <P>  <B>ifTag parent = (IfTag)findAncestorWithClass(this,IfTag.class); /</B>/获取父标记对应的对象</P> <P>If (parent = = null) {</P> <P>  Throw new JspTagException(“condition not inside it”);</P> <P>}</P> <P>return(EVAL_BODY_TAG);</P> <P>}</P> <P>public int doAfterBody() {</P> <P>  <B>ifTag parent = (IfTag) findAncestorWithClass(this , IfTag.class) ;</B></P> <P>  String bodyString = getBodyContent() . getString() ;</P> <P>  If (bodyString.trim().equals(“true”)) {</P> <P>    <B>Parent.setCondition(true)  /</B>/访问父标记处理类中的方法</P> <P>  }else {</P> <P>    <B>parent.setCondition(false)</B> ;</P> <P>  }</P> <P>return(SKIP_BODY) ;</P> <P>}</P> <P>}</P> <P>其余标记类和此相似。</P> <P>4.  小结</P> <P>对于一些不太复杂和功能单一的逻辑描述,需要传递的参数要求不高时,使用JSP标记,要方便的多。对于大多数的商业逻辑应用,还是使用bean要好的多,也宜于servlet控制。</P> <P>这个东东是俺学习 人邮 出的Servletlet与JSP核心技术》时随手写下的。里面的程序还没具体配置过。过段时间弄了再搞篇实验体会吧。</P> <P>有什么值的商讨的发eMail哦。ginkou@163.com</P><BR></SPAN> </div> <div class="zx-detail-ai-ask"><i></i>向AI问一下细节</div> <div class="tj-read-box"> <div class="tit">推荐阅读:</div> <ol> <li> <a href="/jc/36142.html">git 学习笔记</a> </li> <li> <a href="/jc/59539.html">Overlay学习笔记</a> </li> </ol> </div> <div class="zixun-tj-product adv-bottom"></div> <div class="information-explain"> <p>免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。</p> <p class="yun_industry_information" style="display: none;margin-top:8px;"></p> <div class="information-explain-tag"> <div class="tag-list clearfix"> <a href="/jc/tags/840/">jsp</a> <a href="/jc/tags/546/">学习</a> <a href="/jc/tags/3480/">标记</a> </div> </div> </div> <div class="prve-next-news"> <ul> <li><span>上一篇新闻:</span><div><a href="/jc/224030.html">Python3爬虫利器中Scrapy-Redis的安装方法是什么</a></div></li> <li><span>下一篇新闻:</span><div><a href="/jc/224050.html">清除python界面的方法</a></div></li> </ul> </div> <div class="relevant-read-box"> <div class="relevant-read-box-title"> <h2>猜你喜欢</h2> </div> <div class="relevant-read-box-list"> <ul> <li><a href="/ask/55250140.html">android imageview怎么设置大小</a></li> <li><a href="/ask/52316078.html">ubuntu怎么删除当前目录所有文件</a></li> <li><a href="/ask/64377000.html">oracle如何访问其他库的视图</a></li> <li><a href="/ask/61494202.html">python中怎么用递归方法求n的阶乘</a></li> <li><a href="/ask/4929395.html">ubuntu中apt-get找不到命令怎么解决</a></li> <li><a href="/ask/87984247.html">mysql中select update的用法是什么</a></li> <li><a href="/ask/1014868.html">oracle怎么给表字段设置默认值</a></li> <li><a href="/ask/71342272.html">java中hashmap的作用是什么</a></li> <li><a href="/ask/49874259.html">ubuntu中apt-get一直报错怎么解决</a></li> <li><a href="/ask/61928151.html">debian如何打开终端界面</a></li> </ul> </div> </div> </div> <div class="information-right-box"> <!-- <div class="jszcbtn-con"><button class="jszcbtn"><i></i>技术支持</button></div>--> <div class="information-right-img adv-right"></div> <div class="information-right-recommend"> <div class="latest-news"> <h6> <span>最新资讯</span> </h6> <div class="recommend-tab-list-item"> <ul> <li><a href="/jc/822477.html">Cassandra如何处理节点间的网络通信延迟</a></li> <li><a href="/jc/822475.html">Cassandra是否支持数据的实时查询和分析</a></li> <li><a href="/jc/822473.html">Cassandra如何支持数据的分布式计算和分析</a></li> <li><a href="/jc/822471.html">Cassandra的节点间通信协议是什么</a></li> <li><a href="/jc/822469.html">Cassandra如何保证数据在分布式环境中的一致性</a></li> <li><a href="/jc/822467.html">Cassandra是否支持行级别的锁</a></li> <li><a href="/jc/822465.html">Storm框架在实际应用中遇到过哪些问题如何解决</a></li> <li><a href="/jc/822463.html">Storm如何与其他大数据处理框架进行比较</a></li> <li><a href="/jc/822461.html">Storm在处理大规模数据流时如何避免性能瓶颈</a></li> <li><a href="/jc/822459.html">Storm如何保证在节点故障时数据的完整性和一致性</a></li> </ul> </div> </div> <div class="relevant-nominate"> <h6> <span>相关推荐</span> </h6> <div class="recommend-tab-list-item"> <ul> <li><a href="/jc/61974.html">学习笔记-IP</a></li> <li><a href="/jc/71203.html">[Android学习笔记二] View转化Bitmap</a></li> <li><a href="/jc/93720.html">golang 学习笔记之字符串</a></li> <li><a href="/jc/277448.html">JSP (转)</a></li> <li><a href="/jc/277698.html">菜鸟学jsp(一) (转)</a></li> <li><a href="/jc/277714.html">JSP中自定义标记符的使用 (转)</a></li> <li><a href="/jc/277932.html">JSP开发入门(三)----JSP与JavaBean (转)</a></li> <li><a href="/jc/278312.html">使用lomboz调试JSP (转)</a></li> <li><a href="/jc/278494.html">求救!!!!!!jsp执行错误;(转)</a></li> <li><a href="/jc/278614.html">JSP 语法详解(转)</a></li> </ul> </div> </div> <div class="information-right-relevant-tag"> <div class="relevant-tag-title"> <h2>相关标签</h2> </div> <div class="relevant-tag-list clearfix"> <a href="/jc/tags/879/">spreadjs</a> <a href="/jc/tags/9699/">jsplumb</a> <a href="/jc/tags/20233/">angulerjs</a> <a href="/jc/tags/20234/">js使用</a> <a href="/jc/tags/27466/">微信js-sdk</a> <a href="/jc/tags/34179/">vuejs14</a> <a href="/jc/tags/35342/">mock.js</a> <a href="/jc/tags/35680/">geojson</a> <a href="/jc/tags/35904/">jstat</a> <a href="/jc/tags/44776/">cocos2d-js</a> <a href="/jc/tags/51184/">js开发</a> <a href="/jc/tags/54171/">auto.js</a> <a href="/jc/tags/57079/">gojs</a> <a href="/jc/tags/59326/">外部js</a> <a href="/jc/tags/60390/">dropload.js</a> <a href="/jc/tags/60852/">angularjs4</a> <a href="/jc/tags/62450/">ajaxupload.js</a> <a href="/jc/tags/65553/">fullpage.js</a> <a href="/jc/tags/71711/">pixi.js</a> <a href="/jc/tags/71763/">vue.js组件</a> </div> </div> </div> </div> </div> </div> <div class="aihelper"><i></i>AI<br>助<br>手</div> <script type="text/javascript" src="https://cache.yisu.com/www/vendor/highlight/highlight.js"></script> <script> document.addEventListener('DOMContentLoaded', (event) => { document.querySelectorAll('pre').forEach((block) => { hljs.highlightBlock(block); }); }); </script> <div class="footer"> <div class="other-link clearfix"> <div class="link-look clearfix"> <div class="link-list"> <div class="link-title">产品服务</div> <ul> <li><a href="/cloud/">云服务器</a></li> <li><a href="/ddos/">高防服务器</a></li> <li><a href="/ip/">高防IP</a></li> <li><a href="/physicsserver/">裸金属服务器</a></li> <!--<li><a href="/mainframe/">专属宿主机</a></li>--> <li><a href="/trusteeship/">机柜租用</a></li> <li><a href="/ssl/">SSL证书</a></li> <li><a href="/ddoscdn/">高防CDN</a></li> <li><a href="/elasticip/">弹性IP</a></li> <!--<li><a href="/clouddisk/">云硬盘</a></li>--> </ul> </div> <div class="link-list"> <div class="link-title">地区划分</div> <ul> <!-- <li><a href="/beijing/">北京服务器</a></li>--> <li><a href="/hk/">中国香港服务器</a></li> <li><a href="/usa/">美国服务器</a></li> <li><a href="/germany/">德国服务器</a></li> <li><a href="/japan/">日本服务器</a></li> <li><a href="/korea/">韩国服务器</a></li> <li><a href="/singapore/">新加坡服务器</a></li> </ul> </div> <div class="link-list"> <div class="link-title">专题活动</div> <ul> <li><a href="https://uc.yisu.com/vhost" rel="nofollow" target="_blank" class="c_login">控制台</a></li> <li><a href="/appmarket/">应用市场</a></li> <li><a href="/coupon/">最新活动</a></li> <!-- <li><a href="/swarm.html">Swarm云服务器</a></li>--> <!-- <li><a href="https://www.kuduo.com/" target="_blank">swarm</a></li>--> </ul> </div> <div class="link-list"> <div class="link-title">帮助支持</div> <ul> <li><a href="/help/">帮助中心</a></li> <li><a href="/help/index_38_41.html">网站备案</a></li> <li><a href="/help/index_45_46.html" rel="nofollow">法律条款</a></li> <li><a href="/city/">全国服务</a></li> <li><a href="/cve/">安全漏洞</a></li> <li><a href="/theme/">主题地图</a></li> </ul> </div> <div class="link-list"> <div class="link-title">关于我们</div> <ul> <li><a href="/about/" rel="nofollow">关于亿速云</a></li> <li><a href="/case/">客户案例</a></li> <li><a href="/news/">新闻资讯</a></li> <li><a href="/zixun/time/">资讯地图</a></li> <li><a href="/ask/time/">问答地图</a></li> <li><a href="/about/contact.html">联系我们</a></li> <li><a href="/employ/">人才招聘</a></li> </ul> </div> </div> <div class="yisu-contact"> <div class="contact-tit">售后咨询</div> <div class="yisu-phone">7*24小时在线电话:<span>400-100-2938</span></div> <div class="yisu-qq">7*24小时在线 QQ:<span>800811969</span></div> <div class="guanzhu-tit">关注亿速云</div> <div class="erweima-box clearfix"> <div class="wechat-erwei"> <img src="https://cache.yisu.com/www/images/ys-gzh-erweima.png" alt=""> <p>亿速云公众号</p> </div> <div class="phonenet-erwei"> <img src="https://cache.yisu.com/www/images/ys-web-erweima.png" alt=""> <p>手机网站二维码</p> </div> </div> </div> </div> <div class="footer-bottom"> <p>Copyright © Yisu Cloud Ltd. All Rights Reserved. 2018 版权所有</p> <p><span>广州亿速云计算有限公司</span><span><a href="http://beian.miit.gov.cn/" style="color: #6C6E73;" target="_blank" rel="nofollow">粤ICP备17096448号-1</a> </span><span><span class="police-icon"></span>粤公网安备 44010402001142号</span><!--<span>律所顾问:广州正大</span>--><span>增值电信业务经营许可证编号:B1-20181529</span></p> </div> </div> <div class="common-backtop-link"><i></i></div> <script type="text/javascript" src="https://cache.yisu.com/www/js/qrcode.min.js?v=1714024086"></script> <script type="text/javascript" src="https://cache.yisu.com/www/js/information/yisu-information.js?v=20220516&v=1714024086"></script> <script type="text/javascript" src="https://cache.yisu.com/www/js/information/detail.js?v=1714024086&v=1714024086"></script> <script type="text/javascript" src="https://cache.yisu.com/www/js/information/zixun-nav.js?v=1714024086"></script> <script type="text/javascript" src="https://cache.yisu.com/www/js/information/markdown-it.min.js?v=1714024086&v=1714024086"></script> <script type="text/javascript" src="https://cache.yisu.com/www/js/information/languages_go.min.js?v=1714024086&v=1714024086"></script> <script type="text/javascript" src="https://cache.yisu.com/www/js/information/highlight.min.js?v=1714024086&v=1714024086"></script> <script type="text/javascript" src="https://cache.yisu.com/www/js/information/gpt.js?v=1714024086&v=1714024086"></script> <script type="text/javascript" src="https://cache.yisu.com/www/js/information/newGpt.js?v=1714024086&v=1714024086"></script> <script type="text/javascript" src="https://cache.yisu.com/www/js/huodong/login-reg-common.js?v=1714024086&v=1714024086"></script> <script type="text/javascript" src="https://cache.yisu.com/www/js/common/login-regs-window.js?v=1714024086"></script> <script type="text/javascript" src="https://cache.yisu.com/www/js/jquery.SuperSlide.2.1.js?v=1714024086"></script> <script type="text/javascript" src="https://cache.yisu.com/www/js/jquery-ui.js?v=1714024086"></script> <script type="text/javascript" src="https://cache.yisu.com/www/js/jquery.flexslider-min.js?v=1714024086"></script> <script type="text/javascript" src="https://cache.yisu.com/www/js/common/common.js?v=1714024086"></script> <script type="text/javascript" src="https://cache.yisu.com/www/js/common/kfonline.js?v=1714024086"></script> <script type="text/javascript"> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?0910b1e24e81c0e61462b7a766830fec"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); $('.fifth_ic').hover(function(){ $(this).children('.erweima_box').show() },function(){ $(this).children('.erweima_box').hide() }) })(); (function(b,a,e,h,f,c,g,s){b[h]=b[h]||function(){(b[h].c=b[h].c||[]).push(arguments)}; b[h].s=!!c;g=a.getElementsByTagName(e)[0];s=a.createElement(e); s.src="//s.union.360.cn/"+f+".js";s.defer=!0;s.async=!0;g.parentNode.insertBefore(s,g) })(window,document,"script","_qha",340413,false); </script> <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script> </body> </html>