锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲av中文无码,浮力影院亚洲国产第一页,国产成人亚洲综合在线http://www.tkk7.com/Hafeyang/category/39346.html闀夸簬鍓嶇寮鍙戙備箰鎰忓垎浜?/description>zh-cnMon, 29 Nov 2010 14:53:11 GMTMon, 29 Nov 2010 14:53:11 GMT60鏁村悎struts2,spring-struts2鐨剆pring鎻掍歡浣跨敤鍙婄畝鍗曞墫鏋?/title><link>http://www.tkk7.com/Hafeyang/archive/2010/11/28/integration_of_spring_struts2_using_struts-spring-plugin_and_how_it_works.html</link><dc:creator>闃寵 閿?/dc:creator><author>闃寵 閿?/author><pubDate>Sun, 28 Nov 2010 15:45:00 GMT</pubDate><guid>http://www.tkk7.com/Hafeyang/archive/2010/11/28/integration_of_spring_struts2_using_struts-spring-plugin_and_how_it_works.html</guid><wfw:comment>http://www.tkk7.com/Hafeyang/comments/339277.html</wfw:comment><comments>http://www.tkk7.com/Hafeyang/archive/2010/11/28/integration_of_spring_struts2_using_struts-spring-plugin_and_how_it_works.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/Hafeyang/comments/commentRss/339277.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/Hafeyang/services/trackbacks/339277.html</trackback:ping><description><![CDATA[<p>struts2涓巗pring鐨勬暣鍚堜腑鏈変竴縐嶆柟娉曟槸閫氳繃struts-spring-plugin錛屼嬌鐢ㄨ鎻掍歡鎸囧畾struts涓殑objectfactory涓簊pring鐨刡eanfactory,綆鍗曠殑璇達紝灝辨槸浣跨敤spring 鐨刡ean瀹瑰櫒綆$悊struts鐨凙ction鐨勫疄渚嬪寲銆?br /> <br /> 浣跨敤姝ラ錛?br /> 1.寮曞叆struts2-spring-plugin-x-x-x.jar 鍒癱lasspath<br /> 2.鍦╯truts.xml鎴栬卻truts2.properties涓寚瀹歰bjectFactory</p> <pre style="text-align: left; padding-bottom: 0px; overflow-x: auto; overflow-y: auto; margin: 10px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" class="code-java"><struts> <constant name=<span id="ztdrvln" class="code-quote">"struts.objectFactory"</span> value=<span id="1t31thz" class="code-quote">"org.apache.struts2.spring.StrutsSpringObjectFactory"</span> /> ... </struts> </pre> 浜嬪疄涓婅繖涓楠ゅ彲浠ョ渷鐣ワ紝鍦╯truts2-spring-plugin-x-x-x.jar 鏈変竴涓猻truts-plugins.xml錛屾牸寮忎笌struts.xml鐨勬牸寮忎竴鑷達紝struts鐨勯厤緗枃浠跺姞杞介『搴忥紝鏄劇ずstruts-default.xml錛屽畾涔夊湪struts-core.jar涓傜劧鍚庡姞杞絪truts.xml錛屾渶鍚庡姞杞絪truts-plugin.xml銆?br /> 3.鍦ˋction鐨勫氨鍙互浣跨敤@Autowired涔嬬被鐨凙nnotation娉ㄥ叆Bean錛屽<br /> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">@Component<br /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> PandoraAction {<br /> <br />     @Inject<br />     </span><span style="color: #0000ff">private</span><span style="color: #000000"> TestService testService;<br />     </span></div> <br /> 鎺㈢┒鍏跺師鐞嗭紝鑷劧闇瑕佷粠StrutsSpringObjectFactory綾誨紑濮嬩簡銆?br /> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> StrutsSpringObjectFactory </span><span style="color: #0000ff">extends</span><span style="color: #000000"> SpringObjectFactory </span><span style="color: #0000ff">implements</span><span style="color: #000000"> ObjectFactoryInitializable {<br />     </span><span style="color: #0000ff">private</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">final</span><span style="color: #000000"> Log log </span><span style="color: #000000">=</span><span style="color: #000000"> LogFactory.getLog(StrutsSpringObjectFactory.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br /> <br />     </span><span style="color: #008000">/*</span><span style="color: #008000"> (non-Javadoc)<br />      * @see org.apache.struts2.util.ObjectFactoryInitializable#init(javax.servlet.ServletContext)<br />      </span><span style="color: #008000">*/</span><span style="color: #000000"><br />     </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> init(ServletContext servletContext) {<br />         log.info(</span><span style="color: #000000">"</span><span style="color: #000000">Initializing Struts-Spring integration<img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span style="color: #000000">"</span><span style="color: #000000">);<br /> <br />         ApplicationContext appContext </span><span style="color: #000000">=</span><span style="color: #000000"> WebApplicationContextUtils.getWebApplicationContext(servletContext);<br />         </span><span style="color: #0000ff">if</span><span style="color: #000000"> (appContext </span><span style="color: #000000">==</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000">) {<br />             </span><span style="color: #008000">//</span><span style="color: #008000"> uh oh! looks like the lifecycle listener wasn't installed. Let's inform the user</span><span style="color: #008000"><br /> </span><span style="color: #000000">            String message </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">********** FATAL ERROR STARTING UP SPRING-STRUTS INTEGRATION **********\n</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"><br />                     </span><span style="color: #000000">"</span><span style="color: #000000">Looks like the Spring listener was not configured for your web app! \n</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"><br />                     </span><span style="color: #000000">"</span><span style="color: #000000">Nothing will work until WebApplicationContextUtils returns a valid ApplicationContext.\n</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"><br />                     </span><span style="color: #000000">"</span><span style="color: #000000">You might need to add the following to web.xml: \n</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"><br />                     </span><span style="color: #000000">"</span><span style="color: #000000">    <listener>\n</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"><br />                     </span><span style="color: #000000">"</span><span style="color: #000000">        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>\n</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"><br />                     </span><span style="color: #000000">"</span><span style="color: #000000">    </listener></span><span style="color: #000000">"</span><span style="color: #000000">;<br />             log.fatal(message);<br />             </span><span style="color: #0000ff">return</span><span style="color: #000000">;<br />         }<br /> <br />         </span><span style="color: #0000ff">this</span><span style="color: #000000">.setApplicationContext(appContext);</span></div> <br /> StrutsSpringObjectFactory緇ф壙鑷猄pringObjectFactory綾伙紝鍦ㄥ垵濮嬪寲鏃朵粠ServletContext鍙栧埌ApplicationContext銆?br /> <br /> SpringObjectFactory 緇ф壙鑷猚om.opensymphony.xwork2.ObjectFactory錛孫bjectFactory鎻愪緵Action鐨勯粯璁ゅ疄渚嬭瘽鍔熻兘銆?br /> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.tkk7.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> SpringObjectFactory </span><span style="color: #0000ff">extends</span><span style="color: #000000"> ObjectFactory </span><span style="color: #0000ff">implements</span><span style="color: #000000"> ApplicationContextAware</span></div> <br /> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #008000">/**</span><span style="color: #008000"><br />      * Looks up beans using Spring's application context before falling back to<br />      * the method defined in the {</span><span style="color: #808080">@link</span><span style="color: #008000"> ObjectFactory}.<br />      * <br />      * </span><span style="color: #808080">@param</span><span style="color: #008000"> beanName<br />      *            The name of the bean to look up in the application context<br />      * </span><span style="color: #808080">@return</span><span style="color: #008000"> A bean from Spring or the result of calling the overridden<br />      *         method.<br />    * </span><span style="color: #808080">@throws</span><span style="color: #008000"> Exception<br />      </span><span style="color: #008000">*/</span><span style="color: #000000"><br />     </span><span style="color: #0000ff">public</span><span style="color: #000000"> Object buildBean(String beanName) </span><span style="color: #0000ff">throws</span><span style="color: #000000"> Exception {<br />         </span><span style="color: #0000ff">try</span><span style="color: #000000"> {<br />             </span><span style="color: #0000ff">return</span><span style="color: #000000"> <strong style="color: red">appContext.getBean(beanName);<br /> </strong>        } </span><span style="color: #0000ff">catch</span><span style="color: #000000"> (NoSuchBeanDefinitionException e) {<br />             Class beanClazz </span><span style="color: #000000">=</span><span style="color: #000000"> getClassInstance(beanName);<br />             </span><span style="color: #0000ff">return</span><span style="color: #000000"> buildBean(beanClazz);<br />         }<br />     }<br /> <br />   </span><span style="color: #008000">/**</span><span style="color: #008000"><br />    * </span><span style="color: #808080">@param</span><span style="color: #008000"> clazz<br />    * </span><span style="color: #808080">@throws</span><span style="color: #008000"> Exception<br />    </span><span style="color: #008000">*/</span><span style="color: #000000"><br />     </span><span style="color: #0000ff">public</span><span style="color: #000000"> Object buildBean(Class clazz) </span><span style="color: #0000ff">throws</span><span style="color: #000000"> Exception {<br />       Object bean </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000">;<br /> <br />       </span><span style="color: #0000ff">try</span><span style="color: #000000"> {<br />           bean </span><span style="color: #000000">=</span><span style="color: #000000"> autoWiringFactory.autowire(clazz, AutowireCapableBeanFactory.AUTOWIRE_CONSTRUCTOR, </span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />       } </span><span style="color: #0000ff">catch</span><span style="color: #000000"> (UnsatisfiedDependencyException e) {<br />           </span><span style="color: #008000">//</span><span style="color: #008000"> Fall back</span><span style="color: #008000"><br /> </span><span style="color: #000000">          bean </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">super</span><span style="color: #000000">.buildBean(clazz);<br />       }<br /> <br />       bean </span><span style="color: #000000">=</span><span style="color: #000000"> autoWiringFactory.applyBeanPostProcessorsBeforeInitialization(bean, bean.getClass().getName());<br />       </span><span style="color: #008000">//</span><span style="color: #008000"> We don't need to call the init-method since one won't be registered.</span><span style="color: #008000"><br /> </span><span style="color: #000000">      bean </span><span style="color: #000000">=</span><span style="color: #000000"> autoWiringFactory.applyBeanPostProcessorsAfterInitialization(bean, bean.getClass().getName());<br /> <br />       </span><span style="color: #0000ff">return</span><span style="color: #000000"> autoWireBean(bean);<br />     }</span></div> <br /> appContext灝辨槸鍦ㄥ垵濮嬪寲涓璼etApplicationContext娉ㄥ叆榪涘幓鐨勩?br /> 閫氳繃閲嶈澆struts2涓粯璁ょ殑buildBean鏂規硶錛岄氳繃spring鐨刡ean瀹瑰櫒瀹炰緥鍖朼ction bean銆?br /> <br /> 鍙傝冭祫鏂?<br />   <p>1.Struts<span style="font-family: 瀹嬩綋">涓叾瀹炰篃鏈変竴浜?/span>IOC<span style="font-family: 瀹嬩綋">鐨勬蹇碉紝鐪嬬湅浠栫殑</span>bean<span style="font-family: 瀹嬩綋">鐨勯厤緗細</span></p> <p><a >http://struts.apache.org/2.0.14/docs/bean-configuration.html</a></p> <p>2.struts-spring-plugin<span style="font-family: 瀹嬩綋">鐨勪粙緇嶏細</span></p> <p><a >http://struts.apache.org/2.x/docs/spring-plugin.html</a></p> <p>3.struts-spring-plugin<span style="font-family: 瀹嬩綋">鍏抽敭綾?/span> StrutsSpringObjectFactory (<span style="font-family: 瀹嬩綋">緇ф壙鑷?/span>SpringObjectFactory),SpringObjectFactory(<span style="font-family: 瀹嬩綋">緇ф壙鑷?/span><span style="font-family: 'Courier New'; color: black; font-size: 12pt">ObjectFactory</span>)<span style="font-family: 瀹嬩綋">鐨勫叧閿唬鐮?/span>:</p> <p><a >http://www.koders.com/java/fid5C3A785273DB48FACE6A555235E29EB629F18284.aspx</a></p> <p><a >http://www.koders.com/java/fid8FB58F1A37336CC84161E3A655F9D4F73A36EC6F.aspx</a></p> <br /> <img src ="http://www.tkk7.com/Hafeyang/aggbug/339277.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/Hafeyang/" target="_blank">闃寵 閿?/a> 2010-11-28 23:45 <a href="http://www.tkk7.com/Hafeyang/archive/2010/11/28/integration_of_spring_struts2_using_struts-spring-plugin_and_how_it_works.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>struts2涓殑mode-driven浣撻獙http://www.tkk7.com/Hafeyang/archive/2009/05/01/model_driven_in_struts2.html闃寵 閿?/dc:creator>闃寵 閿?/author>Fri, 01 May 2009 15:29:00 GMThttp://www.tkk7.com/Hafeyang/archive/2009/05/01/model_driven_in_struts2.htmlhttp://www.tkk7.com/Hafeyang/comments/268557.htmlhttp://www.tkk7.com/Hafeyang/archive/2009/05/01/model_driven_in_struts2.html#Feedback2http://www.tkk7.com/Hafeyang/comments/commentRss/268557.htmlhttp://www.tkk7.com/Hafeyang/services/trackbacks/268557.html鍦ㄥ緢涔呬箣鍓嶆垜灝變綋楠?鎵璋撲綋楠岋紝灝辨槸鍐欎竴涓猟emo璺戣窇錛岀畻涓嶄笂瀛︿範)榪囦竴鎶妔truts2銆備絾鏄垜鍙戠幇铏界劧struts2鐩稿struts1.x鏈夊緢澶х殑涓嶅悓錛屼絾鏄繕鏄病鏈夎В鍐沖洶鎵版垜鐨勮繖涓棶棰樸傚氨鏄痬odel灝辯┒绔熸庝箞鍐欍傚湪涓涓猻pring-hibernate-struts鐨勫吀鍨嬮」鐩腑錛岄氬父浼氬湪Hibernate涓畾涔変竴涓猵ojo瀹炰綋綾誨仛ORM錛屼絾鏄湪struts鐨凙ction鍚屾牱瑕佸畾涔塵odel,涓嶄細鍐嶆妸閭d釜瀹炰綋綾誨啀鍐欎竴閬嶏紝鎴戣寰楀緢闅懼彈錛屾垜鐭ラ亾鍙互鍦ˋction閲岄潰澹版槑涓涓疄浣撶被錛屼絾鏄繖鏍鋒昏寰椾笉鏄緢浼橀泤錛屽洜涓哄湪鎴戠湅鏉ワ紝瀹炰綋綾繪病鏈夊緱鍒板緢濂界殑澶嶇敤錛屾垜鏇劇粡瀵箂truts2寰堝喎婕犮備絾鏄渶榪戜簡瑙e埌struts2閲岄潰鏈変竴涓狹odel-Driven,铏界劧瀵規ā鍨嬮┍鍔ㄥ紑鍙戜簡涔嬬敋灝戯紝浣嗘槸閫氳繃鑷繁鍋氱殑綆鍗曠殑浠g爜錛屾垜鍙戠幇榪欎釜涓栫晫鐪熺殑鏄己灝戝彂鐜般?

