亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

SpringMVC介紹

2019-11-14 15:40:55
字體:
來源:轉載
供稿:網友

一、SPRing Web MVC簡介
     Spring Web MVC是一種基于java的實現了Web MVC設計模式的請求驅動類型的輕量級Web框架,即使用了MVC架構模式的思想,將web層進行職責解耦,基于請求驅動指的就是使用請求-響應模型,框架的目的就是幫助我們簡化開發,Spring Web MVC也是要簡化我們日常Web開發的。
二、Spring Web MVC優勢
1、清晰的角色劃分:前端控制器(DispatcherServlet)、請求到處理器映射(HandlerMapping)、處理器適配器(HandlerAdapter)、視圖解析器(ViewResolver)、處理器或頁面控制器(Controller)、驗證器(   Validator)、命令對象(Command  請求參數綁定到的對象就叫命令對象)、表單對象(Form Object 提供給表單展示和提交到的對象就叫表單對象)。
2、分工明確,而且擴展點相當靈活,可以很容易擴展,雖然幾乎不需要;
3、由于命令對象就是一個POJO,無需繼承框架特定API,可以使用命令對象直接作為業務對象;
4、和Spring 其他框架無縫集成,是其它Web框架所不具備的;
5、可適配,通過HandlerAdapter可以支持任意的類作為處理器;
6、可定制性,HandlerMapping、ViewResolver等能夠非常簡單的定制;
7、功能強大的數據驗證、格式化、綁定機制;
8、利用Spring提供的Mock對象能夠非常簡單的進行Web層單元測試;
9、本地化、主題的解析的支持,使我們更容易進行國際化和主題的切換。
10、強大的jsp標簽庫,使JSP編寫更容易。
三、Spring Web MVC處理請求的流程

1用戶發送請求給前端控制器(DispatcherServlet) 2前端控制器講請求委托給頁面控制器/處理器 3處理器調用業務對象處理請求,業務對象處理完成請求后返回模型數據給處理器 4處理器將得到的ModelAndView(模型數據和試圖邏輯名)返回給前端控制器 5前端控制器將模型數據傳給視圖并渲染視圖 6前端控制器收回控制權,并將視圖響應給用戶
四、Hello World入門
1、前端控制器的配置
在web.xml中添加如下配置:

Java代碼 復制代碼 收藏代碼
  1. <servlet>    
  2.     <servlet-name>chapter2</servlet-name>    
  3.     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    
  4.     <load-on-startup>1</load-on-startup>    
  5. </servlet>    
  6. <servlet-mapping>    
  7.     <servlet-name>chapter2</servlet-name>    
  8.     <url-pattern>/</url-pattern>    
  9. </servlet-mapping>    
<servlet>      <servlet-name>chapter2</servlet-name>      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>      <load-on-startup>1</load-on-startup>  </servlet>  <servlet-mapping>      <servlet-name>chapter2</servlet-name>      <url-pattern>/</url-pattern>  </servlet-mapping>  

load-on-startup:表示啟動容器時初始化該Servlet; url-pattern:表示哪些請求交給Spring Web MVC處理, “/” 是用來定義默認servlet映射的。也可以如“*.html”表示攔截所有以html為擴展名的請求。 自此請求已交給Spring Web MVC框架處理,因此我們需要配置Spring的配置文件,默認DispatcherServlet會加載WEB-INF/[DispatcherServlet的Servlet名字]-servlet.xml配置文件。本示例為WEB-INF/ chapter2-servlet.xml。
2、Spring配置文件中配置HandlerMapping、HandlerAdapter 具體配置在WEB-INF/ chapter2-servlet.xml文件中

Java代碼 復制代碼 收藏代碼
  1. <!-- HandlerMapping -->    
  2. <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>    
  3.      
  4. <!-- HandlerAdapter -->    
  5. <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>   
<!-- HandlerMapping -->  <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>     <!-- HandlerAdapter -->  <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> 

BeanNameUrlHandlerMapping:表示將請求的URL和Bean名字映射,如URL為 “上下文/hello”,則Spring配置文件必須有一個名字為“/hello”的Bean,上下文默認忽略。 SimpleControllerHandlerAdapter:表示所有實現了org.springframework.web.servlet.mvc.Controller接口的Bean可以作為Spring Web MVC中的處理器。如果需要其他類型的處理器可以通過實現HadlerAdapter來解決。
3、在Spring配置文件中配置ViewResolver
具體配置在WEB-INF/ chapter2-servlet.xml文件中:

Java代碼 復制代碼 收藏代碼
  1. <!-- ViewResolver -->    
  2. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">    
  3.     <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>    
  4.     <property name="prefix" value="/WEB-INF/jsp/"/>    
  5.     <property name="suffix" value=".jsp"/>    
  6. </bean>    
<!-- ViewResolver -->  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">      <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>      <property name="prefix" value="/WEB-INF/jsp/"/>      <property name="suffix" value=".jsp"/>  </bean>  

