<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    選擇java 進入自由開放的國度

    隨筆 - 49, 文章 - 3, 評論 - 154, 引用 - 1
    數據加載中……

    Struts學習心得之Struts流程篇(3) -示例

        上一篇我們講了Struts的配置以及運行環境,這一篇我們通過一個實例來說明Struts實現MVC的過程和Struts開發WEB應用的一般方法。
         (1)實例介紹
           這是《論文在線提交》系統的用戶注冊部分,用戶填入用戶名(userid)和Email地址(email)后,如果Email和userid在數據庫中不存在,則注冊成功,將系統生成的8位密碼發送到用戶的信箱里。數據表定義如下:
        
    CREATE TABLE passwd (
      userid varchar(
    20) DEFAULT '' NOT NULL,       #用戶id
      password varchar(
    16) DEFAULT '' NOT NULL,     #密碼 使用PASSWORD()加密后的
      email  varchar(
    50) DEFAULT '' NOT NULL,       #email
      PRIMARY KEY (userid),
      KEY password (password)
    );

          (2)不使用MVC模式的實現
            有過ASP設計經驗的開發人員,如果看到這樣一個功能,那簡直是太簡單了。只要設計一個表單,然后post給一個asp頁面,在這個頁面中實現數據檢查(檢查email和用戶名是否存在)及數據插入和email發送的功能。如果純用jsp實現,基本流程也是一樣的。這樣做有什么不好呢?我們先看使用Struts的MVC來實現這樣的功能,然后我們再做一下比較。
           (3)使用Struts MVC實現
             如果使用框架,我們就必須按照框架進行編程,而不是“自由”的編程,我們必須在實現中有M,有V、有C。下面看一下Struts實現MVC的一般流程。
             i. 這是HTML中表單的定義,action指定要將表單中的數據提交給誰進行處理,看以下幾種情況:1. 純用jsp,action肯定是一個jsp文件;2.使用jsp/JavaBean方式,action也是一個jsp,但是它將form中的數據映射到javaBean中,然后在jsp文件中進行獲取和處理;3. 采用MVC方式,這要轉變一下思路,腦子中要時刻清醒,M是什么,V是什么,C是什么,并且要理解它們的用途,不可用錯和濫用。下面我們看一下Struts中MVC的表現方式和使用方法。
           ii 首先我們看M、V和C的表現。在Struts中,
              首先看viewer,這是表現層,主要有jsp、servelt和javabean組成。也就是說我們將表單的數據放到javabean中,這個過程都是viewer的工作;
              Controller,控制器主要是實現數據的驗證,并且實現跳轉,就是要將控制權交給“誰”。譬如:在用戶注冊中,當用戶將數據傳到bean,然后到action時,action去判斷email是否存在,如果存在將頁面跳轉到error.jsp或者輸出錯誤信息,如果不存在就跳轉到注冊成功的頁面

           
      Model,這是業務邏輯,這在Struts中沒有強制定義,主要功能就是實現業務邏輯,是功能體,譬如實現數據庫的插入,刪除等。可以是POJO,也可以是EJB等。
            (4)用Struts實現用戶注冊。
              第一步、實現viewer,有以下幾個部分組成,signin.jsp(顯示輸入form和錯誤顯示)、SignForm.java(一個javaBean,不過在Struts中要繼承自ActionForm,實現數據映射和簡單的驗證)。一下是關鍵代碼:
    signin.jsp
    <font color=red>
    <html:errors/>   ---錯誤處理 詳細信息見本blog《Struts中的錯誤處理流程》
    font>
      
    <html:form action="/sign.do">
      --- sign.do是一個Action,在解釋Struts
    -conf.xml時說明

             
    <bean:message key="sign.userid"/><html:text property="userid"/><br>
             
    <bean:message key="sign.email"/><html:text property="email"/>
            
    <html:submit ><bean:message key="login.signup"/>html:submit>  

          
    html:form>

    說明:
    <bean:message key="sign.userid"/>從資源文件中讀取數據,詳細信息見本blog的《struts中資源文件的使用》
    SignForm.java
     1package user;
     2
     3import javax.servlet.http.HttpServletRequest;
     4
     5import org.apache.struts.action.ActionError;
     6import org.apache.struts.action.ActionErrors;
     7import org.apache.struts.action.ActionForm;
     8import org.apache.struts.action.ActionMapping;
     9
    10/**//**
    11 * @author han
    12 * @company soochow university
    13 * 注冊bean
    14 */

    15
    public class SignForm extends ActionForm {
    16   private String userid = null;
    17   private String email = null;
    18   private String password = null;
    19   
    20   
    21/**//**
    22 * @return Returns the password.
    23 */

    24
    public String getPassword() {
    25    return password;
    26}

    27
    /**//**
    28 * @param password The password to set.
    29 */

    30
    public void setPassword(String password) {
    31    this.password = password;
    32}

    33
    /**//**
    34 * @return Returns the email.
    35 */

    36
    public String getEmail() {
    37    return email;
    38}

    39
    /**//**
    40 * @param email The email to set.
    41 */

    42
    public void setEmail(String email) {
    43    this.email = email;
    44}

    45
    /**//**
    46 * @return Returns the userid.
    47 */

    48
    public String getUserid() {
    49    return userid;
    50}

    51
    /**//**
    52 * @param userid The userid to set.
    53 */

    54
    public void setUserid(String userid) {
    55    this.userid = userid;
    56}

    57
    58  public void reset(ActionMapping mapping, HttpServletRequest request){
    59         userid = null;
    60         email = null;
    61  }

    62
      //驗證
    63
      public ActionErrors validate(ActionMapping mapping, HttpServletRequest request){
    64        ActionErrors errors = new ActionErrors();
    65        
    66        if(this.userid == null || this.userid.length()<1){
    67              errors.add("userid"new ActionError("userid.required"));
    68        }

    69        
    70        if(this.email == null || this.email.length() < 1){
    71              errors.add("email"new ActionError("email.required"));
    72        }

    73        
    74        return errors;
    75  }

    76
    }

          從代碼我們可以看出,SignForm除了實現bean的getter和setter功能外還實現了簡單的驗證,即驗證userid和email是否為空,若空則出錯!
          關于form的action,我們在講action和編輯struts-config.xml文件時會進行說明。

    posted on 2005-05-19 10:31 soochow_hhb 以java論成敗 以架構論英雄 閱讀(1638) 評論(0)  編輯  收藏 所屬分類: Struts

    主站蜘蛛池模板: 免费在线视频一区| 国产一区二区免费在线| 亚洲国产成a人v在线观看| 在线观看人成视频免费| 一级人做人a爰免费视频| 婷婷久久久亚洲欧洲日产国码AV| 男女免费观看在线爽爽爽视频 | 国产AV无码专区亚洲AV毛网站 | 亚洲第一永久AV网站久久精品男人的天堂AV| caoporn成人免费公开| 亚洲国产精品久久人人爱| 免费v片视频在线观看视频| 99re6在线视频精品免费下载| 国产成人精品日本亚洲专| 国产成人亚洲综合无码| 国产va免费精品观看精品| 黄色网页在线免费观看| 亚洲日韩亚洲另类激情文学| 亚洲区小说区图片区QVOD| 国产成人免费爽爽爽视频| 91视频精品全国免费观看| 亚洲第一街区偷拍街拍| 亚洲一区精品中文字幕| 四虎AV永久在线精品免费观看| 57pao国产成视频免费播放 | 日韩在线免费看网站| 91精品国产免费网站| 中文字幕免费视频精品一| MM1313亚洲精品无码久久| 亚洲成人网在线观看| 亚洲国产无套无码av电影| www.亚洲精品| 黄色成人网站免费无码av| 59pao成国产成视频永久免费| 国产区在线免费观看| 美女羞羞喷液视频免费| 亚洲乱人伦中文字幕无码| 亚洲欧洲自拍拍偷综合| 亚洲国产精品自在在线观看| 一本色道久久综合亚洲精品高清| 免费观看国产小粉嫩喷水|