Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Apache Shiro 10·ÖÖÓÈëÃŽ̳Ì
 
×÷Õߣº³¾_Öñ
  2025  次浏览      27
2020-5-21
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª½éÉÜÁËApache ShiroÄÜ×öʲô£¿¿ª·¢ÈËÔ±ÈçºÎÔÚÆäÓ¦ÓóÌÐòÖÐʹÓÃShiro£¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚ¼òÊ飬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼­¡¢ÍƼö¡£

1.¼ò½é

»¶Ó­À´µ½Apache ShiroµÄ10·ÖÖӽ̳̣¡

ͨ¹ýÔĶÁÕâ¸ö¿ìËÙ¼òµ¥µÄ½Ì³Ì£¬Äú½«³ä·ÖÁ˽⿪·¢ÈËÔ±ÈçºÎÔÚÆäÓ¦ÓóÌÐòÖÐʹÓÃShiro¡£¶øÇÒÄãÓ¦¸Ã¿ÉÒÔÔÚ10·ÖÖÓÄÚ×öµ½ÕâÒ»µã¡£

2.¸ÅÀÀ

ʲôÊÇApache Shiro£¿

Apache ShiroÊÇÒ»¸ö¹¦ÄÜÇ¿´óÇÒÒ×ÓÚʹÓõÄJava°²È«¿ò¼Ü£¬Îª¿ª·¢ÈËÔ±ÌṩÁËÒ»¸öÖ±¹Û¶øÈ«ÃæµÄ½â¾ö·½°¸£¬ÓÃÓÚÉí·ÝÑéÖ¤¡¢ÊÚȨ¡¢¼ÓÃܺͻỰ¹ÜÀí¡£

ʵ¼ÊÉÏ£¬ËüʵÏÖÁ˹ÜÀíÓ¦ÓóÌÐò°²È«ÐÔµÄËùÓз½Ã棬ͬʱ¾¡¿ÉÄܱÜÃâ³öÏÖÎÊÌâ¡£Ëü½¨Á¢ÔÚÍêÉÆµÄ½Ó¿ÚÇý¶¯Éè¼ÆºÍÃæÏò¶ÔÏóµÄÔ­ÔòÖ®ÉÏ£¬¿ÉÒÔÔÚÈκÎÄãÏëÏóµÃµ½µÄµØ·½ÊµÏÖ×Ô¶¨ÒåÐÐΪ¡£µ«ÊÇ£¬¶ÔÓÚËùÓÐÊÂÇéÀ´Ëµ£¬Ä¬ÈÏÇé¿ö϶¼ÊǺÏÀíµÄ£¬ÕâÓëÓ¦ÓóÌÐò°²È«ÐÔÊÇÒ»ÑùµÄ¡£ÖÁÉÙÕâÊÇÎÒÃÇËù×·ÇóµÄ¡£

Apache ShiroÄÜ×öʲô£¿

ºÜ¶à¡£µ«ÎÒÃDz»ÏëÀ©ÕÅ¡°¿ìËÙÈëÃÅ¡±µÄÄÚÈÝ¡£Èç¹ûÄúÏëÁ˽âËü¿ÉÒÔΪÄú×öʲô£¬Çë²é¿´ÎÒÃǵŦÄÜÒ³Ãæ¡£´ËÍ⣬Èç¹ûÄú¶ÔÎÒÃÇÈçºÎ¿ªÊ¼ÒÔ¼°ÎªÊ²Ã´´æÔڸе½ºÃÆæ£¬Çë²ÎÔÄShiro History and MissionÒ³Ãæ¡£

ok£¬ÏÖÔÚÎÒÃÇÀ´×öһЩÊÂÇé°É£¡

×¢Ò⣺

Shiro¿ÉÒÔÔÚÈκλ·¾³ÏÂÔËÐУ¬´Ó×î¼òµ¥µÄÃüÁîÐÐÓ¦ÓóÌÐòµ½×î´óµÄÆóÒµWebºÍ¼¯ÈºÓ¦ÓóÌÐò£¬µ«ÊÇÎÒÃǽ«ÔÚÕâ¸ö¿ìËÙÈëÃÅ(QuickStart)ÖÐʹÓÃÒ»¸ö¼òµ¥µÄ"main"·½·¨À´Íê³ÉÒ»¸ö×î¼òµ¥µÄÀý×Ó£¬ÒÔ±ã¿ÉÒÔ»ñµÃ¶ÔAPIµÄ¸ÐÊÜ¡£

