¡¡¡¡ActionÀàÊÇÁ¬½ÓStruts¼Ü¹¹ºÍÓ¦ÓÃÖÐÒµÎñÂß¼´úÂëµÄÇÅÁº¡£ËùÒÔÄãÓ¦¸Ã¾¡¿ÉÄÜÈÃActionÀàСÇɼòµ¥£¬ÒòÎªÕæÊµÓ¦ÓÃÖеÄÂß¼´¦ÀíÓ¦¸ÃÊÇÓɵ¥¶À·ÖÀë³öÀ´µÄÂß¼²ãÀ´Íê³ÉµÄ¡£¼ÙÈçÄãÕýÔÚ´ÓÊÂn²ãÓ¦ÓõĿª·¢£¬Ä㵱ȻϣÍû²ãÓë²ãÖ®¼äµÄ½Ó¿ÚÔ½¼òµ¥Ô½ºÃ¡£¶øÊÂʵÉÏ£¬ActionÀàÖеÄÖ÷Òª·½·¨"perform()"£¨1.1ÖÐΪexecute()£©È´Óе㰵ʾӦ¸ÃÔÚ±¾·½·¨ÖÐ×öµãʲôµÄÒâ˼¡£ÎÒÃÇÖªµÀ£¬Ã¿¸öActionÀà¶¼ÐèÒª´Ó org.apache.struts.action.Action ¼ÌÐø¶øÀ´¡£ÔÚСÐÍÓ¦ÓÃÖУ¬ÎÒÃǵÄActionÀàºÜ¿ÉÄܾÍÖ»Òª¼ÌÐøorg.apache.struts.action.Action¾Í×ã¹»ÁË£»¶øÔÚÄ³Ð©ÌØ¶¨µÄ¸´ÔÓÓ¦ÓÃÖУ¬ÎҾʹÓÎÒÃÇËùʵÏÖµÄActionÀàÖÐ×ܽá³öÀ´ÁËһЩͨÓÃÌØÐÔ¡£Òò´Ë£¬ÔÚÎÒ¿´À´£¬¹¹ÔìÒ»¸ö»ùÀཫÕâЩͨÓÃÌØÐԵĴúÂëʵÏÖ³öÀ´£¬ÈÃÓ¦ÓÃÖÐËùÓõ½µÄËùÓÐActionÀ಻ֱ½Ó¼ÌÐøorg.apache.struts.action.Action£¬¶ø¼ÌÐøÕâ¸öÍê³ÉÁËһЩͨÓÃÌØÐԵĻùÀàÒÔʵÏÖ´úÂëÖØÓã¬ÊÇÒ»¸öÏ൱²»´íµÄÉè¼Æ¡£ÎÒÔÚStrutsSampleÖоÍÓ¦ÓÃÁËÕâÖÖ·½·¨£¬¹¹ÔìÁËÕâÑùµÄÒ»¸ö»ùÀ࣬¸Ã»ùÀàµÄ·½·¨ÔÚÍê³É¸´ÔÓÂß¼µÄºÍ¼òµ¥×ª·¢ÇëÇóµÄActionÀàÖж¼¿ÉÒÔʹÓᣠ¡¡¡¡ ¡¡¡¡package com.oreilly.actions; ¡¡¡¡import Java.io.IOException; ¡¡¡¡import java.util.Properties; ¡¡¡¡import java.util.ResourceBundle; ¡¡¡¡import java.util.MissingResourceException; ¡¡¡¡import java.util.Enumeration; ¡¡¡¡import java.util.Properties; ¡¡¡¡import java.rmi.RemoteException; ¡¡¡¡import javax.ejb.EJBHome; ¡¡¡¡import javax.ejb.CreateException; ¡¡¡¡import javax.naming.Context; ¡¡¡¡import javax.naming.InitialContext; ¡¡¡¡import javax.naming.NamingException; ¡¡¡¡import javax.servlet.ServletException; ¡¡¡¡import javax.servlet.http.HttpServletRequest; ¡¡¡¡import javax.servlet.http.HttpServletResponse; ¡¡¡¡import org.apache.struts.action.Action; ¡¡¡¡import org.apache.struts.action.ActionServlet; ¡¡¡¡import org.apache.struts.action.ActionForm; ¡¡¡¡import org.apache.struts.action.ActionForward; ¡¡¡¡import org.apache.struts.action.ActionMapping; ¡¡¡¡ ¡¡¡¡Õâ¸öÀà¾ÍÊÇʹÓÃStruts¿ª·¢Ê±£¬ËùÓÐActionÀà¶¼Òª¼ÌÐøµÄ»ùÀà¡£Ëü°ÑһЩͨ³£ÔÚʵ¼ÊÓ¦ÓÃÖÐ×îÓпÉÄܱ»Óõ½µÄ¶«Î÷¶¼¿¼ÂǽøÀ´ÁË¡£¾ÍÕâÆªÎÄÕ¶øÑÔ£¬ ÀàÖÐһЩÓëStruts²¢²»ÊÇÌ«½ôÃÜÏà¹ØµÄ·½·¨½«Ö»×ö×¢ÊͶø²»»áÍêÕûµÄʵÏÖ£¬¶ø´ÓÊ¿ª·¢¹¤×÷µÄÄ㣬Óа®ºÃµÄ»°£¬ÇëÍê³ÉÕâЩ·½·¨²¢Ó¦ÓÃÕâ¸öÀ࣬½«ÎªÄãÔÚʵ¼ÊÏîÄ¿ÖеĿª·¢¿ìÂí¼Ó±Þ¡£×¢ÖØ£¬ÒòΪËùÓеÄActionÀà¶¼Òª´Óorg.apache.struts.action.Action ¼ÌÐø¶øÀ´£¬ËùÒÔÎÒÃǵÄÕâ¸öÀàͬÑù¡£ ¡¡¡¡ ¡¡¡¡public abstract class AbstStrutsActionBase extends Action { ¡¡¡¡¡¡/ * ¶¨ÒåһЩÔÚstruts-config.XMLÖмǼÔÚ°¸µÄ ¡¡¡¡¡¡ * È«¾ÖÓ¦ÓÃÖнԿɿÉͨÓõÄforward±êʶ*/ ¡¡¡¡¡¡protected static final String SUCCESS = "success"; ¡¡¡¡¡¡protected static final String FAILURE = "failure"; ¡¡¡¡¡¡protected static final String ERROR = "error"; ¡¡¡¡¡¡protected static final String LOGIN = "login"; ¡¡¡¡¡¡protected static final String CONFIRM = "confirm"; ¡¡¡¡¡¡protected Context jndiContext = null; ¡¡¡¡¡¡/** ¡¡¡¡¡¡ * ĬÈϹ¹Ôì·½·¨ ¡¡¡¡¡¡ */ ¡¡¡¡¡¡public AbstStrutsActionBase() { ¡¡¡¡} ¡¡¡¡ ¡¡¡¡/** ¡¡¡¡ ¡¡¡¡ÏÂÃæÕâ¸ö²éÕÒEJBʵÀýµÄ·½·¨½«²»»áÍêÕûʵÏÖ¡£ ¡¡¡¡ ¡¡¡¡Ò»°ãÀ´Ëµ£¬ActionÀàÓ¦¸Ãµ÷ÓÃʵÏÖÁËÓ¦ÓõÄÉÌÎñÂß¼µÄEJB»á»°bean£¨»ò½ö½öÆÕͨJavaBean£©¡£ÔÚ´óÐÍÏîÄ¿ÖУ¬¿ª·¢ÈËÔ±±ØÐë»®Çå²ãÓë²ãÖ®¼äµÄ½çÏÞ¡£ÔÚActionÀàÖУ¬ÎÒÃÇÓ¦¸ÃÄõ½»ñÈ¡º¬ÓÐJNDIÐÅÏ¢µÄ»·¾³µÄʵÀý£¬È»ºóͨ¹ýEJBµÄJNDIÃû×ÖÈ¥²éѯ»ñÈ¡ËüµÄhome½Ó¿Ú¡£¹ý³Ì²¢²»¼òµ¥£¬ËùÒÔÏÂÃæÕâ¸ö´úÂëÆ¬¶ÏÖ»ÊǸö¸ø³öÁ˱ØÒªÊµÏÖµÄСÀý×Ó¡£ ¡¡¡¡ ¡¡¡¡²ÎÊýÀàÐÍString£¬´«ÈëµÄÒª²éѯJNDIµÄÃû×Ö ¡¡¡¡ ¡¡¡¡·µ»ØÀàÐÍObject£¬¼´²éÕÒµ½µÄhome½Ó¿Ú ¡¡¡¡ ¡¡¡¡¼ÙÈç²éÕÒʧ°Ü£¬Å׳öNamingExceptionÒì³£ ¡¡¡¡ ¡¡¡¡¼ÙÈç»ñÈ¡×ÊÔ´ÐÅϢʧ°Ü£¬Å׳öMissingResourceExceptionÒì³£ ¡¡¡¡ ¡¡¡¡*/ ¡¡¡¡ ¡¡¡¡public Object lookup(String jndiName) ¡¡¡¡¡¡¡¡throws NamingException, MissingResourceException { ¡¡¡¡¡¡// Ϊµ÷ÓÃEJB¶ÔÏó£¬Í¨¹ý¹¹½¨¼Ç¼JNDIÐÅÏ¢µÄProperties¶ÔÏó ¡¡¡¡¡¡// À´»ñµÃ³õʼ»·¾³ÐÅÏ¢ ¡¡¡¡¡¡¡¡if (jndiContext == null) { ¡¡¡¡¡¡¡¡¡¡ResourceBundle resource = ¡¡¡¡¡¡¡¡¡¡¡¡ResourceBundle.getBundle("strutssample.properties"); ¡¡¡¡¡¡¡¡Properties properties = new Properties(); ¡¡¡¡¡¡¡¡¡¡properties.setProperty( ¡¡¡¡¡¡¡¡¡¡¡¡Context.INITIAL_CONTEXT_FACTORY, ¡¡¡¡¡¡¡¡¡¡¡¡resource.getString(Context.INITIAL_CONTEXT_FACTORY)); ¡¡¡¡¡¡¡¡properties.setProperty( ¡¡¡¡¡¡¡¡¡¡¡¡Context.PROVIDER_URL, ¡¡¡¡¡¡¡¡¡¡¡¡resource.getString(Context.PROVIDER_URL)); ¡¡¡¡¡¡¡¡properties.setProperty( ¡¡¡¡¡¡¡¡¡¡¡¡Context.SECURITY_PRINCIPAL, ¡¡¡¡¡¡¡¡¡¡¡¡resource.getString(Context.SECURITY_PRINCIPAL)); ¡¡¡¡¡¡¡¡properties.setProperty( ¡¡¡¡¡¡¡¡¡¡¡¡Context.SECURITY_CREDENTIALS, ¡¡¡¡¡¡¡¡¡¡¡¡resource.getString(Context.SECURITY_CREDENTIALS)); ¡¡¡¡¡¡¡¡jndiContext = new InitialContext(properties); ¡¡¡¡} ¡¡¡¡ ¡¡¡¡×¢ÖØ£ºÔÚÕæÕýµÄ²úÆ·ÖУ¬ÎÒÃÇÓ¦¸ÃÔÚ´Ë´¦¿¼ÂÇ´úÂëµÄ½¡×³ÐÔ£¬½«´úÂë¼ÓÈëµ½try/catch¿éÄÚ£¬²¢¼Ç¼ËùÓдíÎó»òÖØÒªÐÅÏ¢µ½ÏµÍ³logÖС£¶ø±¾ÀýÖУ¬ÎÒÃǽö½ö°ÑÒì³£ÍùÍâÅ×£¬²¢¼Ù¶¨Ò»¶¨»áÕÒµ½EJB¶ÔÏóµÄhome½Ó¿Ú²¢·µ»Ø¡£ ¡¡¡¡ ¡¡¡¡return (jndiContext.lookup(jndiName)); ¡¡¡¡} ¡¡¡¡ÓÉÓÚActionÀཫÊÇÓÉStrutsÀ´µ÷Óõġ£ËùÒÔËüµÄÖ÷Òª·½·¨Ó¦¸ÃÊÇÒ»¸ö³éÏó·½·¨£¬¶øÓÉÿ¸ö¼ÌÐøµÄ×ÓÀàÀ´¾ßÌåʵÏÖ£¬»òÕßÔÚÆäÖÐ×öһЩËùÓÐAction¶¼»á×öµÄͨÓûúÖÆ£¬ÀýÈç¼Ç¼logÐÅÏ¢¡£ÔÚ±¾ÀýÖУ¬ÎÒÃÇÒ»ÇдӼò£¬½«Æä³éÏóÖ®¡£ ¡¡¡¡ ¡¡¡¡²ÎÊýmapping£ºÆäÀàÐÍΪActionMapping£¬½«ÔÚ±¾Action×öÌø×ªÑ¡ÔñÓà ¡¡¡¡ ¡¡¡¡²ÎÊýactionForm£ºÓÉStruts¸ù¾Ý±¾´ÎHTTPÇëÇóÊý¾ÝÌî³äÍê³ÉµÄActionForm¶ÔÏ󣨿ÉÑ¡£¬¼ÙÈç´æÔÚÇëÇóÊý¾ÝµÄ»°£© ¡¡¡¡ ¡¡¡¡²ÎÊýrequest£º´ËActionËùÓд¦ÀíµÄ±¾´ÎHTTPÇëÇ󣨶ÔÏó£© ¡¡¡¡ ¡¡¡¡²ÎÊýresponse£º´ËActionÊä³öÊý¾ÝËùÒªÓõ½µÄHTTPÏìÓ¦£¨¶ÔÏó£© ¡¡¡¡ ¡¡¡¡¼ÙÈçÓÐI/O´íÎó³öÏÖ£¬Ôò±¾·½·¨Å׳öIOExceptionÒì³£ ¡¡¡¡ ¡¡¡¡¼ÙÈç´¦Àíʱ·¢ÉúservletÒì³££¬Ôò±¾·½·¨Å׳öServletExceptionÒì³£ ¡¡¡¡ ¡¡¡¡±¾·½·¨´¦ÀíÍêÇëÇóºó°´ÕÕ´¦ÀíÂß¼·µ»ØÏàÓ¦µÄÒ³Ãæµ¼Ïò£¨¶ÔÏó£© ¡¡¡¡ ¡¡¡¡public abstract ActionForward perform( ¡¡¡¡¡¡¡¡ActionMapping mapping, ¡¡¡¡¡¡¡¡ActionForm form, ¡¡¡¡¡¡¡¡HttpServletRequest request, ¡¡¡¡¡¡¡¡HttpServletResponse response) ¡¡¡¡¡¡¡¡throws IOException, ServletException; ¡¡¡¡} ¡¡¡¡»òÕßÈÃÕâ¸ö³éÏó·½·¨¸üÓÐÓÃÒ»µã£¬ÄǾÍÔÚÀïÃæ¸Éµãʲô°É£¬±ÈÈçÏñÏÂÃæÕâÑùÔÚÆäÖмǼlog¡£ ¡¡¡¡ ¡¡¡¡{ ¡¡¡¡¡¡¡¡ActionForward forward = null; ¡¡¡¡¡¡¡¡//¡¡Ö»ÊǼòµ¥µÄ¼Ç¼һЩÌáʾÐÅÏ¢µ½servlet log ¡¡¡¡ ¡¡¡¡¡¡¡¡getServlet().log( ¡¡¡¡¡¡¡¡¡¡"AbstStrutsActionBase.perform() [Action Class: " ¡¡¡¡¡¡¡¡¡¡¡¡+ this.getClass().getName() ¡¡¡¡¡¡¡¡¡¡¡¡+ " ]"); ¡¡¡¡¡¡¡¡getServlet().log( ¡¡¡¡¡¡¡¡¡¡"AbstStrutsActionBase.perform() [Form Class : " ¡¡¡¡¡¡¡¡¡¡¡¡+ (form == null ? "null" : form.getClass().getName()) ¡¡¡¡¡¡¡¡¡¡¡¡+ " ]"); ¡¡¡¡¡¡} ¡¡¡¡È»ºó£¬ÎÒÃÇÔÙ±àдµÄÿ¸öActionÀà¶¼Ó¦¸Ã´ÓAbstStrutsActionBase¼ÌÐø£¬²¢ÒÀÕÕ´¦ÀíÂß¼±àд¸÷×ÔµÄperform·½·¨¡£ÈÃÎÒÃÇÓÃLoginActionΪÀý£¬¿´¿´¾ßÌåÓ¦¸ÃÔõôӦÓðɡ£ ¡¡¡¡ ¡¡¡¡package com.oreilly.actions; ¡¡¡¡ ¡¡¡¡import java.io.IOException; ¡¡¡¡import java.rmi.RemoteException; ¡¡¡¡import javax.ejb.CreateException; ¡¡¡¡import javax.servlet.ServletException; ¡¡¡¡import javax.servlet.http.HttpServletRequest; ¡¡¡¡import javax.servlet.http.HttpServletResponse; ¡¡¡¡import org.apache.struts.action.ActionError; ¡¡¡¡import org.apache.struts.action.ActionErrors; ¡¡¡¡import org.apache.struts.action.ActionForm; ¡¡¡¡import org.apache.struts.action.ActionMapping; ¡¡¡¡import org.apache.struts.action.ActionForward; ¡¡¡¡import com.oreilly.forms.LoginForm; ¡¡¡¡ ¡¡¡¡/* ¡¡¡¡LoginAction ½«ÑÝʾһ¸öAction½«ÈçºÎ±»Struts¼Ü¹¹Ëùµ÷Óà ¡¡¡¡ ¡¡¡¡ÔÚÕâ¸öÀý×ÓÖУ¬ÎÒÃÇÖ»ÊǼòµ¥µÄÑÝʾperform·½·¨ÊÇÈçºÎµ÷Óá¢Ö´Ðв¢·µ»ØµÄ ¡¡¡¡ ¡¡¡¡*/ ¡¡¡¡public class LoginAction extends AbstStrutsActionBase { ¡¡¡¡½ÓÏÂÀ´Õâ¸öÊÇÑéÖ¤Óû§µÄ·½·¨£¬±¾ÀýÖÐûÓоßÌåʵÏÖ¡£µ«Ò»¸öµäÐ͵ÄÓ¦Ó÷½°¸Êǵ÷ÓÃJavaBean»òÕßEJBÀ´Íê³É¡£ÓÃÀ´²éÕÒEJBµÄlookup·½·¨£¨ÔÚ»ùÀàÖÐÍê³ÉµÄ£©Ó¦¸ÃÔÚ±¾·½·¨Öб»µ÷Óã¬Æä·µ»ØÒ»¸öÒÀ¾Ýºǫ́Êý¾Ý¿âÑéÖ¤Óû§µÄ½Ó¿Ú¡£ ¡¡¡¡ ¡¡¡¡²ÎÊýÀàÐÍString£¬ÒªÑéÖ¤µÄÓû§Ãû ¡¡¡¡ ¡¡¡¡²ÎÊýÀàÐÍString£¬ÃÜÂë ¡¡¡¡ ¡¡¡¡·µ»ØÀàÐÍboolean£¬¼ÙÈçÑé֤ͨ¹ýΪtrue£¬·ñÔòΪfalse ¡¡¡¡ ¡¡¡¡public boolean authenticate(String username, String passWord) { ¡¡¡¡/* ±¾·½·¨½«ÏÈ×öÒ»¸ö²éÕÒ¶¯×÷£¬»ñµÃÑéÖ¤Óû§µÄEJB¶ÔÏóµÄ½Ó¿Ú²¢µ÷Óà ¡¡¡¡* ÓÉÓÚ±¾ÀýÖ»ÑÝʾActionÓëÉÌÎñÂß¼²ãÊÇÈçºÎ½»»¥µÄ ¡¡¡¡* ËùÒÔ¾ßÌåʵÏÖ´úÂë±¾ÀýÖоͲ»ÌṩÁË:)
|