InternalResourceViewResolver:用于支持Servlet、JSP視圖解析;     viewClass:JstlView表示JSP模板頁面需要使用JSTL標簽庫,classpath中必須包含jstl的相關jar包;     prefix和suffix:查找視圖頁面的前綴和后綴(前綴[邏輯視圖名]后綴),比如傳進來的邏輯視圖名為hello,則該該jsp視圖頁面應該存放在“WEB-INF/jsp/hello.jsp”;
4、開發處理器/頁面控制器

Java代碼 復制代碼 收藏代碼
  1. package cn.javass.chapter2.web.controller;    
  2. import javax.servlet.http.HttpServletRequest;    
  3. import javax.servlet.http.HttpServletResponse;    
  4. import org.springframework.web.servlet.ModelAndView;    
  5. import org.springframework.web.servlet.mvc.Controller;    
  6. public class HelloWorldController implements Controller {    
  7.     @Override    
  8.     public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception {    
  9.        //1、收集參數、驗證參數    
  10.        //2、綁定參數到命令對象    
  11.        //3、將命令對象傳入業務對象進行業務處理    
  12.        //4、選擇下一個頁面    
  13.        ModelAndView mv = new ModelAndView();    
  14.        //添加模型數據 可以是任意的POJO對象    
  15.        mv.addObject("message", "Hello World!");    
  16.        //設置邏輯視圖名,視圖解析器會根據該名字解析到具體的視圖頁面    
  17.        mv.setViewName("hello");    
  18.        return mv;    
  19.     }    
  20. }    
