不要刷新

          做下學習筆記,要不老忘,時間一長,什么都要重頭再來...

          Spring學習筆記之Spring MVC(1)

           

               圖書館借了本SSH的書,有點兒簡單的速成的感覺,雖然每個框架都需要學習很長時間才能深入,但這樣學習也不錯,有個整體上的了解后,再在實踐中一步步完善,從而有深入的認識

          今天看的是Spring MVC框架,實例是簡單的用戶登陸,功能是對用戶登陸進行用戶名和密碼的判斷,及登陸成功失敗后的跳轉.廢話不多說,直接開始

          開發環境是Myeclipse 7,tomcat 6,spirng2.0(做小程序,版本基本沒影響吧)
                          需要的包主要是Spring Core,Spring MVC兩個,但MyEclipse自動導入了很多工具包,如log4j等,其中一些是否必須使用我還沒有驗證

          1.視圖層view:3個視圖頁

          index.jsp 首頁,實現登陸表單的提交

          success.jsp 成功后的跳轉頁面,顯示歡迎

          failure.jsp 失敗后的跳轉頁面,顯示失敗原因

          代碼:

          index.jsp
                  主要就是個表單

          1    <form action="login.asp">
          2        userName:<input type="text" name="username" /><br/>
          3        password:<input type="password" name="password"/><br/>
          4        <input type="submit" value="提交"/>
          5    </form>

                注意:action的值是login.asp,純屬無聊,因為可以配置過濾的格式,所以這里寫什么結尾是無所謂的,只是想試下效果而已,

          success.jsp

          登陸成功,歡迎<%=request.getAttribute("username")%>

                     顯示成功

          failure.jsp

          登陸失敗,<%=request.getAttribute("msg")%>

                顯示失敗

          2.模型層model:模擬實現數據庫的功能,及用戶驗證的方法
                  
          UserInfoBean.java

           1 package springmvc.model;
           2 
           3 import java.util.HashMap;
           4 import java.util.Map;
           5 import com.sun.org.apache.bcel.internal.generic.NEW;
           6 
           7 public class UserInfoBean {
           8     public static Map<String, String> map = new HashMap<String, String>();
           9     //模擬數據庫
          10     static{
          11         String personOneUsername ="xiaosan";
          12         String personOnePasswrod = "123";
          13         String personTwousename = "asi";
          14         String personTwoPassword = "456";
          15         map.put(personOneUsername, personOnePasswrod);
          16         map.put(personTwousename, personTwoPassword);
          17     }
          18     //判斷用戶是否存在
          19     public static boolean exisitUser(String username){
          20         return map.containsKey(username);
          21     }
          22     //判斷一個已存在的用戶密碼是否正確
          23     public static boolean confirmPassword(String username,String password){
          24         return map.get(username).equals(password);
          25         
          26     }
          27 }
          28 

          3.控制層controller:調用模型層方法來實現頁面跳轉

          LoginController.java 需要實現Controller接口

           1package springmvc.controller;
           2
           3import java.util.HashMap;
           4import java.util.Map;
           5
           6import javax.servlet.http.HttpServletRequest;
           7import javax.servlet.http.HttpServletResponse;
           8
           9import org.springframework.web.servlet.ModelAndView;
          10import org.springframework.web.servlet.mvc.Controller;
          11
          12import springmvc.model.UserInfoBean;
          13
          14public class LoginController implements Controller{
          15    
          16    private String successPage ;
          17    private String failurePage ;
          18    @Override
          19    public ModelAndView handleRequest(HttpServletRequest req,
          20            HttpServletResponse resp) throws Exception {
          21        String username = req.getParameter("username");
          22        String password = req.getParameter("password");
          23        String message = null;
          24        
          25        //判斷是否為空
          26        if(username == null||password ==null||username.equals("")||password.equals("")){
          27            message = "username or password can't be null";
          28            Map<String,String> model = new HashMap<String,String>();
          29            model.put("msg", message);
          30            return new ModelAndView(getFailurePage(),model);
          31        }

          32        //判斷用戶名是否存在
          33        if(!UserInfoBean.exisitUser(username)){
          34            message ="username doesn't exisit";
          35            Map<String,String> model = new HashMap<String,String>();
          36            model.put("msg", message);
          37            return new ModelAndView(getFailurePage(),model);
          38        }

          39        //如果存在,判斷密碼是否正確,正確跳轉,錯誤跳轉
          40        if(!UserInfoBean.confirmPassword(username, password)){
          41            message ="password is wrong";
          42            Map<String,String> model = new HashMap<String,String>();
          43            model.put("msg", message);
          44            return new ModelAndView(getFailurePage(),model);
          45        }
          else{
          46            Map<String,String> model = new HashMap<String,String>();
          47            model.put("username", username);
          48            return new ModelAndView(getSuccessPage(),model);
          49        }

          50    }

          51    //getter and setter
          52    public String getSuccessPage() {
          53        return successPage;
          54    }

          55    public void setSuccessPage(String successPage) {
          56        this.successPage = successPage;
          57    }

          58    public String getFailurePage() {
          59        return failurePage;
          60    }

          61    public void setFailurePage(String failurePage) {
          62        this.failurePage = failurePage;
          63    }

          64
          65}

          66


          4.最后是兩個配置文件:web.xml和spring配置文件,applicationContext.xml

          web.xml

            <!-- 配置spring的后臺servlet -->
            
          <servlet>
                
          <servlet-name>dispatcherServlet</servlet-name>
                
          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
                
          <!-- 指定spring配置文件的路徑 -->
                
          <init-param>
                    
          <param-name>contextConfigLocation</param-name>
                    
          <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
                
          </init-param>
                
          <load-on-startup>1</load-on-startup>
            
          </servlet>
            
            
          <!-- 攔截所有以.asp結尾的請求,可以修改 -->
            
          <servlet-mapping>
                
          <servlet-name>dispatcherServlet</servlet-name>
                
          <url-pattern>*.asp</url-pattern>
            
          </servlet-mapping>

                   從這個配置文件可以知道Spring的配置文件名及位置是可以更改的.

                            ApplictionContext.xml
              <bean id="urlMappint" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
                  
          <property name="mappings">
                      
          <props>
                          
          <!-- login.asp由id為login的bean處理 -->
                          
          <prop key="login.asp">login</prop>
                      
          </props>
                  
          </property>
              
          </bean>
              
              
          <!-- 配置控制器 -->
              
          <bean id="login" class="springmvc.controller.LoginController">
                  
          <!-- 注入失敗頁面屬性 -->
                  
          <property name="failurePage">
                      
          <value>failure.jsp</value>
                  
          </property>
                  
          <!-- 注入成功頁面屬性 -->
                  
          <property name="successPage">
                      
          <value>success.jsp</value>
                  
          </property>
              
          </bean>
                  這個配置文件配置了請求的處理方向和控制器兩個屬性的注入
                  運行就可以了,結果就是控制器里的結果,這樣,就完成了這個簡單實例.

                  現在對SpringMVC有了個初步的了解,由于接觸Spring才幾天,所以問題還有很多,如
                              Spring的注入方式,雖然都看過了,但是還沒怎么使用,這個例子中只涉及了set值注入,還是比較簡單的,沒什么理解上的難度,對于其他幾種方式,等都理解了再做個總結吧,
                              由于springFramwork這個單詞很長,所以他的類路徑就顯的特別長,加上還不太熟悉他的結構,所以哪里需要用到那些類還是不太明白,先遇到一個記一個吧,這里用到的就有配置文件中的org.springframework.web.servlet.DispatcherServlet、控制url處理的org.springframework.web.servlet.handler.SimpleUrlHandlerMapping等類.
                              SpringMVC中,控制器要返回一個ModelAndView,這個類的構造函數太多了,具體都是傳什么值,什么作用,還沒有深入了解.

                   SpringMVC就暫時到這里了,看了網上對它的評價,雖然最近用到肯能性不大,但對Spring的學習,還是起了一定的作用的.

                  源文件下載,沒有LIB,需要自己導



          突然明白,崩潰的日子,是自己的不努力造成的.

          posted on 2009-12-20 01:35 不要刷新 閱讀(2605) 評論(0)  編輯  收藏 所屬分類: Java+Framework


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


          網站導航:
           
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 泰兴市| 泗洪县| 东光县| 双牌县| 边坝县| 花垣县| 阳原县| 环江| 舟山市| 洪洞县| 张家界市| 千阳县| 敦煌市| 萨迦县| 缙云县| 富阳市| 岳阳市| 梓潼县| 青海省| 江油市| 浦城县| 互助| 囊谦县| 琼海市| 诸城市| 湘西| 龙山县| 吕梁市| 延长县| 临邑县| 万荣县| 如东县| 定西市| 杨浦区| 绵竹市| 贵德县| 平泉县| 历史| 呼玛县| 宁津县| 雅安市|