3.ÏÂÔØ

1£©È·±£Äú°²×°ÁËJDK1.6+ºÍMaven 3.0.3+¡£

2£©´ÓÏÂÔØÒ³ÃæÏÂÔØ×îеÄShiro"Ô´´úÂë·Ö·¢"°ü¡£ÔÚÕâ¸öÀý×ÓÖУ¬ÎÒÃÇʹÓÃ1.3.2·¢Ðа汾¡£

3£©½âѹԴ´úÂë°ü

$ unzip shiro-root-1.3.2-source-release.zip

4£©½øÈëquickstartĿ¼

$ cdshiro-root-1.3.2/samples/quickstart

5£©ÔËÐÐQuickStart

$mvn compile exec:java

Õâ¸öÄ¿±êÖ»»á´òÓ¡³öһЩÈÕÖ¾ÏûÏ¢£¬ÈÃÄãÖªµÀ·¢ÉúÁËʲô£¬È»ºóÍ˳ö¡ª¡ª(Ö÷ÒªMaven¹¹½¨ÏîÄ¿µÄ¹ý³Ì£¬°üÀ¨ÏÂÔØÒ»Ð©ÓйصÄ×é¼þ£¬ÏÂÔØºó£¬Ï´ÎÔËÐоͲ»ÔÙ´ÎÏÂÔØÁË)¡£ÔÚÔĶÁ±¾¿ìËÙÈëÃÅÖ¸ÄÏʱ£¬ÇëËæÊ±²é¿´samples / quickstart / src / main / java / Quickstart.javaϵĴúÂë¡£¸ù¾ÝÐèÒªËæÊ±¸ü¸Ä¸ÃÎļþ²¢ÔËÐÐÉÏÊömvn

compile exec£ºjavaÃüÁî¡£

¡¾×¢£º¡¿

ÎÒÕâÀïÔÚwindows8ÏÂÔËÐеģ¬JDK1.8+maven3.5£»²½ÖèͬÉÏ¡£

ΪÁËÖªµÀÔËÐнá¹û£¬ÎÒÔÚÔ´´úÂëÍ˳öǰλÖüÓÁËÒ»ÐдúÂ룬ÒÔ¹Û²âЧ¹û£º

