SpringMVC框架介绍

来源:互联网 发布:竞彩足球数据 编辑:程序博客网 时间:2024/05/16 04:52

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类:

 

Java代码 
  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类:

 

Java代码 
  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

 

 

Html代码 
  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页面:

 

Html代码 
  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

 

 

Html代码 
  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

 

 

Html代码 
  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
Html代码 
  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>  
转自:
http://com-xpp.iteye.com/blog/1604183
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 乳房一生气就疼怎么办 4s屏幕不显示怎么办 雷神红蜘蛛掉漆怎么办 桔子树根部霉了怎么办 电脑u盘被禁用怎么办 机房u盘限制了怎么办 蜘蛛爬到人身上怎么办 房间里有蛐蛐叫怎么办 养的雨林蝎跑了怎么办 多肉长得太高了怎么办 手被蝎子咬了怎么办 被蝎子蛰住了怎么办 小孩被蝎子蜇了怎么办 孕妇被蝎子蛰了怎么办 怀孕被蝎子蜇了怎么办 孩子被蝎子蛰了怎么办 手被蝎子蛰了怎么办 被东亚钳蝎蛰了怎么办 孕37周羊水过多怎么办 孕38周羊水过多怎么办 孕39周羊水过多怎么办 生完孩子腿关节疼怎么办 手指上长了倒刺怎么办 肥肉吃多了恶心怎么办 大便粘稠怎么回事还便秘怎么办 狗狗大便次数多怎么办 宝宝拉白色稀便怎么办 5个月宝宝流鼻涕怎么办 5个月婴儿流鼻涕怎么办 五个月宝宝流鼻涕鼻塞怎么办 4个月宝宝流鼻涕怎么办 大便经常是稀的怎么办 拉黑色的稀大便怎么办 孕晚期半夜饿了怎么办 肠胃不好大便不成型怎么办 螃蟹吃多了过敏怎么办 吃螃蟹过敏很痒怎么办 吃螃蟹喝啤酒了怎么办 1个月宝宝拉肚子怎么办 被雨林蝎子蛰了怎么办 在家被蜈蚣咬了怎么办