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

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

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

    分析和學(xué)習(xí)Spring中的jpetstore用戶管理

    分析和學(xué)習(xí)Spring中的jpetstore用戶管理

      存在用戶的系統(tǒng),必然需要用戶的登錄和認(rèn)證,今天就通過(guò)分析Spring中自帶的jpetstore的例子來(lái)學(xué)習(xí)一下如何實(shí)現(xiàn)在Spring構(gòu)架的系統(tǒng)中用戶登錄。

    1、首先從注冊(cè)用戶開(kāi)始,先看看jpetstore-servlet.xml中關(guān)于注冊(cè)用戶的bean定義,從定義命名中就可以看出下面這段就是注冊(cè)用戶的:
      <bean name="/shop/newAccount.do" class="org.springframework.samples.jpetstore.web.spring.AccountFormController">
        <property name="petStore"><ref bean="petStore"/></property>
        <property name="validator"><ref bean="accountValidator"/></property>
        <property name="successView"><value>index</value></property>
      </bean>
     1). formView呢?從AccountFormController的構(gòu)造函數(shù)中得到,原來(lái)為EditAccountForm; 
     2). EditoAccountForm.jsp中顯得非常亂,其實(shí)沒(méi)有多少難理解的地方,最主要的是這個(gè)form既是添加新用戶的,又是編輯用戶信息的,所以顯得有點(diǎn)亂糟糟的。

    2、添加好了新用戶,接下來(lái)看看如何登錄,在jpetstore-servlet中發(fā)現(xiàn)這兩個(gè)相關(guān)bean定義,如下:
      <bean name="/shop/signon.do" class="org.springframework.samples.jpetstore.web.spring.SignonController">
        <property name="petStore"><ref bean="petStore"/></property>
      </bean>
      <bean name="/shop/signonForm.do" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
        <property name="viewName"><value>SignonForm</value></property>
      </bean>
     1). 第二個(gè)bean是在運(yùn)行時(shí)用戶輸入用戶名和密碼的form,叫做SignonForm,對(duì)于這個(gè) ParameterizableViewController,用文檔里的話說(shuō)這是最簡(jiǎn)單的Controller,其作用就是在運(yùn)行中指向 Controller而不是直接指向jsp文件,僅此而已。
     2). SignonForm.jsp,里面就是一個(gè)簡(jiǎn)單的form,其action就是第一個(gè)bean,即/shop/signon.do,最需要注意的是 signonForwardAction,其主要作用是forward到需要輸入用戶名和密碼的那個(gè)頁(yè)面上去,這個(gè)變量哪里來(lái)的呢?看看下面:
      <bean id="secureHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="interceptors">
          <list>
            <ref bean="signonInterceptor"/>
          </list>
        </property>
        <property name="urlMap">
          <map>
            <entry key="/shop/editAccount.do"><ref local="secure_editAccount"/></entry>
            <entry key="/shop/listOrders.do"><ref local="secure_listOrders"/></entry>
            <entry key="/shop/newOrder.do"><ref local="secure_newOrder"/></entry>
            <entry key="/shop/viewOrder.do"><ref local="secure_viewOrder"/></entry>
          </map>
        </property>
      </bean>
      原來(lái),上面的signonInterceptor實(shí)現(xiàn)了preHandle,因此在請(qǐng)求上面的map頁(yè)面時(shí),首先要經(jīng)過(guò)這個(gè)Interceptor,看看 SignonInterceptor的源碼,原來(lái)在其中為signon.jsp賦予一個(gè)signonForwardAction對(duì)象,呵呵,總算明白了。
     3). 接下來(lái)去學(xué)習(xí)一下SignonController,其主體部分中可以看出,首先取出用戶輸入的username和password,然后到數(shù)據(jù)庫(kù)中驗(yàn)證 有沒(méi)有這個(gè)用戶,如果沒(méi)有這個(gè)用戶,返回各錯(cuò)誤頁(yè)面;如果成功,首先生成一個(gè)UserSession對(duì)象,在request的session加入這個(gè) userSession,注意這部分代碼中給出了PagedListHolder分頁(yè)的簡(jiǎn)單使用方法,關(guān)于分頁(yè)顯示,以后再學(xué)習(xí)吧。

    3、登錄成功后,就可以根據(jù)不同的用戶設(shè)施不同的行為了,取得用戶信息,無(wú)非就是從session取出userSession即可。

    posted on 2007-06-18 18:05 chenguo 閱讀(263) 評(píng)論(0)  編輯  收藏 所屬分類: Spring Dev

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導(dǎo)航

    統(tǒng)計(jì)

    留言簿

    隨筆分類(1)

    文章分類(52)

    好友 小山的博客

    最新隨筆

    最新評(píng)論

    主站蜘蛛池模板: 亚洲日本在线电影| 日本一道高清不卡免费| 青青久久精品国产免费看| 久久久亚洲欧洲日产国码是AV| 免费A级毛片无码A| 99久久这里只精品国产免费| 青青操免费在线视频| 在线观看亚洲电影| 亚洲日韩看片无码电影| 亚洲日韩中文字幕| 亚洲国产精品lv| 亚洲AV永久纯肉无码精品动漫| 亚洲国产中文字幕在线观看 | 日韩亚洲精品福利| 成年午夜视频免费观看视频| 91av在线免费视频| 一级毛片在线免费观看| 三年片免费高清版| 国产男女爽爽爽免费视频| 男女猛烈激情xx00免费视频| 亚洲国产成人综合精品| 亚洲国产精品无码观看久久| 亚洲日本久久久午夜精品| 亚洲一级毛片在线观| 亚洲乱码一二三四区国产| 亚洲日韩中文字幕| 亚洲娇小性色xxxx| 亚洲高清有码中文字| 亚洲国产综合精品中文第一| 亚洲最大福利视频| 亚洲欧好州第一的日产suv| 精品丝袜国产自在线拍亚洲| 亚洲av成人综合网| 亚洲人成77777在线观看网| 亚洲精品无播放器在线播放 | 国产乱弄免费视频| 人人狠狠综合久久亚洲高清| 亚洲精品国产精品国自产观看| 亚洲av无码天堂一区二区三区| 亚洲精品国产成人影院| 中文字幕第13亚洲另类|