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

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

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

    posts - 14, comments - 22, trackbacks - 0, articles - 4
      BlogJava :: 首頁 ::  :: 聯(lián)系 :: 聚合  :: 管理
    看到題目,您一定覺得很土,Struts早已風靡,而關于Stuts的文章也早已遍地都是,如果你覺得土那你就別看了,我只是把我這段時間學到的一些比較膚淺知識在這里記錄一下,如果您真在這些連載文章中獲得了您想要的知識,那么我就會很欣慰了。
    ??????? 這不快畢業(yè)了嗎?我選的題目就和Struts有關,做一個關于學校的畢業(yè)設計選題系統(tǒng),就是B/S結構,訪問數(shù)據(jù)庫的一些俗套的東西,為了鞏固我這段時間學習Struts,我把這個系統(tǒng)竟往難里做,這樣對我這個動手能力差的人,實際工作經驗少的人來說,會有點幫助吧?
    ????????當初就是這樣想的,所以就開始了我的Struts之旅。
    ??????? 那我就從我的第一頁講起吧,當然第一頁一般都是登陸,至于怎么配置Struts,您還是參考一些別人的文章吧,我覺得寫這些就夠土的了,寫怎么配置,怎么實現(xiàn)就更土!

    ????????<%@ page contentType="text/html; charset=gb2312"%>
    ????????<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    ?????? <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    ?????? <html:javascript dynamicJavascript="true" staticJavascript="true" formName="LoginForm"/>這句是生成驗證登陸表單所需要的js代碼
    ?????? <html:form action="/ajax.do?method=login" onsubmit="return validateLoginForm(this)">
    ????????????用戶名:<html:text property="user" size="16" maxlength="16"/>
    ????????????密碼:??? <html:password property="password" size="16" maxlength="16"/>
    ???????????????????????????<html:submit styleClass="loginbutton" property="submit" value="登陸"/>
    ???????????????????????????<html:button property="reg" styleClass="loginbutton"?
    ????????????????????????????????????onclick="window.location='ajax.do?method=register'" value="注冊"/>
    ???????????????????????????<html:errors property="user"/><html:errors property="password"/>
    ???????</html:form>

    ?????? 把控制格式的HTML刪除掉,應該剩下這些就是主干了,對于這個畢業(yè)設計選題系統(tǒng),有三種角色,管理員(Admin),教師(Teacher),學生(Student)而我把他們的登陸都做到了一起,在后臺這三種角色也是都放在了一個表中,對于他們這三種對象,都是繼承于Person的類,所以在登陸時可以忽視他們的具體角色,用多態(tài)來實現(xiàn)登陸。
    ????????

    ????action="/ajax.do?method=login" :將一些關于登陸啊,注冊的一些亂七八糟的操作我都放到了一個DispatchAction,之后可以用method的不同來分別調用不同的功能。
    ???onsubmit="return validateLoginForm(this)":這個是用來實現(xiàn)Struts自帶的validate驗證
    ???<html:errors property="user"/><html:errors property="password"/> :是用來顯示在登陸時的錯誤信息

    ??? 在這里需要的Struts相關配置會有如下的幾個方面:
    ??????首先是要對配置文件進行配置我們登陸時需要的FormBean和Action
    ???????(1)struts-config.xml:
    ????????????<form-bean name="LoginForm" type="com.boya.subject.view.LoginForm" />
    ??????????? <action path="/ajax" type="com.boya.subject.controller.InterDispatchAction" name="LoginForm" scope="request" validate="true" input="/index.jsp" parameter="method">
    ??????????????????<forward name="fail" path="/index.jsp" />?? 對于登陸失敗,我們準備返回到這里
    ???????????</action>
    ???? (2)validation.xml:
    ????????????<constant>
    ??????????????????<constant-name>user</constant-name>
    ??????????????????<constant-value>^[0-9a-zA-Z]*$</constant-value>
    ???????????????這里是常量配置,因為我們還會需要到用戶名的驗證,所以把他設置為了常量
    ???????????</constant>
    ????????? 下面是對這個bean的具體嚴整手段了,按字段field分別來寫他們所依賴depaends的檢驗手段,常用的有必須填required,正則表達式驗證mask,最大maxlength和最小minlength
    ????????????<form name="LoginForm">
    ??????????????<field property="user"對應LoginForm里的一個屬性? depends="required,mask,minlength,maxlength">
    ???????????????????<msg name="mask" key="input.user.mask" />從application.properties里讀取input.user.mask???????????
    ??????????????????? <arg0 key="input.user" resource="true" />從application.properties里讀取input.user
    ?????????????????? <arg1 name="minlength" key="${var:minlength}" resource="false" />
    ?????????????????? <arg1 name="maxlength" key="${var:maxlength}" resource="false" />
    ????????????????? 以上三部分構成了js的一條錯誤提示,以下是具體的嚴整規(guī)則了
    ??????????????? <var>
    ????????????????????<var-name>mask</var-name>
    ????????????????????<var-value>${user}</var-value>
    ????????????????</var>
    ????????????????<var>
    ????????????????????<var-name>minlength</var-name>
    ????????????????????<var-value>1</var-value>
    ????????????????</var>
    ????????????????<var>
    ????????????????????<var-name>maxlength</var-name>
    ????????????????????<var-value>16</var-value>
    ????????????????</var>
    ?????????</field>

    ???<field property="password"
    ????depends="required,mask,minlength,maxlength">
    ????<arg0 key="input.password" resource="true" />
    ????<arg1 name="minlength" key="${var:minlength}"
    ?????resource="false" />
    ????<arg1 name="maxlength" key="${var:maxlength}"
    ?????resource="false" />
    ????<var>
    ?????<var-name>mask</var-name>
    ?????<var-value>${password}</var-value>
    ????</var>
    ????<var>
    ?????<var-name>minlength</var-name>
    ?????<var-value>1</var-value>
    ????</var>
    ????<var>
    ?????<var-name>maxlength</var-name>
    ?????<var-value>16</var-value>
    ????</var>
    ???</field>

    ??</form>
    ?對于我們需要的FormBean是這樣寫的:
    package com.boya.subject.view;

    import javax.servlet.http.HttpServletRequest;
    import org.apache.struts.action.*;

    public class LoginForm extends ActionForm
    {
    ??? private static final long serialVersionUID = 1L;
    ??? private String user = null;
    ??? private String password = null;

    ??? public String getPassword()
    ??? {
    ??????? return password;
    ??? }

    ??? public void setPassword( String password )
    ??? {
    ??????? this.password = password;
    ??? }

    ??? public String getUser()
    ??? {
    ??????? return user;
    ??? }

    ??? public void setUser( String user )
    ??? {
    ??????? this.user = user;
    ??? }
    ???
    ??? public void reset(ActionMapping mapping,HttpServletRequest request)
    ??? {
    ??????? this.password = null;這里很重要,當用戶輸入有錯時,需要返回登陸界面給用戶,為了用戶填寫方便我們可以設置返回給用戶的哪部分信息設置為空
    ??? }
    }

    我用來實現(xiàn)登陸的DispatchAction代碼如下:
    ??????public ActionForward login( ActionMapping mapping, ActionForm form,
    ??????????? HttpServletRequest req, HttpServletResponse res ) throws Exception
    ??? {
    ?????????Service service = getService();調用業(yè)務邏輯
    ??????? LoginForm loginForm = (LoginForm) form;獲取formbean
    ??????? String user = loginForm.getUser();提取用戶名
    ??????? Person person = service.getUser( user );從業(yè)務邏輯中查找用戶
    ??????? ActionMessages messages = new ActionMessages();
    ??????? ActionMessage am;
    ??????? if ( person == null )如果用戶不存在,我們就返回
    ??????? {
    ??????????? am = new ActionMessage( "index.jsp.fail.user", user );參數(shù)的意義:第一個是主串,而后面的作為arg數(shù)組
    ??????????? messages.add( "user", am );把錯誤信息放到errors 屬性為user那里去顯示
    ??????????? saveErrors( req, messages );
    ??????????? form.reset( mapping, req );如果出現(xiàn)錯誤,調用formbean的重置功能
    ??????????? return mapping.findForward( ID.FAIL );
    ??????? }
    ??????? if ( !person.getPassword().equals( loginForm.getPassword() ) )如果密碼不一致
    ??????? {
    ??????????? am = new ActionMessage( "index.jsp.fail.password", user );
    ??????????? messages.add( "password", am );
    ??????????? saveErrors( req, messages );
    ??????????? form.reset( mapping, req );
    ??????????? return mapping.findForward( ID.FAIL );
    ??????? }
    ???????
    ????????setSessionObject( req, person.getType(), person );把用戶放到session里
    ??????? return new ActionForward( person.getType() + ".do", true );我在每個類型用戶的類中加入了一個getType來在這里調用,之后動態(tài)的去對應的admin.do,student.do,teacher.do的主頁面,并且這里實現(xiàn)的不是請求轉發(fā),而是請求從定向
    ???}


    評論

    # re: 體驗Struts(1)---用戶登陸的實現(xiàn)   回復  更多評論   

    2006-05-25 01:22 by 黑蝙蝠
    大哥一口氣弄了4篇文章,呵呵,雖然我不懂,但是還是支持下!

    # re: 體驗Struts(1)---用戶登陸的實現(xiàn)   回復  更多評論   

    2006-11-03 10:08 by haha[匿名]
    hao la ji

    # re: 體驗Struts(1)---用戶登陸的實現(xiàn)   回復  更多評論   

    2006-11-23 12:55 by liu
    不錯~~~
    另外:鄙視樓上!

    # re: 體驗Struts(1)---用戶登陸的實現(xiàn)   回復  更多評論   

    2007-04-22 11:08 by 11
    我喜歡。我想請問一下。你的Person是從哪里寫的

    # re: 體驗Struts(1)---用戶登陸的實現(xiàn)   回復  更多評論   

    2008-09-11 22:57 by Paul Chen
    加個Service Layer會更好些

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


    網站導航:
     
    有事在這里給我留言噢!
    主站蜘蛛池模板: 久久亚洲精品成人无码| 亚洲AV男人的天堂在线观看| 国产亚洲人成网站在线观看| 久久久久亚洲精品无码网址| 在线观看免费亚洲| 午夜在线a亚洲v天堂网2019| 免费黄色福利视频| 日本免费一二区在线电影| 久久精品国产精品亚洲| 一级做a爰片久久免费| 91情侣在线精品国产免费| 亚洲电影日韩精品| 亚洲欧洲中文日产| 性生大片视频免费观看一级| 永久免费av无码不卡在线观看 | 美女被免费喷白浆视频| 亚洲精品老司机在线观看| 亚洲伦理中文字幕| 你是我的城池营垒免费观看完整版| aⅴ免费在线观看| 久久亚洲精品专区蓝色区| 日韩免费高清视频| 亚洲阿v天堂在线2017免费| 成人免费视频网址| 久久久久亚洲精品成人网小说| 亚洲av无码一区二区三区四区| 亚洲国产精品无码久久青草| 免费人成在线观看视频高潮| 亚洲精品视频在线看| 在线观看肉片AV网站免费| 亚洲制服丝袜中文字幕| 免费女人18毛片a级毛片视频| 亚洲Av无码一区二区二三区| 无码专区AAAAAA免费视频| 相泽亚洲一区中文字幕| 黄色网址免费大全| 亚洲成年人电影网站| 国产亚洲福利一区二区免费看| 亚洲精品国产精品| 成人看的午夜免费毛片| 无码精品人妻一区二区三区免费 |