log.info("\n====This is Quikstart

Exampel.It is done!====");//Ôö¼Ó´úÂëÐÐ

½á¹ûʾÒâͼ£º

4.Quickstart.java

ÉÏÃæÒýÓõÄQuickstart.javaÎļþ°üº¬ÁËËùÓпÉÒÔ°ïÖúÄúÊìϤAPIµÄ´úÂë¡£ÏÖÔÚÈÃÎÒÃǰÑËü·Ö³É´ó¿é£¬ÕâÑùÄã¾Í¿ÉÒÔºÜÈÝÒ×µØÀí½â·¢ÉúÁËʲô¡£

¼¸ºõÔÚËùÓл·¾³ÖУ¬Äú¶¼¿ÉÒÔͨ¹ýÒÔϵ÷ÓûñÈ¡µ±Ç°ÕýÔÚÖ´ÐеÄÓû§£º

Subject currentUser =SecurityUtils.getSubject();

ʹÓÃSecurityUtils.getSubject()£¬ÎÒÃÇ¿ÉÒÔ»ñµÃµ±Ç°ÕýÔÚÖ´ÐеÄSubject¡£Ö÷ÌåÖ»ÊÇÓ¦ÓóÌÐòÓû§µÄÌØ¶¨°²È«"ÊÓͼ"¡£ÎÒÃÇʵ¼ÊÉÏÏë³ÆËüΪ'User(Óû§)'£¬ÒòΪÕâ"ÓеÀÀí"£¬µ«ÎÒÃǾö¶¨²»Õâô¸É£ºÌ«¶àµÄÓ¦ÓóÌÐò¶¼ÓÐÏÖ´æµÄAPI£¬ËüÃÇÒѾ­ÓµÓÐ×Ô¼ºµÄUserÀà/¿ò¼Ü£¬ÎÒÃDz»ÏëÓëÕâЩAPI³åÍ»¡£ÁíÍ⣬ÔÚ°²È«ÁìÓò£¬ÊõÓïSubjectʵ¼ÊÉÏÊǹ«ÈϵÄÃüÃû·¨¡£ ok£¬¼ÌÐø...

¶ÀÁ¢Ó¦ÓóÌÐòÖеÄgetSubject()µ÷Ó㬿ÉÄÜ»á¸ù¾ÝÌØ¶¨ÓÚÓ¦ÓóÌÐòµÄλÖÃÖеÄÓû§Êý¾ÝÒÔ¼°·þÎñÆ÷»·¾³£¨ÀýÈçWebÓ¦ÓóÌÐò£©·µ»ØÏàÓ¦Subject£¬²¢¸ù¾ÝÓ뵱ǰÏ̻߳ò´«ÈëÇëÇó¹ØÁªµÄÓû§Êý¾Ý¶ø»ñÈ¡Subject? ¡£

ÏÖÔÚÄãÓÐÒ»¸öÖ÷Ì⣬Äã¿ÉÒÔÓÃËü×öʲô£¿

Èç¹ûÄúÏëÔÚÓ¦ÓóÌÐòµÄµ±Ç°»á»°ÆÚ¼äÏòÓû§Ìṩ¿ÉÓõÄÄÚÈÝ£¬Ôò¿ÉÒÔ»ñµÃËûÃǵĻỰ£º

Session session = currentUser.getSession();
session.setAttribute( "someKey", "aValue" );

SessionÊÇÒ»¸öShiroÌØ¶¨µÄʵÀý£¬Ëü¸øÄãÌṩÁË´ó¶àÊýϰ¹ßµÄ³£¹æHttpSessionʵÀý£¬µ«ÓÐһЩ¶îÍâµÄºÃ´¦ºÍÒ»¸öºÜ´óµÄÇø±ð£ºËü²»ÐèÒªHTTP»·¾³£¡

Èç¹ûÔÚWebÓ¦ÓóÌÐòÄÚ²¿Êð£¬Ä¬ÈÏÇé¿öÏ»Ự½«»ùÓÚHttpSession¡£µ«ÊÇ£¬ÔÚ·ÇWeb»·¾³ÖУ¬¾ÍÏñÕâ¸ö¼òµ¥µÄ¿ìËÙÈëÃÅÒ»Ñù£¬ShiroĬÈÏ»á×Ô¶¯Ê¹ÓÃËüµÄÆóÒµ»á»°¹ÜÀí¡£ÕâÒâζ×ÅÎÞÂÛ²¿Êð»·¾³ÈçºÎ£¬Äú¶¼¿ÉÒÔÔÚÓ¦ÓóÌÐòÖеÄÈκβãÖÐʹÓÃÏàͬµÄAPI¡£Õ⽫´ò¿ªÒ»¸öȫеÄÓ¦ÓóÌÐòÊÀ½ç£¬ÒòΪÈκÎÐèÒª»á»°µÄÓ¦ÓóÌÐò¶¼²»ÐèÒªÇ¿ÖÆÊ¹ÓÃHttpSession»òEJB Stateful Session Beans¡£¶øÇÒ£¬Èκοͻ§¶Ë¼¼ÊõÏÖÔÚ¶¼¿ÉÒÔ¹²Ïí»á»°Êý¾Ý¡£

ËùÒÔÏÖÔÚÄã¿ÉÒÔ»ñµÃÒ»¸öSubjectºÍËûÃǵÄSession¡£ÄÇÐ©ÕæÕýÓÐÓõĶ«Î÷±ÈÈç¼ì²éÊÇ·ñÔÊÐíËûÃÇ×öÊÂÇ飬±ÈÈç¼ì²é½ÇÉ«ºÍȨÏÞ£¿

ÄÇô£¬ÎÒÃÇÖ»ÄܶÔÒÑÖªµÄÓû§½øÐÐÕâЩ¼ì²é¡£ÉÏÃæµÄSubjectʵÀý´ú±íµ±Ç°Óû§£¬µ«Ë­Êǵ±Ç°Óû§£¿Æäʵ£¬ËûÃÇÊÇÄäÃûµÄ - Ò²¾ÍÊÇ˵£¬Ö±µ½ËûÃǵǼÖÁÉÙÒ»´Î¡£ËùÒÔ£¬ÈÃÎÒÃÇÕâÑù×ö£º

if ( !currentUser.isAuthenticated() ) {
//ÒÔguiÌØ¶¨·½Ê½ÊÕ¼¯Óû§Ö÷ÌåºÍƾ֤-principalsand credentials
//Èçhtml±íµ¥µÄÓû§Ãû/ÃÜÂ룬X509Ö¤Ê飬OpenIDµÈ¡£
//ÎÒÃǽ«ÔÚÕâÀïʹÓÃÓû§Ãû/ÃÜÂëʾÀý£¬ÒòΪËüÊÇ×î³£¼ûµÄ¡£
//(ÄãÖªµÀÕâÊÇʲôµçÓ°Âð£¿;)
UsernamePasswordToken token = newUsernamePasswordToken("lonestarr", "vespa");
//this isall you have to do to support 'remember me' (no config - built in!):
//Õâ¾ÍÊÇÄãÐèÒª×öµÄËùÓÐÊÂÇéÒÔ±ãÀ´Ö§³Ö'¼ÇסÎÒ'£¨Ã»ÓÐÅäÖà - ÄÚÖã¡£©
token.setRememberMe(true);
currentUser.login(token);
}

¸½ÉÏÊö´úÂë½ØÍ¼£¨ÇåÎúЩ:£©

·ç¸ñ»¯´úÂë½ØÍ¼

¾ÍÕâÑù£¡Ã»ÓбÈÕâ¸üÈÝÒ×ÁË¡£

µ«ÊÇ£¬Èç¹ûËûÃǵĵǼ³¢ÊÔʧ°ÜÄØ£¿Äã¿ÉÒÔ²¶×½¸÷ÖÖ¾ßÌåµÄÀýÍâÇé¿ö£¬¸æËßÄãµ½µ×·¢ÉúÁËʲô£¬²¢ÔÊÐíÄãÏàÓ¦µØ´¦ÀíºÍ×ö³ö·´Ó¦£º

try {
currentUser.login( token );
//Èç¹ûûÓÐÀýÍ⣬¾ÍÊÇÕâÑù£¬¸ã¶¨£¡
} catch ( UnknownAccountException uae ) {
//Óû§Ãû²»ÔÚϵͳÖУ¬ÈçºÎÏòËûÃÇÏÔʾ´íÎóÏûÏ¢£¿
} catch ( IncorrectCredentialsException ice) {
//ÃÜÂ벻ƥÅ䣬ÊÇ·ñÔÙÊÔ£¿
} catch ( LockedAccountException lae ) {
//¸ÃÓû§ÃûµÄÕÊ»§±»Ëø¶¨ - ÎÞ·¨µÇ¼¡£ÈçºÎÏÔʾһÌõÏûÏ¢£¿
}
...¸ü¶àÀàÐ͵ÄÒì³£¼ì²é¡ª¡ªÈç¹ûÄãÏëÒª...
} catch ( AuthenticationException ae ) {
//ÒâÍâÇé¿ö - Ôõô´¦Àí?
}

