分析和學習Spring中的jpetstore用戶管理

          分析和學習Spring中的jpetstore用戶管理

            存在用戶的系統,必然需要用戶的登錄和認證,今天就通過分析Spring中自帶的jpetstore的例子來學習一下如何實現在Spring構架的系統中用戶登錄。

          1、首先從注冊用戶開始,先看看jpetstore-servlet.xml中關于注冊用戶的bean定義,從定義命名中就可以看出下面這段就是注冊用戶的:
            <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的構造函數中得到,原來為EditAccountForm; 
           2). EditoAccountForm.jsp中顯得非常亂,其實沒有多少難理解的地方,最主要的是這個form既是添加新用戶的,又是編輯用戶信息的,所以顯得有點亂糟糟的。

          2、添加好了新用戶,接下來看看如何登錄,在jpetstore-servlet中發現這兩個相關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). 第二個bean是在運行時用戶輸入用戶名和密碼的form,叫做SignonForm,對于這個 ParameterizableViewController,用文檔里的話說這是最簡單的Controller,其作用就是在運行中指向 Controller而不是直接指向jsp文件,僅此而已。
           2). SignonForm.jsp,里面就是一個簡單的form,其action就是第一個bean,即/shop/signon.do,最需要注意的是 signonForwardAction,其主要作用是forward到需要輸入用戶名和密碼的那個頁面上去,這個變量哪里來的呢?看看下面:
            <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>
            原來,上面的signonInterceptor實現了preHandle,因此在請求上面的map頁面時,首先要經過這個Interceptor,看看 SignonInterceptor的源碼,原來在其中為signon.jsp賦予一個signonForwardAction對象,呵呵,總算明白了。
           3). 接下來去學習一下SignonController,其主體部分中可以看出,首先取出用戶輸入的username和password,然后到數據庫中驗證 有沒有這個用戶,如果沒有這個用戶,返回各錯誤頁面;如果成功,首先生成一個UserSession對象,在request的session加入這個 userSession,注意這部分代碼中給出了PagedListHolder分頁的簡單使用方法,關于分頁顯示,以后再學習吧。

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

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

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          留言簿

          隨筆分類(1)

          文章分類(52)

          好友 小山的博客

          最新隨筆

          最新評論

          主站蜘蛛池模板: 宁海县| 霍邱县| 石景山区| 专栏| 弥勒县| 南平市| 遵化市| 高平市| 自治县| 昂仁县| 句容市| 阿克陶县| 东明县| 石屏县| 三穗县| 静宁县| 灵武市| 锡林郭勒盟| 商南县| 正宁县| 虹口区| 滨海县| 乐安县| 东海县| 葫芦岛市| 常州市| 满城县| 静宁县| 淮阳县| 兴和县| 旬阳县| 开封市| 天峻县| 潢川县| 怀安县| 泌阳县| 镇坪县| 通河县| 三门峡市| 伊宁县| 长丰县|