隨筆-26  評論-12  文章-0  trackbacks-0

          SpringMVC框架介紹


          Spring框架提供了構造Web應用程序的全能MVC模塊。Spring MVC分離了控制器、模型對象、分派器以及處理程序對象的角色,這種分離讓它們更容易進行制定。是一個標準的MVC框架。

          那你猜一猜哪一部分應該是哪一部分?



          SpringMVC框架圖


                             

          SpringMVC接口解釋

          DispatcherServlet接口

          Spring提供的前端控制器,所有的請求都有經過它來統一分發。在DispatcherServlet將請求分發給Spring Controller之前,需要借助于Spring提供的HandlerMapping定位到具體的Controller

          HandlerMapping接口

          能夠完成客戶請求到Controller映射。

          Controller接口

          需要為并發用戶處理上述請求,因此實現Controller接口時,必須保證線程安全并且可重用。Controller將處理用戶請求,這和Struts Action扮演的角色是一致的。一旦Controller處理完用戶請求,則返回ModelAndView對象給DispatcherServlet前端控制器,ModelAndView中包含了模型(Model)和視圖(View)。從宏觀角度考慮,DispatcherServlet是整個Web應用的控制器;從微觀考慮,Controller是單個Http請求處理過程中的控制器,而ModelAndViewHttp請求過程中返回的模型(Model)和視圖(View)。

          ViewResolver接口

          Spring提供的視圖解析器(ViewResolver)在Web應用中查找View對象,從而將相應結果渲染給客戶。


          SpringMVC運行原理

          1.      客戶端請求提交到DispatcherServlet

          2.      由DispatcherServlet控制器查詢一個或多個HandlerMapping,找到處理請求的Controller

          3.      DispatcherServlet將請求提交到Controller

          4.      Controller調用業務邏輯處理后,返回ModelAndView

          5.      DispatcherServlet查詢一個或多個ViewResoler視圖解析器,找到ModelAndView指定的視圖

          6.      視圖負責將結果顯示到客戶端


          SpringMVC運行實例

          Account類:

          1. package com.pb.entity;  
          2.   
          3. public class Account {  
          4.     private String cardNo;  
          5.     private String password;  
          6.     private float balance;  
          7.     public String getCardNo() {  
          8.         return cardNo;  
          9.     }  
          10.     public void setCardNo(String cardNo) {  
          11.         this.cardNo = cardNo;  
          12.     }  
          13.     public String getPassword() {  
          14.         return password;  
          15.     }  
          16.     public void setPassword(String password) {  
          17.         this.password = password;  
          18.     }  
          19.     public float getBalance() {  
          20.         return balance;  
          21.     }  
          22.     public void setBalance(float balance) {  
          23.         this.balance = balance;  
          24.     }  
          25.       
          26. }  

          LoginController類:

          1. package com.pb.web.controller;  
          2.   
          3. import java.util.HashMap;  
          4. import java.util.Map;  
          5.   
          6. import javax.servlet.http.HttpServletRequest;  
          7. import javax.servlet.http.HttpServletResponse;  
          8.   
          9. import org.springframework.web.servlet.ModelAndView;  
          10. import org.springframework.web.servlet.mvc.AbstractController;  
          11.   
          12. import com.pb.entity.Account;  
          13.   
          14. public class LoginController extends AbstractController {  
          15.     private String successView;  
          16.     private String failView;//這兩個參數是返回值傳給applicationContext.xml,進行頁面分配  
          17.       
          18.     public String getSuccessView() {  
          19.         return successView;  
          20.     }  
          21.     public void setSuccessView(String successView) {  
          22.         this.successView = successView;  
          23.     }  
          24.     public String getFailView() {  
          25.         return failView;  
          26.     }  
          27.     public void setFailView(String failView) {  
          28.         this.failView = failView;  
          29.     }  
          30.     @Override  
          31.     protected ModelAndView handleRequestInternal(HttpServletRequest request,  
          32.             HttpServletResponse response) throws Exception {  
          33.         // TODO Auto-generated method stub  
          34.         String cardNo=request.getParameter("cardNo");  
          35.         String password=request.getParameter("password");  
          36.         Account account =getAccount(cardNo,password);  
          37.         Map<String ,Object> model=new HashMap<String,Object>();  
          38.         if(account !=null){  
          39.             model.put("account", account);  
          40.             return new ModelAndView(getSuccessView(),model);  
          41.         }else{  
          42.             model.put("error", "卡號和密碼不正確");  
          43.             return new ModelAndView(getFailView(),model);  
          44.         }         
          45.     }//本應該這個方法寫在模型層,這地方直接給放在了邏輯層這個地方偷懶了。  
          46.     public Account getAccount(String cardNo,String password){  
          47.         if(cardNo.equals("123")&&password.equals("123")){  
          48.             Account account =new Account();  
          49.             account.setCardNo(cardNo);  
          50.             account.setBalance(88.8f);  
          51.             return account;  
          52.         }else{  
          53.             return null;  
          54.         }  
          55.     }  
          56.   
          57. }  
          applicationContext.xml

          1. <?xml version="1.0" encoding="UTF-8"?>  
          2.   
          3. <beans xmlns="http://www.springframework.org/schema/beans"  
          4.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
          5.          xmlns:aop="http://www.springframework.org/schema/aop"  
          6.          xmlns:tx="http://www.springframework.org/schema/tx"  
          7.          xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd  
          8.            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd  
          9.            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">  
          10.     <bean id="loginController" class="com.pb.web.controller.LoginController">  
          11.         <property name="successView" value="showAccount"></property>  
          12.         <property name="failView" value="login"></property>  
          13.     </bean>  
          14.     <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
          15.         <property name="mappings">  
          16.             <props>  
          17.                 <prop key="/login.do">loginController</prop>  
          18.             </props>  
          19.         </property>  
          20.     </bean>  
          21.     <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
          22.         <property name="prefix" value="/"></property>  
          23.         <property name="suffix" value=".jsp"></property>  
          24.     </bean>  
          25. </beans>  

          Jsp頁面:

          1. <%@ page language="java" contentType="text/html; charset=GB18030"  
          2.     pageEncoding="GB18030"%>  
          3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
          4. <html>  
          5. <head>  
          6. <meta http-equiv="Content-Type" content="text/html; charset=GB18030">  
          7. <title>Insert title here</title>  
          8. </head>  
          9. <body>  
          10.     <a href="login.jsp">進入</a>  
          11.   
          12. </body>  
          13. </html>  
          login.jsp

          1. <%@ page language="java" contentType="text/html; charset=GB18030"  
          2.     pageEncoding="GB18030"%>  
          3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
          4. <html>  
          5. <head>  
          6. <meta http-equiv="Content-Type" content="text/html; charset=GB18030">  
          7. <title>Insert title here</title>  
          8. </head>  
          9. <body>  
          10. ${error }  
          11.     <form action="login.do" method="post">  
          12.         賬號登陸<br>  
          13.         <hr>        
          14.         卡號:<input type="text" name="cardNo"><br>  
          15.         密碼:<input type="text" name="password"><br>  
          16.         <input type="submit" value="登陸">  
          17.     </form>  
          18.   
          19. </body>  
          20. </html>  
          showAccount.jsp

          1. <%@ page language="java" contentType="text/html; charset=GB18030"  
          2.     pageEncoding="GB18030"%>  
          3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
          4. <html>  
          5. <head>  
          6. <meta http-equiv="Content-Type" content="text/html; charset=GB18030">  
          7. <title>Insert title here</title>  
          8. </head>  
          9. <body>  
          10.     賬戶信息<br>  
          11.     卡號:${account.cardNo }<br>  
          12.     密碼:${account.password }<br>  
          13.     錢數:${account.balance }<br>  
          14. </body>  
          15. </html>  
          Web.xml
          1. <?xml version="1.0" encoding="UTF-8"?>  
          2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
          3.             xmlns="http://java.sun.com/xml/ns/j2ee"   
          4.             xmlns:javaee="http://java.sun.com/xml/ns/javaee"   
          5.             xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">  
          6.   <welcome-file-list>  
          7.     <welcome-file>index.jsp</welcome-file>  
          8.   </welcome-file-list>  
          9.   <servlet>  
          10.     <servlet-name>Dispatcher</servlet-name>  
          11.     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
          12.     <init-param>  
          13.         <param-name>contextConfigLocation</param-name>  
          14.         <param-value>classpath:applicationContext.xml</param-value>  
          15.     </init-param>  
          16.   </servlet>  
          17.   <servlet-mapping>  
          18.     <servlet-name>Dispatcher</servlet-name>  
          19.     <url-pattern>*.do</url-pattern>  
          20.   </servlet-mapping>    
          21. </web-app>  
          posted on 2012-07-24 22:08 地心引力 閱讀(4605) 評論(3)  編輯  收藏

          評論:
          # re: 輕松上手SpringMVC 2014-07-14 15:03 | asdfasdf
          asdfasfd  回復  更多評論
            
          # re: 輕松上手SpringMVC 2014-07-14 15:03 | asdfasdf
          adf  回復  更多評論
            
          # re: 輕松上手SpringMVC 2016-08-16 16:56 | 扣子
          樓主您好,請問applicationContext.xml中的viewResolver配置中的返回值從哪里返回的。  回復  更多評論
            

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


          網站導航:
           
          主站蜘蛛池模板: 翼城县| 龙江县| 乡城县| 淄博市| 会昌县| 稷山县| 衡阳市| 普兰店市| 马龙县| 图们市| 徐州市| 松江区| 桐柏县| 韶山市| 自治县| 两当县| 江津市| 吉水县| 大同县| 察雅县| 荣昌县| 大悟县| 滦平县| 玉树县| 永修县| 车险| 济源市| 永丰县| 桐梓县| 澳门| 江永县| 佛冈县| 曲周县| 石首市| 色达县| 萨嘎县| 互助| 高雄市| 裕民县| 扶风县| 板桥市|