¸½ÉÏÊö´úÂë½ØÍ¼

·ç¸ñºÍ´úÂë½ØÍ¼

Äú¿ÉÒÔ¼ì²éÐí¶à²»Í¬ÀàÐ͵ÄÀýÍâÇé¿ö£¬»òÕßÅ׳öShiro¿ÉÄÜÎÞ·¨½âÊ͵Ä×Ô¶¨ÒåÒì³£Çé¿ö¡£Óйظü¶àÐÅÏ¢£¬Çë²ÎÔÄAuthenticationException JavaDoc¡£

Ìáʾ£º

°²È«×î¼Ñ×ö·¨ÊÇΪÓû§ÌṩͨÓõǼʧ°ÜÏûÏ¢Ìáʾ£¬ÒòΪÄú²»Ï£Íû°ïÖú¹¥»÷ÕßÊÔͼ½øÈëϵͳ¡£

ok£¬µ½ÏÖÔÚΪֹ£¬ÎÒÃÇÓÐÒ»¸öµÇ¼Óû§¡£ÎÒÃÇ»¹ÄÜ×öʲô£¿

ÈÃÎÒÃÇ¿´¿´ËûÃÇÊÇË­£º

//´òÓ¡ËûÃǵıêʶÖ÷Ì壨ÔÚÕâÖÖÇé¿öÏÂÊÇÓû§Ãû£©
log.info( "User [" +currentUser.getPrincipal() + "] logged in successfully." );
ÎÒÃÇÒ²¿ÉÒÔ²âÊÔËüÃÇÊÇ·ñ¾ßÓÐÌØ¶¨µÄ½ÇÉ«£º
if ( currentUser.hasRole( "schwartz" ) ) {
log.info("May the Schwartz be with you!" );
} else {
log.info("Hello, mere mortal." );
}
ÎÒÃÇ»¹¿ÉÒÔ¿´µ½ËûÃÇÊÇ·ñÓÐȨ¶ÔijÖÖÀàÐ͵ÄʵÌå²ÉÈ¡Ðж¯:
if ( currentUser.isPermitted("lightsaber:weild" ) ) {
log.info("You may use a lightsaber ring.? Use it wisely.");
} else {
log.info("Sorry, lightsaber rings are for schwartz mastersonly.");
}

