<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

    主站蜘蛛池模板: 成人亚洲综合天堂| 成人免费大片免费观看网站| 日本二区免费一片黄2019| 亚洲婷婷天堂在线综合| 麻花传媒剧在线mv免费观看| 久久丫精品国产亚洲av| 最近免费中文字幕大全免费版视频| 中文字幕亚洲综合精品一区| 狼群影院在线观看免费观看直播 | 免费黄网在线观看| 亚洲日韩亚洲另类激情文学| 午夜一区二区免费视频| 亚洲第一成年网站视频| yy6080久久亚洲精品| 国产精品免费久久久久影院 | 菠萝菠萝蜜在线免费视频| 亚洲人成无码www久久久| 三年在线观看免费观看完整版中文| 亚洲无线码在线一区观看| 91成人免费观看| 亚洲乱亚洲乱妇无码| 国产免费拔擦拔擦8x| a级毛片免费观看网站| 亚洲国产美国国产综合一区二区| 免费A级毛片无码A∨免费| 亚洲AV无码一区二区三区性色| 亚洲男人天堂2020| 最近2019免费中文字幕6| 亚洲欧洲专线一区| 国产亚洲精品精品国产亚洲综合| 国产成人免费ā片在线观看老同学 | 亚洲AV日韩AV鸥美在线观看| 4虎永免费最新永久免费地址| 亚洲国产午夜精品理论片在线播放 | 亚洲国产成人a精品不卡在线| 99视频在线观看免费| 亚洲 日韩经典 中文字幕| 国产亚洲自拍一区| 无人影院手机版在线观看免费| 搜日本一区二区三区免费高清视频 | 国产又黄又爽又猛免费app|