隨筆 - 4  文章 - 10  trackbacks - 0
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(1)

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          接:Myeclipse開發(fā)struts+hibernate+spring新手入門---環(huán)境配置
          如果您按照上篇文章配置成功,可以進行開發(fā)簡單的J2EE項目。
          開發(fā)前準備:
              1、新建項目包:如下圖:
                   project1.JPG
          Dao:數(shù)據(jù)層;service:邏輯層;web:web展現(xiàn)層。
          2、建立好三層架構,部署好包名。建立一個jsp文件,取名為:login.jsp
          代碼如下:

          <% @ taglib uri = " http://struts.apache.org/tags-bean "  prefix = " bean "   %>
          <% @ taglib uri = " http://struts.apache.org/tags-html "  prefix = " html "   %>
          <% @ taglib uri = " http://struts.apache.org/tags-logic "  prefix = " logic "   %>
          <% @ taglib uri = " http://struts.apache.org/tags-tiles "  prefix = " tiles " %>  
          < HTML >
          < HEAD >
          < TITLE > test < TITLE >
          < HEAD >
          < BODY >
          < html:form action = " /login "  method = " post " >
           用戶名:
          < html:text property = " username "  size = " 15 " />   < br >
           密  碼:
          < html:password property = " password "  size = " 15 " />< br >
           
          < html:submit property = " submit1 "  style = " FONT-WEIGHT:bold;COLOR:red " >
                    登  錄
          < html:submit >
           
          < html:form >
           
          < BODY >
           
          < HTML >

          3、配置struts-config.xml文件;建立action、formbean;
          改配置可以自動生成,使用eclipse進行自動生成,在建立時,如下圖,可直接生成對應的action類和formbean類。struts-config.JPG
           1 <?xml version="1.0" encoding="UTF-8"?>
           2 <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
           3 
           4 <struts-config>
           5     <data-sources />
           6     <form-beans>
           7         <form-bean name="LoginForm" type="com.test.web.form.LoginForm" />
           8 
           9     </form-beans>
          10 
          11     <global-exceptions />
          12     <global-forwards />
          13     <action-mappings>
          14         <action attribute="LoginForm" input="/login.jsp" name="LoginForm" path="LoginAction" scope="request" type="com.test.web.action.LoginAction" validate="true">
          15             <forward name="faile" path="faile.jsp" />
          16             <forward name="success" path="success.jsp" />
          17         </action>
          18 
          19     </action-mappings>
          20 
          21     <message-resources parameter="ApplicationResources" />
          22 </struts-config>

          對應生成的formbean如下代碼所示:
           1 import javax.servlet.http.HttpServletRequest;
           2 import org.apache.struts.action.ActionErrors;
           3 import org.apache.struts.action.ActionForm;
           4 import org.apache.struts.action.ActionMapping;
           5 
           6  /** 
           7   * MyEclipse Struts
           8   * Creation date: 11-10-2005
           9   * 
          10   * XDoclet definition:
          11   * @struts.form name="LoginForm"
          12   */
          13  public class LoginForm extends ActionForm {
          14  
          15      /** password property */
          16      private String password;
          17  
          18      /** username property */
          19      private String username;
          20  
          21  
          22      /** 
          23       * Method validate
          24       * @param mapping
          25       * @param request
          26       * @return ActionErrors
          27       */
          28      public ActionErrors validate(
          29          ActionMapping mapping,
          30          HttpServletRequest request) {
          31          
          32          /**對頁面提交的元素進行驗證,根據(jù)需要進行驗證:在struts-config.xml中的 action-mapping配置設置validate="true"
          33                * 以下驗證才會在頁面加載時生效.
          34                 */
          35                ActionErrors errors = new ActionErrors();
          36               if(username==null||username.equals(""))
          37               {
          38                errors.add("username",new ActionMessage("username.errors"));
          39                           return errors;
          40                }
          41                if(password==null||password.equals(""))
          42               {
          43                 errors.add("password",new ActionMessage("password.errors"));
          44                            return errors;
          45               }
          46                 return errors;
          47      }
          48  
          49      /** 
          50       * Method reset
          51       * @param mapping
          52       * @param request
          53       */
          54      public void reset(ActionMapping mapping, HttpServletRequest request) {
          55  
          56  
          57      }
          58  
          59      /** 
          60       * Returns the password.
          61       * @return String
          62       */
          63      public String getPassword() {
          64          return password;
          65      }
          66  
          67      /** 
          68       * Set the password.
          69       * @param password The password to set
          70       */
          71      public void setPassword(String password) {
          72          this.password = password;
          73      }
          74  
          75      /** 
          76       * Returns the username.
          77       * @return String
          78       */
          79      public String getUsername() {
          80          return username;
          81      }
          82  
          83      /** 
          84       * Set the username.
          85       * @param username The username to set
          86       */
          87      public void setUsername(String username) {
          88          this.username = username;
          89      }
          90  
          91 }
          FormBean中驗證后的提示需要在ApplicationResources_zh_CN.properties中配置提示錯誤信息.
          1 username.null.error=\u5462\u79f0\u4e0d\u80fd\u4e3a\u7a7a
          2 password.null.error=\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a
          下面我們需要對WEB展現(xiàn)中對Action進行配置;我們在這里主要是針對登錄進行開發(fā).因此在action中需要完成以下步驟:
          1、登錄驗證;驗證用戶名是否存在。驗證該用戶的密碼是否正確。
          2、增加cookie
          3、提示登錄成功。
          在進行Action類的編寫過程中,首先我們需要考慮到對數(shù)據(jù)的操作有如下步驟。
          1、驗證用戶名是否存在,我們在service層需要提供一個接口:
          1 Public boolean isExist(String user);
          來判斷用戶名是否存在,同時要考慮該用戶名對應的密碼是否正確,需要提供接口:
          1 Public UserBasicInfo findByUser(String user);
          通過用戶名來查找相關數(shù)據(jù)。
          在Action中,我們同時要判斷根據(jù)用戶查找的用戶密碼是否正確。如果正確,增加cookie。并返回正常登錄頁面。如果用戶不存在、該用戶輸入的密碼與數(shù)據(jù)庫中的密碼不相符合。則在配置文件ApplicationResources_zh_CN.properties中,進行設置提示報錯內(nèi)容。并在頁面中顯示。
          具體Action代碼如下:
           
            1 public ActionForward execute(
            2         ActionMapping mapping,
            3         ActionForm form,
            4         HttpServletRequest request,
            5         HttpServletResponse response) {
            6         ActionMessages errors = new ActionMessages();
            7         /**
            8          * 取得登錄用戶名與密碼
            9          */
           10         LoginForm lf=(LoginForm)form;
           11         UserBasicInfoMgr uu = (UserBasicInfoMgr)getBean("userBasicInfoManager");
           12         /**
           13          * 驗證用戶名是否存在
           14          */
           15         if(uu.isExists(lf.getUsername()))
           16         {
           17             /**
           18              * 驗證該用戶密碼是否正確
           19              */
           20             if(uu.getBasicInfoByName(lf.getUsername()).getUserpwd().equals(StringUtil.encodePassword(lf.getPassword().trim(),"MD5")))
           21             {
           22                 /**
           23                  * 用戶狀態(tài)為新增未激活,返回登錄頁面。不允許登錄。
           24                  */
           25                 if(uu.getBasicInfoByName(lf.getUsername()).getUserstatus().toString().equals("1"))
           26                 {
           27                     errors.add("useract",new ActionMessage("user.activate.error"));
           28                     saveErrors(request,errors);
           29                     return mapping.findForward("relogin");
           30                 }
           31                 /**
           32                  * 用戶狀態(tài)為新增待核,返回登錄頁面。不允許登錄。
           33                  */
           34                 if(uu.getBasicInfoByName(lf.getUsername()).getUserstatus().toString().equals("3"))
           35                 {
           36                     errors.add("usercheck",new ActionMessage("user.check.error"));
           37                     saveErrors(request,errors);
           38                     return mapping.findForward("relogin");
           39                 }
           40                 /**
           41                  * 用戶狀態(tài)為暫時鎖定,返回登錄頁面。不允許登錄。
           42                  */
           43                 if(uu.getBasicInfoByName(lf.getUsername()).getUserstatus().toString().equals("5"))
           44                 {
           45                     errors.add("userlock",new ActionMessage("user.lock.error"));
           46                     saveErrors(request,errors);
           47                     return mapping.findForward("relogin");
           48                 }
           49                 /**
           50                  * 用戶狀態(tài)為已刪除,返回登錄頁面。不允許登錄。
           51                  */
           52                 if(uu.getBasicInfoByName(lf.getUsername()).getUserstatus().toString().equals("6"))
           53                 {
           54                     errors.add("userdel",new ActionMessage("user.del.error"));
           55                     saveErrors(request,errors);
           56                     return mapping.findForward("relogin");
           57                 }
           58                   /**
           59                  * 判斷cookie時間。并保存cookie
           60                  */
           61                 Cookie cookies = new Cookie("username", lf.getUsername());
           62                 cookies.setPath("/");
           63                 if(lf.getCookieDate() != null)
           64                 {
           65                     if(lf.getCookieDate().equals("0"))
           66                         cookies.setMaxAge(-1);
           67                     if(lf.getCookieDate().equals("1"))
           68                         cookies.setMaxAge(0x15180);
           69                     if(lf.getCookieDate().equals("2"))
           70                         cookies.setMaxAge(0x278d00);
           71                     if(lf.getCookieDate().equals("3"))
           72                         cookies.setMaxAge(0x1e13380);
           73                 }
           74                 response.addCookie(cookies);
           75                 if(!cookies.getValue().equals(uu.getBasicInfoByName(lf.getUsername()).getUseremail()))
           76                     return mapping.findForward("relogin");
           77                 CoreUserbasicinfo cub = uu.getBasicInfoByName(lf.getUsername());
           78                 cub.setLastipaddress(request.getRemoteAddr());
           79                 cub.setLastlogindate(new Date());
           80                 uu.regUserBasicInfo(cub);
           81                 String username = cookies.getValue();
           82                 HttpSession session = request.getSession(false);
           83                 if(session == null)
           84                     session = request.getSession(true);
           85                 if(username != null && !username.equals(""))
           86                 {
           87                     onLineUser on = onLineUser.getInstance();
           88                     if(!on.existUser(username))
           89                         session.setAttribute(username, on);
           90                 }
           91                 /**
           92                  * 傳遞參數(shù)用戶id
           93                  */
           94                 request.setAttribute("uid",cub.getUserid());
           95                 /**
           96                  * 登錄成功,第一次登錄,需要填寫詳細資料。
           97                  */
           98                 if(cub.getActsetting()==null||cub.getActsetting().equals(""))
           99                 {
          100                     return mapping.findForward("login");
          101                 }
          102                 return mapping.findForward("index");
          103             }else{
          104                 errors.add("userpwderror"new ActionMessage("password.error"));
          105                 saveErrors(request, errors);
          106                 return mapping.findForward("relogin");
          107             }
          108         }else{
          109              errors.add("usernoterror"new ActionMessage("username.not.error"));
          110              saveErrors(request, errors);
          111              return mapping.findForward("relogin");
          112         }
          113 
          114     }
          首先謝謝各位的關注,因最近項目比較緊張,一直沒有更新該文章,有點對不住了。
          下面我將service層的實現(xiàn)與Dao層的實現(xiàn)與配置寫上。各位自己參考吧。
          service接口實現(xiàn)
          1 public boolean isExists(String userEmail) {
          2 
          3         if (userBasicInfoDao.findByUserEmail(userEmail).size() == 0)
          4             return false;
          5         else
          6             return true;
          7     }

          通過service層調(diào)用Dao層接口,進行判斷用戶是否存在。
          Dao接口實現(xiàn):

          1 public List findByUserEmail(String userEmail) {
          2 
          3         return getHibernateTemplate().find(
          4                 "from CoreUserbasicinfo cc where cc.useremail=?", userEmail);
          5 
          6     }

          接下來,我們就需要配置spring的配置文件
          applicationContext-service.xml

           1 <bean id="userBasicInfoManager" parent="txProxyTemplate">
           2         <property name="target">
           3 
           4             <bean
           5                 class="包路徑.service.Impl.UserBasicInfoMgrImpl">
           6                 <property name="userBasicInfoDao">
           7                     <ref bean="UserBasicInfoDao" />
           8                 </property>
           9                 <property name="mailsender">
          10             <ref bean="mailSender" />
          11         </property>
          12         <property name="message">
          13             <ref bean="mailMessage" />
          14         </property>
          15             </bean>
          16         </property>
          17     </bean>
          applicationContext-hibernate.xml
           1 <bean id="UserBasicInfoDao"
           2 
           3         class="包路徑.Dao.impl.UserBasicInfoDaoImpl">
           4 
           5         <property name="sessionFactory">
           6 
           7             <ref local="sessionFactory" />
           8 
           9         </property>
          10 
          11     </bean>
          配置成功后,就可以對login.jsp進行寫struts標簽。進行運行。
          如有問題。請多多指教。
          posted on 2007-08-17 16:11 冬天出走的豬 閱讀(186) 評論(0)  編輯  收藏 所屬分類: WEB開發(fā)
          主站蜘蛛池模板: 庆安县| 金溪县| 肇源县| 疏附县| 榆林市| 麦盖提县| 塘沽区| 彭阳县| 那坡县| 大同县| 玉林市| 马公市| 温州市| 贵州省| 延边| 垣曲县| 车险| 蓬莱市| 河池市| 花垣县| 青海省| 民乐县| 米林县| 紫云| 绿春县| 乐昌市| 新乡县| 泗阳县| 定西市| 璧山县| 清丰县| 巢湖市| 泾源县| 虞城县| 云和县| 富宁县| 延津县| 庆城县| 双鸭山市| 宜宾县| 乐平市|