ÁíÍ⣬ÎÒÃÇ¿ÉÒÔÖ´Ðзdz£Ç¿´óµÄʵÀý¼¶È¨ÏÞ¼ì²é - ²é¿´Óû§ÊÇ·ñÓÐȨ·ÃÎÊÌØ¶¨ÀàÐÍʵÀýµÄ¹¦ÄÜ

if ( currentUser.isPermitted("winnebago:drive:eagle5" ) ) {
log.info("You are permitted to 'drive' the 'winnebago' with licenseplate (id) 'eagle5'.? " +
"Here are the keys - have fun!");
} else {
log.info("Sorry, you aren't allowed to drive the 'eagle5'winnebago!");
}

 

С²ËÒ»µú£¬¶Ô°É£¿

×îºó£¬µ±Óû§Íê³ÉʹÓÃÓ¦ÓóÌÐòʱ£¬ËûÃÇ¿ÉÒÔ×¢Ïú£º

currentUser.logout(); //ɾ³ýËùÓбêʶÐÅÏ¢²¢Ê¹Æä»á»°ÎÞЧ¡£

ÄÇô£¬Õâ¾ÍÊÇÔÚÓ¦ÓóÌÐò¿ª·¢ÈËÔ±¼¶±ðʹÓÃApache ShiroµÄºËÐÄ¡£ËäÈ»ÓÐһЩ·Ç³£¸´ÔӵĶ«Î÷ÔÚÒýÇæ¸ÇϽøÐУ¬Ê¹µÃÕâÏ×÷Èç´ËÓÅÑÅ£¬µ«ÕâȷʵÊÇËüµÄÈ«²¿¡£

µ«ÊÇÄã¿ÉÄÜ»áÎÊ×Ô¼º£¬"µ«ÊÇË­¸ºÔðÔڵǼʱ»ñÈ¡Óû§Êý¾Ý£¨Óû§ÃûºÍÃÜÂ룬½ÇÉ«ºÍȨÏ޵ȣ©£¬ÒÔ¼°Ë­ÔÚÔËÐÐÊ±ÕæÕýÖ´ÐÐÕâЩ°²È«¼ì²é£¿"£¬ÕâôÎʾͶÔÁË¡ª¡ªÄãÀ´×ö£ºÍ¨¹ýʵʩ Shiro³ÆÖ®ÎªRealmµÄ¶«Î÷£¬²¢½«¸ÃRealm²åÈëµ½ShiroµÄÅäÖÃÖÐÀ´Íê³É¡£

µ«ÊÇ£¬ÈçºÎÅäÖÃRealmºÜ´ó³Ì¶ÈÉÏÈ¡¾öÓÚÄúµÄÔËÐÐʱ»·¾³¡£ÀýÈ磬Èç¹ûÔËÐжÀÁ¢Ó¦ÓóÌÐò£¬»òÕßÈç¹ûÄúÓлùÓÚWebµÄÓ¦ÓóÌÐò£¬»ò»ùÓÚSpring»òJEEÈÝÆ÷µÄÓ¦ÓóÌÐò»òÆä×éºÏ£¬ÕâÖÖÀàÐ͵ÄÅäÖò»ÔÚ±¾¿ìËÙÈëÃŵķ¶Î§Ö®ÄÚ£¬ÒòΪËüµÄÄ¿µÄÊÇÈÃÄú¶ÔAPIºÍShiroµÄ¸ÅÄî¸Ðµ½ÂúÒâ¡£

