| <!DOCTYPE html> |
| <html> |
| <head> |
| <link rel="canonical" href="http://blog.youkuaiyun.com/think_soft/article/details/49743665"/> |
| <script type="text/javascript"> |
| var username = "fireofstar"; |
| var _blogger = username; |
| var blog_address = "http://blog.youkuaiyun.com/think_soft"; |
| var static_host = "http://csdnimg.cn/release/phoenix/"; |
| var currentUserName = "sbj_java"; |
| var fileName = '49743665'; |
| var commentscount = 0; |
| var islock = false |
| window.quickReplyflag = true; |
| var totalFloor = 0; |
| var isBole = false; |
| var isDigg = false; |
| var isExpert=false; |
| var isAdm = false; |
| </script> |
| <meta http-equiv="content-type" content="text/html; charset=utf-8"> |
| <meta http-equiv="X-UA-Compatible" content="IE=Edge"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"> |
| <meta name="apple-mobile-web-app-status-bar-style" content="black"> |
| <script src="http://c.csdnimg.cn/public/common/libs/jquery/jquery-1.9.1.min.js" type="text/javascript"></script> |
| <link rel="stylesheet" href="http://c.csdnimg.cn/public/common/libs/bootstrap/css/bootstrap.min.css"> |
| <link rel="stylesheet" href="http://c.csdnimg.cn/public/static/css/avatar.css"> |
| <link rel="stylesheet" href="http://csdnimg.cn/release/phoenix/production/main-efca3e867d.css"> |
| <link rel="stylesheet" href="http://c.csdnimg.cn/public/common/toolbar/content_toolbar_css/content_toolbar.css"> |
| |
| <script src="http://csdnimg.cn/rabbit/exposure-click/main-1.0.5.js"></script> |
| <script type="text/javascript" src="http://csdnimg.cn/pubfooter/js/tracking-1.0.2.js" charset="utf-8"></script> |
| <script type="text/javascript" src="http://csdnimg.cn/release/phoenix/production/main-fd81106147.js"></script> |
| |
| <script src="http://dup.baidustatic.com/js/ds.js"></script> |
| <script type="text/javascript"> |
| // Traffic Stats of the entire Web site By baidu |
| var _hmt = _hmt || []; |
| (function() { |
| var hm = document.createElement("script"); |
| hm.src = "https://hm.baidu.com/hm.js?6bcd52f51e9b3dce32bec4a3997715ac"; |
| var s = document.getElementsByTagName("script")[0]; |
| s.parentNode.insertBefore(hm, s); |
| })(); |
| // Traffic Stats of the entire Web site By baidu end |
| </script> |
| <meta name="description" content="在许多场景中,使用前面介绍的Spring模块是合乎逻辑的,从运行在有资源限制的嵌入式设备上的应用,到使用Spring事务管理和Web框架集成的完整的企业级应用。 |
| 下图是典型的完整的Spring Web应用 |
| |
| 有些时候不允许你完全切换到不同的框架中,因此Spring框架不会强制要求使用它内部的每个模块,它不是非此即彼的解决方案。既存的用Struts、Tapestry、JSF或其他UI框架构建的前" /> |
| <meta name="keywords" content="spring,框架" /> |
| <meta http-equiv="Cache-Control" content="no-siteapp" /><link rel="alternate" media="handheld" href="#" /> |
| <meta name="shenma-site-verification" content="5a59773ab8077d4a62bf469ab966a63b_1497598848"> |
| <title>Spring框架简介---使用场景 - 优快云博客</title> |
| <link href="http://csdnimg.cn/public/favicon.ico" rel="SHORTCUT ICON"> |
| </head> |
| <body> |
| <script id="toolbar-tpl-scriptId" prod="download" skin="black" src="http://c.csdnimg.cn/public/common/toolbar/js/content_toolbar.js" type="text/javascript" domain="http://blog.youkuaiyun.com/"></script> |
| <div class="container clearfix"> |
| <main> |
| <article> |
| <h1 class="csdn_top">Spring框架简介---使用场景</h1> |
| <div class="article_bar clearfix"> |
| <div class="artical_tag"> |
| <span class="original"> |
| 翻译 </span> |
| <span class="time">2015年11月10日 09:24:13</span> |
| </div> |
| |
| <ul class="article_tags clearfix csdn-tracking-statistics tracking-click" data-mod="popu_377" > |
| <li class="tit">标签:</li> |
| |
| |
| <li><a href="http://so.youkuaiyun.com/so/search/s.do?q=spring&t=blog" target="_blank">spring</a> <span>/</span></li> |
| <li><a href="http://so.youkuaiyun.com/so/search/s.do?q=框架&t=blog" target="_blank">框架</a> <span>/</span></li> |
| <li><a href="http://so.youkuaiyun.com/so/search/s.do?q=web框架&t=blog" target="_blank">web框架</a> <span>/</span></li> |
| |
| </ul> |
| <ul class="right_bar"> |
| <li><button class="btn-noborder"><i class="icon iconfont icon-read"></i><span class="txt">3488</span></button></li> |
| <li class="edit"> |
| <a class="btn-noborder" href="" > |
| <i class="icon iconfont icon-bianji"></i><span class="txt">编辑</span> |
| </a> |
| </li> |
| <li class="del"> |
| <a class="btn-noborder" onclick="javascript:deleteArticle(fileName);return false;"> |
| <i class="icon iconfont icon-shanchu"></i><span class="txt">删除</span> |
| </a> |
| </li> |
| </ul> |
| </div> |
| <div id="article_content" class="article_content csdn-tracking-statistics tracking-click" data-mod="popu_519" data-dsm="post"> |
| <div class="markdown_views"> |
| <p>在许多场景中,使用前面介绍的Spring模块是合乎逻辑的,从运行在有资源限制的嵌入式设备上的应用,到使用Spring事务管理和Web框架集成的完整的企业级应用。 <br> |
| 下图是典型的完整的Spring Web应用 <br> |
| <img src="https://img-blog.youkuaiyun.com/20151109190958091" alt="这里写图片描述" title=""> <br> |
| 有些时候不允许你完全切换到不同的框架中,因此Spring框架不会强制要求使用它内部的每个模块,它不是非此即彼的解决方案。既存的用Struts、Tapestry、JSF或其他UI框架构建的前端,可以跟基于允许使用Spring事务功能的Spring的中间层来集成。你只需使用ApplicationContext来联通商务逻辑,并且使用WebApplicationContext来集成你的web层。 <br> |
| 下图是远程访问的使用场景 <br> |
| <img src="https://img-blog.youkuaiyun.com/20151109191225472" alt="这里写图片描述" title=""> <br> |
| 当需要通过web service访问既存的代码时,可以使用Spring的Hessian-、Burlap-、Rmi-、或JaxRpcProxyFactory类来访问既存的应用程序。 <br> |
| 下图是EJB的使用场景—封装既存的POJO <br> |
| <img src="https://img-blog.youkuaiyun.com/20151110091547996" alt="这里写图片描述" title=""> <br> |
| Spring框架还给企业级JavaBeans提供了一个访问抽象层,这样就可以复用既存的POJO,并且为了提高可扩展性、能够在需要声明安全的非安全web应用程中使用,还可以把它们封装到无状态会话Bean中。</p> |
| |
| <p><strong>依赖管理和命名规范</strong> <br> |
| 依赖管理和依赖注入是不同事情。要在应用程序中使用这些优秀的功能(如依赖注入),你需要收集所有的必要的类库(jar文件),并尽可能的在编译时把它们放到你的运行时类路径中。这些依赖不是注入的虚拟组件,而是文件系统中的物理资源。依赖管理的过程涉及资源定位、存储并把它们添加到类路径中。依赖可以是直接的(例如应用在运行时对Spring的依赖),也可以是间接的(例如应用程序依赖commons-dbcp所依赖的commons-pool)。间接依赖也被叫做传递依赖,并且这样的依赖是最难识别和管理的。 <br> |
| 如果要使用Spring就需要拷贝一份必要的Spring组件类库。Spring尽可能的把一组模块打包到一个独立的依赖中,以便你能够更加方便的获取拷贝。例如,如果你不想编写Web应用程序,你就不需要spring-web模块。要查找本指南中的Spring类库模块,我们可以使用快捷命名协议spring-<em>或spring-</em>.jar,“*”号代表模块的小名(如spring-core、spring-webmvc、spring-jms等)。通常实际的jar文件名跟版本号连接在一起(入spring-core4.2.0.BUILD-SNAPSHOT.jar) <br> |
| Spring框架的每个释放版本都会发布到下列地方: <br> |
| Maven中心:它是默认额Maven资源库,在使用时不需要特定配置。许多Spring常用的依赖库在这里也是有效的,并且有很多大的Spring社区也使用Maven来管理依赖,因此对于开发者来说是很方便的,在这里jar文件的命名格式是spring-*-.jar,其Maven的groupId是org.springframework。 <br> |
| 专用于托管Spring的公共的Maven资源库:除了最终的GA释放版本之外,这个资源库还管理着开发快照和里程碑。这里的jar文件命名与Maven中心一致,因此这是一个获取跟部署在Maven中心中其他类库一起使用的Spring的开发版本的好地方 ,为了方便下载,这个资源库还包含了一个捆绑发布的zip文件,它把所有的jar文件 捆绑在一起。 <br> |
| 因此首先需要决定如何管理依赖,通常推荐使用像Maven、Gradle或lvy等自动系统,但你也可以手动下载必要的jar包。 <br> |
| 下表列出了Spring的组件,每个模块的更多的介绍请参照2.2节“模块”。 <br> |
| Spring的框架组件如下 <br> |
| 1 org.springframework spring-aop 基于代理的AOP支持 <br> |
| 2 org.springframework spring-aspects 基于AspectJ的切面 <br> |
| 3 org.springframework spring-beans Bean支持,包括Groovy <br> |
| 4 org.springframework spring-context 应用程序的运行时环境,包括调度和远程处理的抽象 <br> |
| 5 org.springframework spring-context-support 用于把常用的第三方 类库集成到Spring的应用环境中的支持类。 <br> |
| 6 org.springframework spring-core 被大多数其他Spring模块使用的核心工具类。 <br> |
| 7 org.springframework spring-expression Spring的表达式语言(SpEL) <br> |
| 8 org.springframework spring-instrument 用于JVM启动引导的监测代理 <br> |
| 9 org.springframework spring-instrument-tomcat 用于Tomcat的监测代理 <br> |
| 10 org.springframework spring-jdbc JDBC支持包,包括DataSource安装和JDBC访问支持。 <br> |
| 11 org.springframework spring-jms JMS支持包,包括发送和接收JMS消息的辅助器 <br> |
| 12 org.springframework spring-messaging 支持消息传递的架构和协议 <br> |
| 13 org.springframework spring-orm 对象/关系映射,包括对JPA和Hibernate的支持。 <br> |
| 14 org.springframework spring-oxm 对象/XML的映射 <br> |
| 15 org.springframework spring-test 支持单元测试和集成测试的Spring组件。 <br> |
| 16 org.springframework spring-tx 事务的基础架构,包括对DAO支持和JCA集成 <br> |
| 17 org.springframework spring-web Web支持包,包括客户端和web的远程访问。 <br> |
| 18 org.springframework spring-webmvc REST的web服务和用于web应用程序的mvc实现 <br> |
| 19 org.springframework spring-webmvc-portlet 用于Portlet环境的MVC实现 <br> |
| 20 org.springframework spring-websocket WebSocket和SockJS的实现,包括对STOMP支持</p> |
| |
| <p><strong>Spring依赖和对Spring的依赖</strong> <br> |
| 经管Spring提供了集成能力,并且支持大范围的企业级应用和其他的外部工具,但是它还是尽量的保持着对外部工具和应用的最小强制性依赖。在简单的使用Spring的场景中,你不必查找和下载(即使是自动的情况)大量的jar类库。对于基本的依赖注入只有一个对于日志的强制性外部依赖(更多的信息请看后面有关日志选择的介绍)。 <br> |
| 接下来我们来介绍一下使用Spring来配置一个应用程序所需的基本步骤,首先介绍Maven,然后是Gradle,最后是lvy。在所有的情况中,如果有任何事情不清楚,可以参看你的依赖管理系统的文档,或者查看一些示例代码—Spring自己在构建的时候使用Gradle来管理依赖,并且我们的大多数示例都使用Gradle或Maven。 <br> |
| <strong>Maven的依赖管理</strong> <br> |
| 如果使用Maven来年进行依赖的管理,你甚至不需要显示的提供对日志的依赖。例如,在创建一个应用程序环境并使用依赖注入来配置该应用时,Maven的依赖管理如下: <br> |
| <br> |
| <br> |
| org.springframework <br> |
| spring-context <br> |
| 4.2.0.BUILD-SNAPSHOT <br> |
| runtime <br> |
| <br> |
| <br> |
| 注意,如果编译时不依赖Spring的API,元素就可以声明为runtime,这通常用于基本的依赖注入情况。 <br> |
| 上面的示例要跟Maven中心资源库协同工作,如果要使用Spring的Maven资源库(如历程碑或开发者快照),就需要在Maven的配置中指定资源库的位置。例如使用完整版本的配置如下: <br> |
| <br> |
| <br> |
| io.spring.repo.maven.release <br> |
| <a href="http://repo.spring.io/release/">http://repo.spring.io/release/</a> <br> |
| false <br> |
| <br> |
| <br> |
| 使用里程碑版本的配置如下: <br> |
| <br> |
| <br> |
| io.spring.repo.maven.milestone <br> |
| <a href="http://repo.spring.io/milestone/">http://repo.spring.io/milestone/</a> <br> |
| false <br> |
| <br> |
| <br> |
| 使用快照版本的配置如下: <br> |
| <br> |
| <br> |
| io.spring.repo.maven.snapshot <br> |
| <a href="http://repo.spring.io/snapshot/">http://repo.spring.io/snapshot/</a> <br> |
| true <br> |
| <br> |
| </p> |
| |
| <p><strong>Maven的“资料清单”依赖</strong> <br> |
| 在使用Maven时,Spring的JAR版本可能偶尔会有些细微带的差异。例如,你可能会发现某个第三方类库或另外的Spring工程把一个传递式依赖拉入到了一个较旧的释放版本中。如果你忘记了显示的直接声明自己的依赖,就会发生一些意想不到的情况。 <br> |
| 要克服这个问题,Maven提供了“资料清单”(BOM)依赖的概念。你可以在dependencyManagement段导入spring-framework-bom来确保所有的spring依赖(直接的和传递式)都是相同的版本。 <br> |
| <br> |
| <br> |
| <br> |
| org.springframework <br> |
| spring-framework-bom <br> |
| 4.2.0.BUILD-SNAPSHOT <br> |
| pom <br> |
| import <br> |
| <br> |
| <br> |
| </p> |
| |
| <p>使用BOM的一个好处是在依赖Spring框架部件的时候,不再需要指定属性。如: <br> |
| <br> |
| <br> |
| org.springframework <br> |
| spring-context <br> |
| <br> |
| <br> |
| org.springframework <br> |
| spring-web <br> |
| <br> |
| </p> |
| |
| <p><strong>Gradle的依赖管理</strong> <br> |
| 要跟Gradle构建系统一起来使用Spring的资源库,就要在repositories段包含正确的URL,如: <br> |
| repositories { <br> |
| mavenCentral() <br> |
| // and optionally… <br> |
| maven { url “<a href="http://repo.spring.io/release">http://repo.spring.io/release</a>” } <br> |
| } <br> |
| 你可以根据需要把上面repositories的URL从/release修改成/milestone或/snapshot。配置完资源库以后,就可以使用如下Gradle常用的方式来声明依赖了: <br> |
| dependencies { <br> |
| compile(“org.springframework:spring-context:4.2.0.BUILD-SNAPSHOT”) <br> |
| testCompile(“org.springframework:spring-test:4.2.0.BUILD-SNAPSHOT”) <br> |
| }</p> |
| |
| <p><strong>lvy依赖管理</strong> <br> |
| 如果你喜欢使用lvy来管理依赖,那么有相似的配置选项。 <br> |
| 要配置lvy就要像下面示例那样把Spring资源库的位置添加到ivysettings.xml文件的解析器中: <br> |
| <br> |
| </p> </div> |
| <link rel="stylesheet" href="http://csdnimg.cn/release/phoenix/production/markdown_views-d4dade9c33.css" /> |
| </div> |
| </article> |
| <div class="readall_box csdn-tracking-statistics tracking-click" data-mod="popu_376"> |
| <div class="read_more_mask"></div> |
| <a class="btn btn-large btn-gray-fred read_more_btn" target="_self">阅读全文</a> |
| </div> |
| <div class="article_copyright"> |
| </div> |
| <ul class="article_collect clearfix csdn-tracking-statistics tracking-click" data-mod="popu_378"> |
| <li class="tit">本文已收录于以下专栏:</li> |
| |
| |
| </ul> |
| <div class="comment_box clearfix"> |
| <div id="comment_form"> |
| <div id="commentsbmitarear"> |
| <div class="comment_area clearfix"> |
| <div class="userimg"> |
| <a href="http://my.youkuaiyun.com/sbj_java"> |
| <img src="http://avatar.youkuaiyun.com/F/3/A/3_sbj_java.jpg"> |
| </a> |
| </div> |
| |
| <form action="http://blog.youkuaiyun.com/fireofstar/phoenix/comment/submit?id=49743665" method="post" onsubmit="return subform(this);" id="commentform"> |
| <textarea class="comment_content" name="comment_content" id="comment_content" placeholder="发表你的评论"></textarea> |
| <div class="bot_bar clearfix"> |
| <div id="ubbtools" class="add_code"> |
| <a href="#insertcode" code="code" target="_self"><i class="icon iconfont icon-daima"></i></a> |
| </div> |
| |
| <input type="hidden" id="comment_replyId" name="comment_replyId"> |
| <input type="hidden" id="comment_userId" name="comment_userId" value=""> |
| <input type="hidden" id="commentId" name="commentId" value=""> |
| <input type="submit" class="btn btn-redborder" value="发表评论"> |
| <span id="tip_comment" class="tip"> |
| <div style="display: none;" class="csdn-tracking-statistics tracking-click" data-mod="popu_384"><a href="#" target="_blank" class="comment_area_btn">发表评论</a></div> |
| |
| <div id="lang_list" code="code"> |
| <a href="#html" style="width:95px;" class="long_name" target="_self">HTML/XML</a> |
| <a href="#objc" style="width:95px;" class="long_name" target="_self">objective-c</a> |
| <a href="#delphi" style="width:58px;" class="zhong_name" target="_self">Delphi</a> |
| <a href="#ruby" class="zhong_name" target="_self">Ruby</a> |
| <a href="#php" target="_self">PHP</a> |
| <a href="#csharp" class="duan_name" target="_self">C#</a> |
| <a style=" border-right: none;" href="#cpp" class="duan_name" target="_self">C++</a> |
| <a style=" border-bottom:none;width:95px;" href="#javascript" class="long_name" target="_self">JavaScript</a> |
| <a style=" border-bottom:none;width:95px;" href="#vb" class="long_name" target="_self">Visual Basic</a> |
| <a style=" border-bottom:none;" href="#python" class="zhong_name" target="_self">Python</a> |
| <a style=" border-bottom:none;" href="#java" class="zhong_name" target="_self">Java</a> |
| <a style="border-bottom:none;" href="#css" class="duan_name" target="_self">CSS</a> |
| <a style="border-bottom:none;" href="#sql" class="duan_name" target="_self">SQL</a> |
| <a style="border:none; " href="#plain" class="duan_name" target="_self">其它</a> |
| <span class="arrb"></span> |
| </div> |
| </div> |
| </form> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="comment_li_outbox"> |
| <div id="comment_list"></div> |
| </div> |
| |
| <div class="more_comment"> |
| <div id="comment_bar" class="trackgin-ad" data-mod="popu_385"></div> |
| </div> |
| |
| |
| <div class="recommend_list clearfix" id="rasss"> |
| <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post"> |
| <dd> |
| <h2><a href="http://blog.youkuaiyun.com/zhejingyuan/article/details/51305892" target="_blank" strategy="BlogCommendFromBaidu_0">使用框架的意义与spring的主要内容</a></h2> |
| <div class="summary"> |
| spring功能具体实现和分析 </div> |
| <ul> |
| <li class="avatar_img"><a href="http://blog.youkuaiyun.com/zhejingyuan" target="_blank" strategy="BlogCommendFromBaidu_0"><img src="http://avatar.youkuaiyun.com/7/9/0/3_zhejingyuan.jpg" alt="zhejingyuan" title="zhejingyuan"></a></li> |
| <li class="user_name"><a href="http://blog.youkuaiyun.com/zhejingyuan">zhejingyuan</a></li> |
| <li class="time">2016年05月03日 16:44</li> |
| <li class="visited_num"><i class="icon iconfont icon-read"></i><span>3811</span></li> |
| </ul> |
| </dd> |
| </dl> |
| <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post"> |
| <dd> |
| <h2><a href="http://blog.youkuaiyun.com/develop_wangzhi/article/details/67637461" target="_blank" strategy="BlogCommendFromBaidu_1">对Spring Aop的理解和应用场景</a></h2> |
| <div class="summary"> |
| 场景一:Aop与事物 |
| 场景二:Aop与日志 |
| 场景三:Aop与缓存 </div> |
| <ul> |
| <li class="avatar_img"><a href="http://blog.youkuaiyun.com/develop_wangzhi" target="_blank" strategy="BlogCommendFromBaidu_1"><img src="http://avatar.youkuaiyun.com/7/8/9/3_develop_wangzhi.jpg" alt="develop_wangzhi" title="develop_wangzhi"></a></li> |
| <li class="user_name"><a href="http://blog.youkuaiyun.com/develop_wangzhi">develop_wangzhi</a></li> |
| <li class="time">2017年03月29日 18:00</li> |
| <li class="visited_num"><i class="icon iconfont icon-read"></i><span>5246</span></li> |
| </ul> |
| </dd> |
| </dl> |
| <script> |
| (function() { |
| var s = "_" + Math.random().toString(36).slice(2); |
| document.write('<div id="' + s + '"></div>'); |
| (window.slotbydup=window.slotbydup || []).push({ |
| id: '4765209', |
| container: s, |
| size: '808,120', |
| display: 'inlay-fix' |
| }); |
| })(); |
| </script> |
| <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post"> |
| <dd> |
| <h2><a href="http://blog.youkuaiyun.com/zhuqiuhui/article/details/70307106" target="_blank" strategy="BlogCommendFromBaidu_2">Spring事务之五(应用场景分析)</a></h2> |
| <div class="summary"> |
| 场景一 Exception回滚 |
| |
| Case 1:插入操作回滚 |
| @Transactional |
| public int insertUser(User user) { |
| int... </div> |
| <ul> |
| <li class="avatar_img"><a href="http://blog.youkuaiyun.com/zhuqiuhui" target="_blank" strategy="BlogCommendFromBaidu_2"><img src="http://avatar.youkuaiyun.com/7/F/6/3_zhuqiuhui.jpg" alt="zhuqiuhui" title="zhuqiuhui"></a></li> |
| <li class="user_name"><a href="http://blog.youkuaiyun.com/zhuqiuhui">zhuqiuhui</a></li> |
| <li class="time">2017年04月21日 00:39</li> |
| <li class="visited_num"><i class="icon iconfont icon-read"></i><span>992</span></li> |
| </ul> |
| </dd> |
| </dl> |
| <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post"> |
| <dd> |
| <h2><a href="http://blog.youkuaiyun.com/sinat_25398439/article/details/53185905" target="_blank" strategy="BlogCommendFromBaidu_3">Spring aop 原理及各种应用场景</a></h2> |
| <div class="summary"> |
| Spring aop 原理及各种应用场景 |
| |
| 时间 2015-01-05 20:19:36 IT社区推荐资讯 |
| 原文 http://itindex.net/detail/52418-spring... </div> |
| <ul> |
| <li class="avatar_img"><a href="http://blog.youkuaiyun.com/sinat_25398439" target="_blank" strategy="BlogCommendFromBaidu_3"><img src="http://avatar.youkuaiyun.com/0/1/F/3_sinat_25398439.jpg" alt="sinat_25398439" title="sinat_25398439"></a></li> |
| <li class="user_name"><a href="http://blog.youkuaiyun.com/sinat_25398439">sinat_25398439</a></li> |
| <li class="time">2016年11月16日 14:01</li> |
| <li class="visited_num"><i class="icon iconfont icon-read"></i><span>9530</span></li> |
| </ul> |
| </dd> |
| </dl> |
| <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post"> |
| <dd> |
| <h2><a href="http://blog.youkuaiyun.com/tuzongxun/article/details/53637159" target="_blank" strategy="BlogCommendFromBaidu_4">spring中自定义Event事件的使用和浅析</a></h2> |
| <div class="summary"> |
| 在我目前接触的项目中,用到了许多spring相关的技术,框架层面的spring、spring mvc就不说了,细节上的功能也用了不少,如schedule定时任务、Filter过滤器、 intercep... </div> |
| <ul> |
| <li class="avatar_img"><a href="http://blog.youkuaiyun.com/tuzongxun" target="_blank" strategy="BlogCommendFromBaidu_4"><img src="http://avatar.youkuaiyun.com/F/6/B/3_tuzongxun.jpg" alt="tuzongxun" title="tuzongxun"></a></li> |
| <li class="user_name"><a href="http://blog.youkuaiyun.com/tuzongxun">tuzongxun</a></li> |
| <li class="time">2016年12月14日 12:13</li> |
| <li class="visited_num"><i class="icon iconfont icon-read"></i><span>5255</span></li> |
| </ul> |
| </dd> |
| </dl> |
| |
| <script> |
| (function() { |
| var s = "_" + Math.random().toString(36).slice(2); |
| document.write('<div id="' + s + '"></div>'); |
| (window.slotbydup=window.slotbydup || []).push({ |
| id: '4983339', |
| container: s, |
| size: '808,120', |
| display: 'inlay-fix' |
| }); |
| })(); |
| </script> |
| <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post"> |
| <dd> |
| <h2><a href="http://blog.youkuaiyun.com/qq_31884013/article/details/51708574" target="_blank" strategy="BlogCommendFromCsdn_5">AOP编程简介及其在Spring框架中的使用</a></h2> |
| <div class="summary"> |
| AOP编程简介及其在Spring框架中的使用额,最近一直没来逛自己的博客发现游客蛮多的:),从前段时间开始就一直在学ssh框架(已经搞定strut2和hibernate),javaweb的框架还是蛮多... </div> |
| <ul> |
| <li class="avatar_img"><a href="http://blog.youkuaiyun.com/qq_31884013" target="_blank" strategy="BlogCommendFromCsdn_5"><img src="http://avatar.youkuaiyun.com/A/A/E/3_qq_31884013.jpg" alt="qq_31884013" title="qq_31884013"></a></li> |
| <li class="user_name"><a href="http://blog.youkuaiyun.com/qq_31884013">qq_31884013</a></li> |
| <li class="time">2016年06月19日 02:20</li> |
| <li class="visited_num"><i class="icon iconfont icon-read"></i><span>541</span></li> |
| </ul> |
| </dd> |
| </dl> |
| <dl class="clearfix csdn-tracking-statistics downloadElement" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post"> |
| <dt><a href="http://download.youkuaiyun.com/download/fftw2010/3687111" target="_blank" strategy="BlogCommendFromCsdn_6"><img class="maxwidth" src="http://csdnimg.cn/release/download/old_static/images/minetype/rar.svg" alt="" title=""></a></dt> |
| <dd> |
| <div class="summary"> |
| <h2><a href="http://download.youkuaiyun.com/download/fftw2010/3687111" target="_blank" strategy="BlogCommendFromCsdn_6">SSH和Spring框架简介</a></h2> |
| <div class="summary"> |
| <ul> |
| <li class="time">2011年10月15日 21:00</li> |
| <li class="visited_num fileSize">11KB</li> |
| <li class="download_btn"><a href="http://download.youkuaiyun.com/download/fftw2010/3687111" target="_blank">下载</a></li> |
| </ul> |
| </div> |
| </div> |
| </dd> |
| </dl> |
| <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post"> |
| <dd> |
| <h2><a href="http://blog.youkuaiyun.com/qq_26344609/article/details/75020899" target="_blank" strategy="BlogCommendFromCsdn_7">「Java学习」Spring框架简介</a></h2> |
| <div class="summary"> |
| 新的一年伊始,由于公司内部组织架构调整,本来是做Android方面开发的,近来要转做下发接口开发,不可避免就要去学习Java服务端开发。不能因为不是自己想做的岗位,就跳槽换工作吧,要适应变化,况且现在... </div> |
| <ul> |
| <li class="avatar_img"><a href="http://blog.youkuaiyun.com/qq_26344609" target="_blank" strategy="BlogCommendFromCsdn_7"><img src="http://avatar.youkuaiyun.com/1/0/F/3_qq_26344609.jpg" alt="qq_26344609" title="qq_26344609"></a></li> |
| <li class="user_name"><a href="http://blog.youkuaiyun.com/qq_26344609">qq_26344609</a></li> |
| <li class="time">2017年07月12日 15:52</li> |
| <li class="visited_num"><i class="icon iconfont icon-read"></i><span>344</span></li> |
| </ul> |
| </dd> |
| </dl> |
| <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post"> |
| <dd> |
| <h2><a href="http://blog.youkuaiyun.com/flowingflying/article/details/70990906" target="_blank" strategy="BlogCommendFromCsdn_8">Java for Web学习笔记(五七):Spring框架简介(6)代码设置</a></h2> |
| <div class="summary"> |
| 例子说明 |
| 之前我们通过xml来设置多应用上下文的spring,本例,我们将通过代码来进行设置。代码结构如图: |
| |
| |
| 配置信息从代码中获取 |
| 上下文配置从代码中获取的设置 |
| |
| 使用XML配置有下面的问... </div> |
| <ul> |
| <li class="avatar_img"><a href="http://blog.youkuaiyun.com/flowingflying" target="_blank" strategy="BlogCommendFromCsdn_8"><img src="http://avatar.youkuaiyun.com/A/2/4/3_flowingflying.jpg" alt="flowingflying" title="flowingflying"></a></li> |
| <li class="user_name"><a href="http://blog.youkuaiyun.com/flowingflying">flowingflying</a></li> |
| <li class="time">2017年04月29日 21:51</li> |
| <li class="visited_num"><i class="icon iconfont icon-read"></i><span>1410</span></li> |
| </ul> |
| </dd> |
| </dl> |
| <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post"> |
| <dd> |
| <h2><a href="http://blog.youkuaiyun.com/CJL5678/article/details/12653865" target="_blank" strategy="BlogCommendFromCsdn_9">SHH入门:Spring框架简介</a></h2> |
| <div class="summary"> |
| (1)Spring 七大模块 |
| |
| |
| |
| 核心容器:核心容器提供Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 ... </div> |
| <ul> |
| <li class="avatar_img"><a href="http://blog.youkuaiyun.com/CJL5678" target="_blank" strategy="BlogCommendFromCsdn_9"><img src="http://avatar.youkuaiyun.com/4/7/1/3_cjl5678.jpg" alt="CJL5678" title="CJL5678"></a></li> |
| <li class="user_name"><a href="http://blog.youkuaiyun.com/CJL5678">CJL5678</a></li> |
| <li class="time">2013年10月12日 16:33</li> |
| <li class="visited_num"><i class="icon iconfont icon-read"></i><span>3389</span></li> |
| </ul> |
| </dd> |
| </dl> |
| </div> |
| </main> |
| <aside> |
| <div class="right_box user_info"> |
| <dl class="inf_bar clearfix"> |
| <dt class="csdn-tracking-statistics tracking-click" data-mod="popu_381"> |
| <a href="http://blog.youkuaiyun.com/fireofstar" target="_blank"> |
| <img src="http://avatar.youkuaiyun.com/5/8/B/3_fireofstar.jpg" class="avatar_pic"> |
| </a> |
| <span class="medals" title=""> |
| </span> |
| </dt> |
| <dd> |
| <h3 class="csdn-tracking-statistics tracking-click" data-mod="popu_380"><a href="http://blog.youkuaiyun.com/fireofstar" target="_blank" id="uid">fireofstar</a></h3> |
| <span class="csdn-tracking-statistics tracking-click" data-mod="popu_379"><a class="btn btn-redborder-small " id="span_add_follow" target="_self">+关注</a></span> |
| </dd> |
| </dl> |
| <div class="inf_number_box clearfix"> |
| <dl> |
| <dt>原创</dt> |
| <dd>85</dd> |
| </dl> |
| <dl> |
| <dt>粉丝</dt> |
| <dd id='fan'>1319</dd> |
| </dl> |
| <dl> |
| <dt>喜欢</dt> |
| <dd>1</dd> |
| </dl> |
| <dl> |
| <dt>码云</dt> |
| <dd> </dd> |
| </dl> |
| |
| </div> |
| <div class="writings"> |
| <div class="public_signal clearfix"> |
| <h3>他的最新文章</h3> |
| <a href="http://blog.youkuaiyun.com/fireofstar" target="_blank" class="more"><span>更多文章</span></a> |
| </div> |
| <ul class="inf_list clearfix csdn-tracking-statistics tracking-click" data-mod="popu_382"> |
| <li class="clearfix"> |
| <a href="http://blog.youkuaiyun.com/FireOfStar/article/details/50259263" target="_blank">Spring的核心技术(八)---依赖注入的示例(1)</a> |
| </li> |
| <li class="clearfix"> |
| <a href="http://blog.youkuaiyun.com/FireOfStar/article/details/50222805" target="_blank">Spring的核心技术(七)---循环依赖</a> |
| </li> |
| <li class="clearfix"> |
| <a href="http://blog.youkuaiyun.com/FireOfStar/article/details/50222777" target="_blank">Spring的核心技术(六)---基于Setter的依赖注入</a> |
| </li> |
| <li class="clearfix"> |
| <a href="http://blog.youkuaiyun.com/FireOfStar/article/details/50209943" target="_blank">Storm的消息处理保障机制</a> |
| </li> |
| <li class="clearfix"> |
| <a href="http://blog.youkuaiyun.com/FireOfStar/article/details/50134533" target="_blank">Spring的核心技术(五)---基于构造器的依赖注入</a> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="extension_other csdn-tracking-statistics tracking-click" data-mod="popu_389"> |
| |
| <div class="flashrecommend"> |
| <script type="text/javascript" src="http://mpb1.iteye.com/bwocoltlyzdec.js"></script> |
| </div> |
| </div> |
| |
| |
| |
| <div class="user-hotArticle"> |
| <h3>他的热门文章</h3> |
| <ul class="hotArticle-list csdn-tracking-statistics tracking-click" data-mod="popu_521"> |
| |
| <li> |
| <a href="http://blog.youkuaiyun.com/fireofstar/article/details/7272844">Andriod Fragment---给Activity添加一个Fragment</a> |
| <div class="read list-left"><i class="icon iconfont icon-read"></i><span>48700</span></div> |
| </li> |
| <li> |
| <a href="http://blog.youkuaiyun.com/fireofstar/article/details/3446393">c#范型List的Sort方法详解</a> |
| <div class="read list-left"><i class="icon iconfont icon-read"></i><span>45151</span></div> |
| </li> |
| <li> |
| <a href="http://blog.youkuaiyun.com/fireofstar/article/details/7583047">AndroidManifest.xml文件详解(receiver)</a> |
| <div class="read list-left"><i class="icon iconfont icon-read"></i><span>27767</span></div> |
| </li> |
| <li> |
| <a href="http://blog.youkuaiyun.com/fireofstar/article/details/7584895">AndroidManifest.xml文件详解(service)</a> |
| <div class="read list-left"><i class="icon iconfont icon-read"></i><span>25582</span></div> |
| </li> |
| <li> |
| <a href="http://blog.youkuaiyun.com/fireofstar/article/details/7531163">如何使用DialogFragment类来创建和显示对话框</a> |
| <div class="read list-left"><i class="icon iconfont icon-read"></i><span>24994</span></div> |
| </li> |
| |
| </ul> |
| </div> |
| <div class="fixRight"> |
| |
| <script> |
| (function() { |
| var s = "_" + Math.random().toString(36).slice(2); |
| document.write('<div id="' + s + '"></div>'); |
| (window.slotbydup=window.slotbydup || []).push({ |
| id: '5384130', |
| container: s, |
| size: '300,300', |
| display: 'inlay-fix' |
| }); |
| })(); |
| </script> |
| <div class="extension_other csdn-tracking-statistics tracking-click bottomRcom" data-mod="popu_389" style="position:absolute;z-index:-5;opacity:0;pointer-events:none"> |
| |
| <div class="flashrecommend"> |
| |
| <script src="http://dup.baidustatic.com/js/dm.js"></script> |
| |
| |
| <script> |
| (function() { |
| var s = "_" + Math.random().toString(36).slice(2); |
| document.write('<div id="' + s + '"></div>'); |
| (window.slotbydup=window.slotbydup || []).push({ |
| id: '4770930', |
| container: s, |
| size: '300,250', |
| display: 'inlay-fix' |
| }); |
| })(); |
| </script> |
| </div> |
| </div> |
| </div> |
| |
| |
| </aside></div> |
| |
| <div class="left_fixed"> |
| <div class="left_show_button"> |
| <span> |
| <i class="icon iconfont icon-youjiantou"></i> |
| </span> |
| </div> |
| <ul class="left_menu" id="share_box"> |
| <li> |
| <button class="left-fixed-btn btn-like csdn-tracking-statistics tracking-click" data-mod="popu_373" target="_self" title="点赞"> |
| <a href="javascript:void(0);" class="iconbox border_red" ><i class="icon iconfont icon-dianzan"></i></a> |
| <a class="txt" href="javascript:void(0);">0</a> |
| </button> |
| </li> |
| <li id="blog_artical_directory"> |
| <button class="left-fixed-btn left_menu_btn csdn-tracking-statistics tracking-click" data-mod="popu_372" target="_self" title="目录"> |
| <a href="javascript:void(0);" class="iconbox border_black" ><i class="icon iconfont icon-mulu"></i></a> |
| </button> |
| </li> |
| <li class="menu_con"> |
| <div class="list_father"> |
| <div class="arr_box"> |
| <button class="btn-noborder arr-btn scroll-down left_scroll_down"><i class="icon iconfont icon-xiajiantou"></i></button> |
| <button class="btn-noborder arr-btn scroll-up left_scroll_top"><i class="icon iconfont icon-shangjiantou"></i></button> |
| </div> |
| <div class="arr"></div> |
| <div id="csdnBlogDir"></div> |
| </div> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| <button class="left-fixed-btn csdn-tracking-statistics tracking-click" data-mod="popu_374" id="com-quick-collect" target="_self" title="收藏"> |
| <a href="javascript:void(0);" class="iconbox border_purple" ><i class="icon iconfont icon-shoucang"></i></a> |
| </button> |
| </li> |
| <li> |
| <button class="left-fixed-btn btn-pinglun csdn-tracking-statistics tracking-click" data-mod="popu_544" title="评论"> |
| <a href="javascript:void(0);" class="iconbox border_purple" ><i class="icon iconfont icon-pinglun"></i></a> |
| </button> |
| </li> |
| <li class="bdsharebuttonbox"> |
| <button class="outside left-fixed-btn csdn-tracking-statistics tracking-click" data-mod="popu_172" title="分享到新浪微博"> |
| <span class="iconbox border_red2"><i class="icon iconfont icon-xinlang"></i></span> |
| <a href="#" class="bds_tsina" data-cmd="tsina" > </a> |
| </button> |
| </li> |
| <li class="bdsharebuttonbox"> |
| <button class="outside left-fixed-btn csdn-tracking-statistics tracking-click" data-mod="popu_172" title="分享到微信"> |
| <span class="iconbox border_green"><i class="icon iconfont icon-weixin"></i></span> |
| <a href="#" class="bds_weixin" data-cmd="weixin" > </a> |
| </button> |
| </li> |
| <li class="bdsharebuttonbox"> |
| <button class="outside left-fixed-btn csdn-tracking-statistics tracking-click" data-mod="popu_172" title="分享到QQ空间"> |
| <span class="iconbox border_blue"><i class="icon iconfont icon-QQ"></i></span> |
| <a href="#" class="bds_qzone" data-cmd="qzone" > </a> |
| </button> |
| </li> |
| <li id="share_box"> |
| |
| <div class="bdsharebuttonbox csdn-tracking-statistics tracking-click" data-mod="popu_172"> |
| |
| |
| |
| </div> |
| </li> |
| </ul> |
| </div> |
| <div class="right_fixed"> |
| <div class="r_ico"> |
| <i class="icon iconfont icon-jubao"></i> |
| <span class="txt" id="reportBtn">内容举报</span> |
| </div> |
| <div class="returnTop"> |
| <i class="icon iconfont icon-fanhuidingbu"></i> |
| <span>返回顶部</span> |
| </div> |
| </div> |
| <div id="pop_win"></div> |
| <div id="popup_mask"></div> |
| <div class="pop_CA_cover" ></div> |
| <div class="pop pop_CA" > |
| <div class="CA_header"> |
| 收藏助手 |
| <span class="cancel_icon" id="fapancle" ></span> |
| </div> |
| <iframe src="" id="collectIframe" frameborder="0" width="100%" height="360" scrolling="no" ></iframe> |
| </div> |
| |
| <div id="report_dialog" style="top: 250px; left: 343.5px;"><div id="panel_report"> |
| <div class="panel_head">不良信息举报</div> |
| <form method="post" id="frmReport" class="panel_body"> |
| <table border="0" cellpadding="0" cellspacing="4" class="pop_table"> |
| <tbody><tr><td colspan="2">您举报文章:<a href="http://blog.youkuaiyun.com/FireOfStar/article/details/49743665" target="_blank">Spring框架简介---使用场景</a></td></tr> |
| <tr> |
| <th style="width:60px;">举报原因:</th> |
| <td id="panel_reporttype"> |
| <label><input type="radio" class="report_type" id="report_sex" name="report_type" value="1">色情</label> |
| <label><input type="radio" class="report_type" id="report_Politics" name="report_type" value="2">政治</label> |
| <label><input type="radio" class="report_type" id="report_copy" name="report_type" value="3">抄袭</label> |
| <label><input type="radio" class="report_type" id="report_ad" name="report_type" value="4">广告</label> |
| <label><input type="radio" class="report_type" id="report_want" name="report_type" value="5">招聘</label> |
| <label><input type="radio" class="report_type" id="report_call" name="report_type" value="6">骂人</label> |
| <br> |
| <label><input type="radio" class="report_type" id="report_other" name="report_type" value="7">其他</label> |
| <input type="text" name="report_other_content" id="report_other_content" maxlength="30" style="display: none;"> |
| </td> |
| </tr> |
| <tr id="panel_originalurl" style="display: none;"> |
| <th>原文地址:</th> |
| <td> |
| <input id="originalurl" value="http://" name="originalurl" type="text" style="width: 90%;"> |
| </td> |
| </tr> |
| <tr> |
| <th id="sp_reason">原因补充:</th> |
| <td> |
| <textarea id="report_description" style="width: 300px;" rows="3" name="report_description"></textarea> |
| <p id="sp_n" style="color:#999;margin:0px;padding:0px;">(最多只允许输入30个字)</p> |
| </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td> |
| <input id="btnSubmitReport" name="submit" type="image" align="middle" class="btn_1" src="http://csdnimg.cn/release/phoenix/images/btn_submit.jpg"> |
| <span style="padding-left:20px;"></span> |
| <img id="btnCloseReportDialog" src="http://csdnimg.cn/release/phoenix/images/btn_cancel.jpg" align="middle"> |
| <div id="error" style="color: Red"> |
| </div> |
| </td> |
| </tr> |
| </tbody></table> |
| </form> |
| </div> |
| <script language="javascript" type="text/javascript"> |
| var isComment=0; |
| //显示隐藏地址 |
| $(function () { |
| console.log("version:phoenix"); |
| if(isComment){ |
| $("#report_description").attr("disabled",true); |
| $("#sp_n").hide(); |
| $("#sp_reason").html("评论内容:"); |
| } |
| $(".report_type").click(function () { |
| $("#panel_originalurl,#report_other_content").hide(); |
| switch ($(this).val()) { |
| case '3': |
| $("#panel_originalurl").show(); |
| $("#originalurl").focus(); |
| break; |
| case '7': |
| if(isComment){ |
| $("#report_other_content").show().focus(); |
| } |
| break; |
| } |
| |
| }); |
| |
| $("#frmReport").submit(function () { |
| if (!currentUserName) { |
| |
| if (confirm("您的操作必须登录,是否登录?")) { |
| location.href = "http://passport.youkuaiyun.com/account/login?from=" + encodeURIComponent(location.href); |
| return false; |
| } |
| return false; |
| } |
| |
| var reportType = $("input[name=report_type]:checked").val(); |
| if(!reportType){ |
| alert("请选择举报原因!"); |
| return false; |
| } |
| var otherInfo = ""; |
| switch (reportType) { |
| case '3': |
| otherInfo = $("#originalurl").val(); |
| if (otherInfo == ""||otherInfo=="http://") { |
| alert("举报抄袭必须提供原创文章地址!"); |
| $("#originalurl").focus(); |
| return false; |
| } else if(!checkeURL(otherInfo)) { |
| alert("请输入正确的原创文章地址!"); |
| $("#originalurl").focus(); |
| return false; |
| } |
| break; |
| case '7': |
| otherInfo = $("#report_other_content").val(); |
| if (isComment && !otherInfo) { |
| alert("请填写举报的具体原因!"); |
| $("#report_other_content").focus(); |
| return false; |
| } |
| if(!isComment){ |
| if(!$("#report_description").val()){ |
| alert("请填写举报的具体原因!"); |
| $("#report_description").focus(); |
| return false; |
| } |
| } |
| break; |
| } |
| if(!isComment){ |
| if($("#report_description").val().length>30){ |
| alert("举报原因最多只允许输入30个字!"); |
| return false; |
| } |
| } |
| nowTime = { |
| year: new Date().getFullYear(), |
| month: parseInt(new Date().getMonth())+1, |
| day: new Date().getDate(), |
| hours: parseInt(new Date().getHours())+1, |
| minutes: parseInt(new Date().getMinutes())+1, |
| seconds: parseInt(new Date().getSeconds())+1 |
| }; |
| var data = { |
| articleId: fileName, |
| commentId: 0, |
| reportType: reportType, |
| originalurl: $("#originalurl").val(), |
| report_other_content: $("#report_other_content").val(), |
| report_description: $("#report_description").val(), |
| currentUserName: currentUserName, |
| updatetime: nowTime.year+'/'+nowTime.month+'/'+nowTime.day+' '+ nowTime.hours+':'+nowTime.minutes+':'+seconds, |
| blogUser: username |
| }; |
| if(!isComment){//如果是举报文章 |
| data.report_other_content = data.report_description; |
| // data.report_description = "1. 神经网络这是一个常见的神经网络的图:这是一个常见的三层神经网络的基本构成,Layer L1是输入层,Layer L2是隐含层"; |
| } |
| |
| $.post(blog_address + "/common/report?id="+fileName+"&t=2", data, function (data) { |
| if (data.result == 1){ |
| SetError("感谢您的举报,我们会尽快审核!"); |
| }else{ |
| if (data.content) alert(data.content); |
| } |
| |
| }); |
| return false; |
| }); |
| |
| $("#btnCloseReportDialog").click(function () { |
| CloseDiv(); |
| }); |
| |
| }); |
| |
| //提示后关闭方法 |
| function SetError(error) { |
| $("#btnCloseReportDialog").trigger("click"); |
| alert(error); |
| CloseDiv(); |
| } |
| |
| //关闭方法 |
| function CloseDiv() { |
| |
| $.removeMask(); |
| $("#report_dialog").hide(); |
| return false; |
| } |
| |
| //验证url |
| function checkeURL(url){ |
| return /^http(s)?:\/\/([\w-]+\.)+[\w-]+/i.test(url); |
| } |
| </script> |
| </div> |
| |
| <div id="a52b5334d" style="width: 1px; height: 1px; display: none;"> |
| <script id="adJs52b5334"></script> |
| <script>document.getElementById("adJs52b5334").src = "http://ads.youkuaiyun.com/js/opt/52b5334.js?t=" + Math.random();</script> |
| </div> |
| <script src="http://c.csdnimg.cn/public/common/libs/bootstrap/js/bootstrap.min.js" type="text/javascript"></script> |
| <script type="text/javascript" src="http://csdnimg.cn/release/phoenix/bower-libs/MathJax/MathJax.js?config=TeX-AMS_HTML"></script> |
| |
| <script>window._bd_share_config = { "common": { "bdSnsKey": {}, "bdText": "", "bdMini": "1", "bdMiniList": false, "bdPic": "", "bdStyle": "0", "bdSize": "16" }, "share": {} }; with (document) 0[(getElementsByTagName('head')[0] || body).appendChild(createElement('script')).src = 'http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion=' + ~(-new Date() / 36e5)];</script> |
| <script type="text/javascript" > |
| if($(".article_collect li").length==1){$(".article_collect").hide();} |
| if($(".article_tags li").length==1){$(".article_tags").hide();} |
| $(".edit a").attr("href","http://write.blog.youkuaiyun.com/postedit/"+fileName); |
| $.each($(".edu_li a"),function(){$(this).attr("href",$(this).attr("href").replace("blog7","blog9"))}); |
| new CNick('#uid').showNickname(); |
| |
| if($("#fan").html()=="") |
| { |
| $("#fan").html(0); |
| } |
| </script> |
| <script src="http://c.csdnimg.cn/public/common/append_mark/appendMark.min.js?v=5.00.43" type="text/javascript"></script> |
| <script type="text/javascript"> |
| appendMark($('.recommend_list').children('a').find('dt'),$('.extension_other')) |
| </script> |
| <div class=""id="loginWrap"></div> |
| <div class="" id="dlMask"></div> |
| </body> |
| |