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

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

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

    hays

    海納百川
    posts - 25, comments - 48, trackbacks - 0, articles - 0
      BlogJava :: 首頁 ::  :: 聯系 :: 聚合  :: 管理

    eclipse 中配置strcucts(2)

    Posted on 2006-11-17 18:22 hays(海納百川) 閱讀(248) 評論(0)  編輯  收藏

    作者:baggio785

    來源:http://blog.csdn.net/baggio785

    原文地址:http://blog.csdn.net/baggio785/archive/2006/03/10/620579.aspx(轉載請注明出處)

    日期:2006-3-9

    關鍵詞:Eclipse,MyEclipse,Struts,Java

    創建消息資源文件

    視圖組件將使用標簽來輸出文本內容,這些內容來自于Resource Bundle。Resource Bundle對應消息資源文件。

    代碼清單二(ApplicationResources.properties)

    # 這里是注釋
    logon.page.title = &#x6211;&#x7684;&#x7B2C;&#x4E00;&#x4E2A;Struts

    logon.username.error = &#x8BF7;&#x8F93;&#x5165;&#x7528;&#x6237;&#x540D;&#xFF01;

    logon.userpassword.error = &#x8BF7;&#x8F93;&#x5165;&#x5BC6;&#x7801;&#xFF01;

    logon.badusername.error = &#x7528;&#x6237;&#x540D;&#x4E0D;&#x80FD;&#x4E3A;admin&#xFF01;

    logon.baduserpassword.error = &#x5BC6;&#x7801;&#x4E0D;&#x80FD;&#x4E3A;123456&#xFF01;

    logon.success = &#x6B22;&#x8FCE;&#x60A8;&#x767B;&#x5F55;&#xFF01;

    為了實現國際化,消息資源文件中的漢字采用的是UTF-8編碼。查看如何實現漢字轉化為UTF-8

     

    創建JSP文件

    logon.jsp(所在路徑為/form/)接收用戶輸入的用戶名和密碼,并顯示表單驗證失敗的錯誤信息。success.jsp顯示登錄成功的信息。

    JSP文件全部使用客戶化標簽,無JAVA代碼,輸入的文本內容完全由標簽提供。

    代碼清單三(logon.jsp)

    <%@ page contentType="text/html;charset=UTF-8" language="java"%>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>

    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>

    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>

     

    <html>

    <head>

    <!--title使用客戶化標簽,文本內容對應的是消息資源文件中logon.page.title的值-->

    <title><bean:message key="logon.page.title"/></title>

    </head>

    <body>

    <html:form action="/logon" method="POST">

    &#x7528;&#x6237;&#x540D;&#xFF1A;<html:text property="username"/><html:errors property="username"/><br/>

    &#x5BC6;&#x3000;&#x7801;&#xFF1A;<html:password property="userpassword"/><html:errors property="userpassword"/><br/>

    <html:submit value="&#x767B;&#x5F55;"/><html:reset value="&#x53D6;&#x6D88;"/>

    </html:form>

    </body>

    </html> 

    代碼清單四(success.jsp)

    <%@ page language="java" pageEncoding="UTF-8"%>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>

    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>

    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>

    <html:html lang="true">

    <head>

    <html:base />

    <title>success.jsp</title>

    </head>

     

    <body>

    <logic:present name="savelogon" scope="request">

    <bean:write name="savelogon" property="username"/>

    <bean:message key="logon.success"/>

    </logic:present>

    </body>

    </html:html>

     

    創建ActionForm Bean組件logonFrom

    用戶提交HTML表單后,Struts框架會自動把表單數據封裝到ActionForm Bean(本例是logonForm)中。ActionForm Bean的屬性必須與HTML表單的字段一一對應。ActionForm Bean會對表單數據進行驗證,并提供將HTML表單的字段值重置為默認值的方法(等同于HTML中Form表單的Reset)。

    代碼清單五(logonFrom.java)

    package com.mystruts.struts.form;

    import javax.servlet.http.HttpServletRequest;

    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.ActionMessage;

    /**
    * MyEclipse Struts
    * Creation date: 02-27-2006
    *
    * XDoclet definition:
    * @struts.form name="logonForm"
    */
    public class LogonForm extends ActionForm {

    // --------------------------------------------------------- Instance Variables

    /** userpassword property */
    private String userpassword;

    /** username property */
    private String username;

    // --------------------------------------------------------- Methods

    /**
    * Method validate
    * @param mapping
    * @param request
    * @return ActionErrors
    */
    //用于表單驗證的validate方法
    public ActionErrors validate(
    ActionMapping mapping,
    HttpServletRequest request) {


    //聲明一個ActionErrors對象
    ActionErrors errors = new ActionErrors();

    //如果用戶名驗證失敗,將ActionMessage對象保存到ActionErrors對象errors中。logon.username.error對應消息資源文件中的logon.username.error的值。
    if(username==null || username.length()<3){
    errors.add("username", new ActionMessage("logon.username.error"));
    }


    //如果密碼驗證失敗,將ActionMessage對象保存到ActionErrors對象errors中。logon.userpassword.error對應消息資源文件中的logon.userpassword.error的值。
    if(userpassword==null || userpassword.length()<3){
    errors.add("userpassword", new ActionMessage("logon.userpassword.error"));
    }
    // TODO Auto-generated method stub

    //返回ActionErrors對象errors,Struts框架會把errors保存在request范圍內,并將請求轉發到視圖組件logon.jsp中,通過<html:errors/>來顯示錯誤信息
    return errors;
    }

    /**
    * Method reset
    * @param mapping
    * @param request
    */
    public void reset(ActionMapping mapping, HttpServletRequest request) {

    // TODO Auto-generated method stub
    this.username = null;
    this.userpassword = null;
    }

    /**
    * Returns the userpassword.
    * @return String
    */
    public String getUserpassword() {
    return userpassword;
    }

    /**
    * Set the userpassword.
    * @param userpassword The userpassword to set
    */
    public void setUserpassword(String userpassword) {
    this.userpassword = userpassword;
    }

    /**
    * Returns the username.
    * @return String
    */
    public String getUsername() {
    return username;
    }

    /**
    * Set the username.
    * @param username The username to set
    */
    public void setUsername(String username) {
    this.username = username;
    }

    }

     

    創建控制器Action組件logonAction

    logonAction對表單數據進行業務邏輯驗證。

    代碼清單六(logonAction.java)

    package com.mystruts.struts.action;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.ActionMessage;
    import org.apache.struts.action.ActionMessages;

    import com.mystruts.struts.SaveLogon;
    import com.mystruts.struts.form.LogonForm;

    /**
    * MyEclipse Struts
    * Creation date: 02-27-2006
    *
    * XDoclet definition:
    * @struts.action path="/logon" name="logonForm" input="/form/logon.jsp" scope="request" validate="true"
    * @struts.action-forward name="logon_sc" path="/success.jsp"
    */
    public class LogonAction extends Action {

    // --------------------------------------------------------- Instance Variables

    // --------------------------------------------------------- Methods

    /**
    * Method execute
    * @param mapping
    * @param form
    * @param request
    * @param response
    * @return ActionForward
    */
    //通過ActionForm Bean的驗證后,Struts框架會自動調用execute方法
    public ActionForward execute(
    ActionMapping mapping,
    ActionForm form,
    HttpServletRequest request,
    HttpServletResponse response) {
    // TODO Auto-generated method stub

    //獲得表單數據中的username
    String username = (String)((LogonForm)form).getUsername();

    //獲得表單數據中的userpassword
    String userpassword = (String)((LogonForm)form).getUserpassword();

    //定義非法用戶名
    String badusername = "admin";

    //定義非法密碼
    String baduserpassword = "123456";


    //聲明一個ActionMessages對象
    ActionMessages errors = new ActionMessages();

    if(badusername.equals(username)){

    //如果用戶名驗證失敗,將ActionMessage對象保存到ActionMessages對象errors中。logon.badusername.error對應消息資源文件中的logon.badusername.error的值。
    errors.add("username",new ActionMessage("logon.badusername.error",badusername));

    //保存ActionMessages對象errors到request范圍。
    saveErrors(request,errors);

    //返回ActionForward對象,Struts框架會把請求轉發到視圖組件logon.jsp中,通過<html:errors/>來顯示錯誤信息。
    return(new ActionForward(mapping.getInput()));
    }

    if(userpassword.equals(baduserpassword)){
    errors.add("userpassword",new ActionMessage("logon.baduserpassword.error",baduserpassword));
    saveErrors(request,errors);
    return(new ActionForward(mapping.getInput()));
    }


    //定義模型組件SaveLogon
    SaveLogon sl = new SaveLogon();
    sl.setUsername(username);
    sl.setUserpassword(userpassword);
    sl.saveToDb();


    //控制器組件將SavaLogon對象保存到request范圍,savalogon對應視圖組件success.jsp中<login:present>標簽的name以及<bear:write>標簽的name
    request.setAttribute("savelogon",sl);

    //清除request范圍內的ActionForm Bean,因為后面的請求已經不需要了
    request.removeAttribute(mapping.getAttribute());


    //控制器組件將信息轉交到視圖組件logon.jsp,logon_sc對應struts-config.xml中的forward元素的name
    return(mapping.findForward("logon_sc"));
    }

    }

     

    創建模型組件SaveLogon

    本模型提供get/set方法,以及saveToDb方法。在例子中并未實現saveToDb方法。

    代碼清單七(SaveLogon.java)

    package com.mystruts.struts;

    /**
    * @author Administrator
    *
    */
    public class SaveLogon {

    private String username = null;
    private String userpassword = null;

    public void setUsername(String username){
    this.username = username;
    }

    public String getUsername(){
    return this.username;
    }

    public void setUserpassword(String userpassword){
    this.userpassword = userpassword;
    }

    public String getUserpassword(){
    return this.userpassword;
    }

    public void saveToDb(){

    }


    }

     

    運行

    如果用戶名和密碼為空,運行結果如圖十二、圖十三、圖十四所示。


    (圖十二)

    如果用戶名為admin,運行結果如圖十三


    (圖十三)

    如果通過驗證,運行結果如圖十四


    (圖十四)

     

     

    小結

    1??? 為了降低偶合度,應該建立一個存放常量的JAVA文件。例如logonAction.java中的String badusername = "admin",或者request.setAttribute("savelogon",sl)的第一個參數。

    2??? 要實現Struts的國際化,支持多國語言,編碼方式一定要為UTF-8。

    3??? 在配置Action時,見圖九,如果選取redirect,則在struts-config.xml中的action元素會多一個屬性,redirect="true"。運行的結果是success.jsp中無法獲得request范圍內的savelogon對象。

    ?手把手教你在Eclipse中配置開發Struts(一)



    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲精品高清无码视频| 青娱分类视频精品免费2| 婷婷亚洲天堂影院| 色婷婷亚洲一区二区三区| 国产成人免费网站在线观看| 亚洲欧美aⅴ在线资源| 国外成人免费高清激情视频| 亚洲男人的天堂网站| 国产国产成年年人免费看片| 色偷偷亚洲男人天堂| 亚洲精品国产日韩无码AV永久免费网 | 免费的黄网站男人的天堂| 免费二级毛片免费完整视频| 午夜在线免费视频| 亚洲中文字幕无码久久2017| 久久精品免费电影| 亚洲人成网站日本片| 日本成人在线免费观看| 一级做a爰片久久毛片免费看| 亚洲中文字幕无码一区| 五月亭亭免费高清在线| 国产精品无码亚洲一区二区三区| 免费人成视频x8x8入口| 99精品视频在线观看免费| 久久久久久亚洲精品成人| 99精品全国免费观看视频 | 免费v片视频在线观看视频| 一级毛片免费在线播放| 亚洲国产女人aaa毛片在线| 国产成人A在线观看视频免费| 色婷婷精品免费视频| 亚洲成av人片天堂网| 91在线视频免费看| jizz18免费视频| 亚洲国产成人九九综合| 免费在线黄色网址| 最近免费视频中文字幕大全| 国产精品亚洲五月天高清| 亚洲av福利无码无一区二区| 四虎在线视频免费观看| 可以免费观看的毛片|