package cn.javass.chapter2.web.controller;  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse;  import org.springframework.web.servlet.ModelAndView;  import org.springframework.web.servlet.mvc.Controller;  public class HelloWorldController implements Controller {      @Override      public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception {         //1、收集參數、驗證參數         //2、綁定參數到命令對象         //3、將命令對象傳入業務對象進行業務處理         //4、選擇下一個頁面         ModelAndView mv = new ModelAndView();         //添加模型數據 可以是任意的POJO對象         mv.addObject("message", "Hello World!");         //設置邏輯視圖名,視圖解析器會根據該名字解析到具體的視圖頁面         mv.setViewName("hello");         return mv;      }  }  

org.springframework.web.servlet.mvc.Controller:頁面控制器/處理器必須實現Controller接口,注意別選錯了;后邊我們會學習其他的處理器實現方式; public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) :功能處理方法,實現相應的功能處理,比如收集參數、驗證參數、綁定參數到命令對象、將命令對象傳入業務對象進行業務處理、最后返回ModelAndView對象; ModelAndView:包含了視圖要實現的模型數據和邏輯視圖名;“mv.addObject("message", "Hello World!"); ”表示添加模型數據,此處可以是任意POJO對象;“mv.setViewName("hello");”表示設置邏輯視圖名為“hello”,視圖解析器會將其解析為具體的視圖,如前邊的視圖解析器InternalResourceVi。wResolver會將其解析為“WEB-INF/jsp/hello.jsp”。
我們需要將其添加到Spring配置文件(WEB-INF/chapter2-servlet.xml),讓其接受Spring IoC容器管理:

Java代碼 復制代碼 收藏代碼
  1. <!-- 處理器 -->    
  2. <bean name="/hello" class="cn.javass.chapter2.web.controller.HelloWorldController"/>    
<!-- 處理器 -->  <bean name="/hello" class="cn.javass.chapter2.web.controller.HelloWorldController"/>  

name="/hello":前邊配置的BeanNameUrlHandlerMapping,表示如過請求的URL為 “上下文/hello”,則將會交給該Bean進行處理。
5、開發視圖頁面 創建 /WEB-INF/jsp/hello.jsp視圖頁面:

Java代碼 復制代碼 收藏代碼
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>    
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">    
  3. <html>    
  4. <head>    
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">    
  6. <title>Hello World</title>    
  7. </head>    
  8. <body>    
  9. ${message}    
  10. </body>    
  11. </html>    
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  <html>  <head>  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  <title>Hello World</title>  </head>  <body>  ${message}  </body>  </html>  

${message}:表示顯示由HelloWorldController處理器傳過來的模型數據。
通過請求:http://localhost:9080/springmvc-chapter2/hello,如果頁面輸出“Hello World! ”就表明我們成功了!
五、Spring MVC核心開發步驟:

1、  DispatcherServlet在web.xml中的部署描述,從而攔截請求到Spring Web MVC

2、  HandlerMapping的配置,從而將請求映射到處理器

3、  HandlerAdapter的配置,從而支持多種類型的處理器

4、  ViewResolver的配置,從而將邏輯視圖名解析為具體視圖技術

5、處理器(頁面控制器)的配置,從而進行功能處理


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品久久久久久久久久久久久| 日本国产一区二区三区| 91欧美视频网站| 欧美专区福利在线| 国产欧美日韩精品在线观看| 国产小视频国产精品| 原创国产精品91| 欧美性视频在线| 亚洲男人7777| 欧美黄网免费在线观看| 8090成年在线看片午夜| 亚洲成人网av| 136fldh精品导航福利| 久久躁狠狠躁夜夜爽| 国产在线精品播放| 久久久日本电影| 欧美大人香蕉在线| 亚洲第一在线视频| 亚洲人精选亚洲人成在线| 国产精品aaa| 亚洲精品电影网站| 欧美午夜激情在线| 国产日韩视频在线观看| 国产精品一区二区在线| 欧美理论电影网| 国产91精品久久久久久久| 97视频在线观看亚洲| 亚洲欧美福利视频| 亚洲自拍偷拍在线| 亚洲国产中文字幕久久网| 亚洲欧美三级伦理| 国产亚洲精品久久久久久| 精品久久久久人成| 欧美成人三级视频网站| 91免费人成网站在线观看18| 国产99久久久欧美黑人| 久久艹在线视频| 久久久久北条麻妃免费看| 欧美亚洲另类视频| 91久久国产精品91久久性色| 国产+人+亚洲| 欧美精品videofree1080p| 51ⅴ精品国产91久久久久久| 亚洲欧美国产一本综合首页| 18一19gay欧美视频网站| 日韩在线国产精品| 日韩精品在线视频美女| 91地址最新发布| 欧美性极品少妇精品网站| 久久精品国产v日韩v亚洲| 国产精品福利在线| 国产一区二区三区三区在线观看| 91高清视频免费观看| 久久久免费电影| 国产精品jizz在线观看麻豆| 国产精品va在线| 97视频在线免费观看| 91精品一区二区| 在线午夜精品自拍| 日本成人在线视频网址| 黑丝美女久久久| 国产精品18久久久久久首页狼| 成人黄色影片在线| 久久久久亚洲精品国产| 成人国产精品一区二区| 久久免费精品日本久久中文字幕| 亚洲图片制服诱惑| 国产精品电影久久久久电影网| 中文字幕亚洲综合久久筱田步美| 国产精品久久久久不卡| 欧美激情成人在线视频| 欧美在线视频播放| www.日韩系列| 国产成人久久精品| 久久久久久久久久久国产| 日韩中文字幕亚洲| 91精品国产综合久久久久久久久| 精品国产91乱高清在线观看| 国产91精品高潮白浆喷水| 一本色道久久88综合亚洲精品ⅰ| 欧美精品18videosex性欧美| 久久久国产91| 亚洲人成在线观看网站高清| 亚洲国产中文字幕久久网| 91国产一区在线| 日韩免费观看在线观看| 91产国在线观看动作片喷水| 国产精品久久久久久久久久东京| 国产精品人人做人人爽| 国产亚洲精品久久久久动| 成人网页在线免费观看| 久久久这里只有精品视频| 97视频人免费观看| 26uuu另类亚洲欧美日本老年| 一区二区三区四区视频| 亚洲人成在线播放| 日韩精品极品毛片系列视频| 国产精品电影久久久久电影网| 国产91对白在线播放| 国产在线观看精品| 亚洲精品视频网上网址在线观看| 欧美日韩成人黄色| 深夜成人在线观看| 国产69精品久久久久9999| 97在线精品国自产拍中文| 精品高清美女精品国产区| 亚洲精品99久久久久| 成人黄色av免费在线观看| 久久精品2019中文字幕| 欧美高清在线视频观看不卡| 国产精品色婷婷视频| 成人黄色激情网| 欧美大成色www永久网站婷| 久久国产精品久久久| 精品久久久久久国产| 97热在线精品视频在线观看| 欧美老女人bb| 欧美精品videos性欧美| 久久精品国产久精国产思思| 热久久美女精品天天吊色| 亚洲第一av在线| 国产91精品久| 亚洲欧美日韩区| 亚洲成年人在线播放| 亚洲伦理中文字幕| 国产精品美女呻吟| 精品久久香蕉国产线看观看gif| 国产精品网站入口| 亚洲国产美女精品久久久久∴| 青草成人免费视频| 欧美尺度大的性做爰视频| 在线视频亚洲欧美| 亚洲3p在线观看| 九九热精品视频国产| 国产精品一区二区久久久久| 亚洲jizzjizz日本少妇| 91亚洲精品在线观看| 国产综合香蕉五月婷在线| 成人av在线天堂| 亚洲电影免费观看高清完整版在线| 欧美激情在线播放| 亚洲欧美日韩精品久久| 欧美成人精品h版在线观看| 成人黄色大片在线免费观看| 成人性生交大片免费看小说| 国产日韩欧美日韩大片| 国外成人免费在线播放| 91精品国产九九九久久久亚洲| 成人午夜一级二级三级| 免费不卡在线观看av| 性亚洲最疯狂xxxx高清| 久久久噜久噜久久综合| 亚洲精品国产精品国自产观看浪潮| 色妞一区二区三区| 亚洲精品ady| 久久在线精品视频| 美女扒开尿口让男人操亚洲视频网站| 激情懂色av一区av二区av| 美女啪啪无遮挡免费久久网站| 亚洲欧美国内爽妇网| 日本高清不卡的在线| 91精品国产综合久久久久久久久| 91精品久久久久久久久青青| 国产精品免费视频xxxx|