不要刷新

          做下學(xué)習(xí)筆記,要不老忘,時(shí)間一長(zhǎng),什么都要重頭再來(lái)...

          Spring學(xué)習(xí)筆記之Spring MVC(1)

           

               圖書館借了本SSH的書,有點(diǎn)兒簡(jiǎn)單的速成的感覺(jué),雖然每個(gè)框架都需要學(xué)習(xí)很長(zhǎng)時(shí)間才能深入,但這樣學(xué)習(xí)也不錯(cuò),有個(gè)整體上的了解后,再在實(shí)踐中一步步完善,從而有深入的認(rèn)識(shí)

          今天看的是Spring MVC框架,實(shí)例是簡(jiǎn)單的用戶登陸,功能是對(duì)用戶登陸進(jìn)行用戶名和密碼的判斷,及登陸成功失敗后的跳轉(zhuǎn).廢話不多說(shuō),直接開(kāi)始

          開(kāi)發(fā)環(huán)境是Myeclipse 7,tomcat 6,spirng2.0(做小程序,版本基本沒(méi)影響吧)
                          需要的包主要是Spring Core,Spring MVC兩個(gè),但MyEclipse自動(dòng)導(dǎo)入了很多工具包,如log4j等,其中一些是否必須使用我還沒(méi)有驗(yàn)證

          1.視圖層view:3個(gè)視圖頁(yè)

          index.jsp 首頁(yè),實(shí)現(xiàn)登陸表單的提交

          success.jsp 成功后的跳轉(zhuǎn)頁(yè)面,顯示歡迎

          failure.jsp 失敗后的跳轉(zhuǎn)頁(yè)面,顯示失敗原因

          代碼:

          index.jsp
                  主要就是個(gè)表單

          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,純屬無(wú)聊,因?yàn)榭梢耘渲眠^(guò)濾的格式,所以這里寫什么結(jié)尾是無(wú)所謂的,只是想試下效果而已,

          success.jsp

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

                     顯示成功

          failure.jsp

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

                顯示失敗

          2.模型層model:模擬實(shí)現(xiàn)數(shù)據(jù)庫(kù)的功能,及用戶驗(yàn)證的方法
                  
          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     //模擬數(shù)據(jù)庫(kù)
          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     //判斷一個(gè)已存在的用戶密碼是否正確
          23     public static boolean confirmPassword(String username,String password){
          24         return map.get(username).equals(password);
          25         
          26     }
          27 }
          28 

          3.控制層controller:調(diào)用模型層方法來(lái)實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)

          LoginController.java 需要實(shí)現(xiàn)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        //如果存在,判斷密碼是否正確,正確跳轉(zhuǎn),錯(cuò)誤跳轉(zhuǎn)
          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.最后是兩個(gè)配置文件:web.xml和spring配置文件,applicationContext.xml

          web.xml

            <!-- 配置spring的后臺(tái)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結(jié)尾的請(qǐng)求,可以修改 -->
            
          <servlet-mapping>
                
          <servlet-name>dispatcherServlet</servlet-name>
                
          <url-pattern>*.asp</url-pattern>
            
          </servlet-mapping>

                   從這個(gè)配置文件可以知道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">
                  
          <!-- 注入失敗頁(yè)面屬性 -->
                  
          <property name="failurePage">
                      
          <value>failure.jsp</value>
                  
          </property>
                  
          <!-- 注入成功頁(yè)面屬性 -->
                  
          <property name="successPage">
                      
          <value>success.jsp</value>
                  
          </property>
              
          </bean>
                  這個(gè)配置文件配置了請(qǐng)求的處理方向和控制器兩個(gè)屬性的注入
                  運(yùn)行就可以了,結(jié)果就是控制器里的結(jié)果,這樣,就完成了這個(gè)簡(jiǎn)單實(shí)例.

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

                   SpringMVC就暫時(shí)到這里了,看了網(wǎng)上對(duì)它的評(píng)價(jià),雖然最近用到肯能性不大,但對(duì)Spring的學(xué)習(xí),還是起了一定的作用的.

                  源文件下載,沒(méi)有LIB,需要自己導(dǎo)



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

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


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


          網(wǎng)站導(dǎo)航:
           
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 西和县| 南皮县| 德清县| 探索| 互助| 建阳市| 濮阳县| 阳东县| 酒泉市| 长治市| 荃湾区| 泰兴市| 武宣县| 溆浦县| 永修县| 娄烦县| 西乡县| 日照市| 偃师市| 乌拉特中旗| 嘉峪关市| 集安市| 甘泉县| 绥棱县| 靖边县| 平度市| 阆中市| 文化| 通州市| 静宁县| 玉田县| 罗源县| 庆云县| 龙山县| 桑植县| 崇信县| 灵台县| 隆昌县| 汕头市| 靖西县| 广昌县|