posts - 0,  comments - 17,  trackbacks - 0


          來源:http://www.aygfsteel.com/shmily432685

          開發前準備:
              1、新建項目包:如下圖:
                   project1.JPG
          Dao:數據層;service:邏輯層;web:web展現層。
          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          /**對頁面提交的元素進行驗證,根據需要進行驗證:在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展現中對Action進行配置;我們在這里主要是針對登錄進行開發.因此在action中需要完成以下步驟:
          1、登錄驗證;驗證用戶名是否存在。驗證該用戶的密碼是否正確。
          2、增加cookie
          3、提示登錄成功。
          在進行Action類的編寫過程中,首先我們需要考慮到對數據的操作有如下步驟。
          1、驗證用戶名是否存在,我們在service層需要提供一個接口:
          1 Public boolean isExist(String user);
          來判斷用戶名是否存在,同時要考慮該用戶名對應的密碼是否正確,需要提供接口:
          1 Public UserBasicInfo findByUser(String user);
          通過用戶名來查找相關數據。
          在Action 中,我們同時要判斷根據用戶查找的用戶密碼是否正確。如果正確,增加cookie。并返回正常登錄頁面。如果用戶不存在、該用戶輸入的密碼與數據庫中的密 碼不相符合。則在配置文件ApplicationResources_zh_CN.properties中,進行設置提示報錯內容。并在頁面中顯示。
          具體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                  * 用戶狀態為新增未激活,返回登錄頁面。不允許登錄。
           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                  * 用戶狀態為新增待核,返回登錄頁面。不允許登錄。
           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                  * 用戶狀態為暫時鎖定,返回登錄頁面。不允許登錄。
           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                  * 用戶狀態為已刪除,返回登錄頁面。不允許登錄。
           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                  * 傳遞參數用戶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層的實現與Dao層的實現與配置寫上。各位自己參考吧。
          service接口實現
          1 public boolean isExists(String userEmail) {
          2 
          3         if (userBasicInfoDao.findByUserEmail(userEmail).size() == 0)
          4             return false;
          5         else
          6             return true;
          7     }

          通過service層調用Dao層接口,進行判斷用戶是否存在。
          Dao接口實現:

          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 2008-01-23 11:13 xyz 閱讀(678) 評論(0)  編輯  收藏 所屬分類: 網絡文摘

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          留言簿

          隨筆檔案(1)

          文章分類(44)

          文章檔案(46)

          收藏夾(1)

          Adobe

          AOP

          API

          appServer

          BI

          c

          • c-free
          • codeblocks
          • codelite
          • CodeLite IDE 是一個強大的開源,跨平臺的 C/C++整合開發環境. 支持包括 Windows、Linux 和 Mac 系統下運行
          • codelite官網
          • dev-c++
          • Dev-C++是一個C&C++開發工具,它是一款自由軟件,遵守GPL協議。
          • GCC
          • GCC 原名為 GNU C 語言編譯器(GNU C Compiler),因為它原本只能處理 C語言。GCC 很快地擴展,變得可處理 C++。之后也變得可處理 Fortran、Pascal、Objective-C、Java, 以及 Ada 與其他語言。

          Cache

          CMS

          DB

          eclipse

          FreeMarker

          hibernate

          html5

          ibatis

          java

          jquery

          js

          json

          Linux

          Log

          mail server

          mobile

          mysql

          oauth

          openID

          other

          PHP

          portal

          report

          Scheduler

          schema

          Security

          SOA

          spring

          struts

          UI原型設計

          w3c

          Wap

          webservice

          xml

          供應鏈管理

          博客鏈接

          好網站

          工作流

          開源網

          招聘

          插件下載

          操作系統

          構建可伸縮的系統

          構建工具

          測試

          • IETest
          • IE官網
          • OpenSTA
          • Siege
          • Siege是一個壓力測試和評測工具,設計用于WEB開發這評估應用在壓力下的承受能力

          游戲

          源碼托管

          經營

          資源

          金融/財務

          搜索

          •  

          最新評論

          主站蜘蛛池模板: 礼泉县| 沙洋县| 虎林市| 尼玛县| 儋州市| 宜城市| 绥化市| 萨迦县| 兴化市| 嘉禾县| 财经| 卓资县| 大英县| 会同县| 息烽县| 永寿县| 平昌县| 钟山县| 易门县| 洪湖市| 麻城市| 锡林浩特市| 西充县| 吉安市| 邮箱| 驻马店市| 仁布县| 莱芜市| 务川| 涡阳县| 正定县| 勐海县| 陈巴尔虎旗| 五寨县| 恩施市| 怀安县| 桦川县| 利津县| 永城市| 安岳县| 建水县|