µ±Äú×¼±¸ºÃÁ˽â¸ü¶àϸ½Úʱ£¬ÄúÒ»¶¨ÒªÔĶÁÈÏÖ¤Ö¸ÄϺÍÊÚȨָÄÏ¡£È»ºó¿ÉÒÔתµ½ÆäËûÎĵµ£¬ÌرðÊDzο¼ÊÖ²áÖУ¬ÒԻشðÈÎºÎÆäËûÎÊÌâ¡£ÄúÒ²¿ÉÄÜÏëÒª¼ÓÈëÓû§ÓʼþÁбí - Äú»á·¢ÏÖÎÒÃÇÓÐÒ»¸ö·Ç³£°ôµÄÉçÇø£¬Ö»ÒªÓпÉÄÜ£¬ËûÃǶ¼Ô¸ÒâÌṩ°ïÖú¡£

 

   
2025 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

iOSÓ¦Óð²È«¿ª·¢£¬Äã²»ÖªµÀµÄÄÇЩÊÂÊõ
Web°²È«Ö®SQL×¢Èë¹¥»÷
ÒÆ¶¯APP°²È«ÔÚÉøÍ¸²âÊÔÖеÄÓ¦ÓÃ
´ÓGoogle±¸·Ý»¥ÁªÍø¿´¡°Êý¾Ý°²È«¡±
 
Ïà¹ØÎĵµ

web°²È«Éè¼ÆÓë·À»¤
»¥ÁªÍøº£Á¿ÄÚÈݰ²È«´¦Àí¼¼Êõ
ºÚ¿Í¹¥»÷Óë·À·¶¼¼Êõ
WEBºÚºÐ°²È«¼ì²â
 
Ïà¹Ø¿Î³Ì

WEBÍøÕ¾ÓëÓ¦Óð²È«Ô­ÀíÓëʵ¼ù
webÓ¦Óð²È«¼Ü¹¹Éè¼Æ
´´½¨°²È«µÄJ2EE WebÓ¦ÓôúÂë
ÐÅÏ¢°²È«ÎÊÌâÓë·À·¶
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
ÎïÁªÍø°²È«¸ÅÊö
Ê·ÉÏ×îÏêϸµÄÇø¿éÁ´¼¼Êõ¼Ü¹¹·ÖÎö
Ò»ÎĶÁ¶®Çø¿éÁ´ÕûÌå¼Ü¹¹¼°Ó¦Óð¸Àý
Çø¿éÁ´¼¼Êõ¼Ü¹¹
°²È«¼Ü¹¹ÆÀÉóʵս
×îпγÌ
WebÓ¦Óð²È«¼Ü¹¹¡¢ÈëÇÖ¼ì²âÓë·À»¤
ÎïÁªÍø¹Ø¼ü¼¼Êõ¡¢°²È«Óë±ßÔµ¼ÆËã
Çø¿éÁ´°²È«¼¼Êõʵ¼ùÖ¸ÄÏ
ÔÆ·þÎñÓ밲ȫ¼Ü¹¹
»¥ÁªÍø°²È«¿ª·¢·½·¨Óëʵ¼ù
³É¹¦°¸Àý
ÖйúÒøÐÐ ÐÅÏ¢°²È«¼¼Êõ¼°Éî¶È·ÀÓù
±±¾© WebÓ¦Óð²È«¼Ü¹¹¡¢ÈëÇÖ¼ì²âÓë·À»¤
ij²ÆË°ÁìÓòÖªÃûIT·þÎñÉÌ Web°²È«²âÊÔ
ÆÕÈð¿Ë˹ web°²È«Éè¼Æ¡¢²âÊÔÓëÓÅ»¯
±±¾©ºÍÀûʱ ÐÔÄܺͰ²È«ÐÔ²âÊÔ