榪欎篃鏄涓嬈$敤涓婁簡maven2錛屾渶寮濮嬬敤鍒癿aven2鏄洜涓轟粬鍙互綆$悊渚濊禆(dependency),鎴戜滑鍙鍦╩aven2鐨刾om.xml 鏂囦歡涓坊鍔犱竴涓緷璧栵紝maven 灝變細鑷姩鍒扮綉涓婁笅杞絪truts鎵渚濊禆鐨勫寘騫惰緗ソclasspath銆?br />
tip:瑕佷嬌鐢╩aven2鐨別clipse鎻掍歡m2eclipse蹇呴』灝唀clipse3.4鍗囩駭鍒版渶鏂扮殑鐗堟湰錛屼笉鐒朵細琚姤閿欑殑錛寀pdate绔欑偣涓?http://m2eclipse.sonatype.org/update/

鏂板緩瀹岄」鐩箣鍚庯紝鍦ㄩ」鐩殑鍙抽敭鑿滃崟涓?maven2 -> add maven2 management銆傛暣涓」鐩殑鐩綍緇撴瀯閮戒細鏈夊彉鍖栵紝娉ㄦ剰涓ょ偣錛屾坊鍔犱簡maven2鏀寔鍚庯紝鍦╞uild path涓殑source娌℃湁浜嗭紝闇瑕佹墜鍔ㄦ坊鍔犳枃浠跺す銆傝繕鏈変竴涓棶棰樺氨鏄綘蹇呴』鍦?Order and export"涓皢maven dependencies鍕句笂,鍚﹀垯閮ㄧ講tomcat涓婇潰鐨勬椂鍊欎細鏈夊寘緙哄け銆?br />
榪涘叆姝i錛氬叾瀹瀖odel-driven鍦╯trtus涓殑鐢ㄦ硶娌℃湁浠涔堢壒鍒殑鍦版柟銆傚氨鏄湪瀹氫箟Action鐨勬椂鍊欑◢鏈変笉鍚屻?br />
 1 public class UserAction  extends ActionSupport  implements ModelDriven{
 2 
 3     private static final long serialVersionUID = 6863420763993646296L;
 4     private User user=new User();
 5 
    
 6     public
 Object getModel() {
 7         return
 user;
 8 
    }
 9 
10     public String execute() {
11         if(this.user.getAge()==20this.user.setAge(22);
12         return SUCCESS;
13     }
14 }

鍏跺疄鍙樺寲灝辨槸鍦ㄥ畾涔堿ction鐨勬椂鍊欏疄鐜癕odelDriven鎺ュ彛瀹炵幇getModel鏂規硶銆傛敞鎰忓湪澹版槑瀹炰綋瀵硅薄鐨勬椂鍊欓渶瑕佸疄渚嬪寲銆備絾鏄湪jsp欏甸潰涓婁篃鏄湁涓嶅悓鐨勩?br />
1 <s:form action="UserAction" theme="css_xhtml">
2     <s:textfield name="name" label="濮撳悕"></s:textfield>
3     <s:textfield name="age" label="騫撮緞"></s:textfield>
4     <s:submit value="GO"></s:submit>
5 </s:form>


濡傛灉鎸夌収閫氬父鐨勫仛娉曞湪Action涓畾涔変竴涓猆ser瀵硅薄錛岄偅涔堝湪jsp欏甸潰涓婃枃鏈鐨勫睘鎬у氨搴旇鏄痷ser.name,user.age.榪欐牱鍋氭樉鐒舵洿鍔犵畝鍗曘?/p>

緇撹

浣跨敤model-driven鐨勬柟寮忚兘澶熷皢鐜版湁鐨勫疄浣撶被綆鍗曠殑澶嶇敤涓簃vc妯″瀷涓殑model,鍑忓皯浠g爜銆?br />
鐤戦棶錛氳櫧鐒惰В鍐充簡榪欎箞涓棶棰橈紝浣嗘槸鎴戣繕鏄struts鏈変簺涓嶆斁蹇冿紝灝辨槸tag鐢熸垚鐨刪tml,寰堥毦鑾峰緱dom鐨刬d灞炴э紝榪欐牱緇檍avascript鐨勪竴浜涢昏緫鎺у埗甯︽潵浜嗛夯鐑︼紝榪欎篃鏄垜瀵箂truts涓嶅お鏀懼績鐨勫湴鏂癸紝涓嶇煡閬撳ぇ瀹跺湪榪欐柟闈㈡槸鎬庝箞鍋氱殑銆?/p>




]]>
主站蜘蛛池模板: xxxx日本在线播放免费不卡| 国产成人无码免费视频97| 最近中文字幕国语免费完整| 久久WWW免费人成一看片| 1000部啪啪未满十八勿入免费| 午夜高清免费在线观看| 亚洲国产成人久久笫一页| 亚洲精品午夜无码电影网| 亚洲Av高清一区二区三区| 羞羞漫画在线成人漫画阅读免费| 日韩精品无码一区二区三区免费| 免费被黄网站在观看| 久久精品国产精品亚洲艾| 69av免费观看| 亚洲av无码国产精品色午夜字幕| 亚洲日韩久久综合中文字幕| 免费视频一区二区| 亚洲性在线看高清h片| 亚洲成AV人影片在线观看| 99久热只有精品视频免费看| 久久久久无码专区亚洲av| 亚洲人成网站免费播放| 波多野结衣免费在线| 91亚洲精品第一综合不卡播放| 一级做性色a爰片久久毛片免费| 24小时日本在线www免费的| 亚洲精品视频免费看| 日韩精品无码免费一区二区三区 | 丝袜足液精子免费视频| 亚洲日韩在线中文字幕第一页| 亚洲av成人无码网站…| 免费看少妇作爱视频| 亚洲欧美日韩综合久久久久| 0588影视手机免费看片| 亚洲第一成人在线| 精品国产麻豆免费人成网站| 免费大黄网站在线看| 污污的视频在线免费观看| 亚洲国产成人久久综合碰| 中文字幕在线视频免费| 亚洲小视频在线观看|