麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

SpringMVC介紹

2019-11-14 15:40:55
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

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

Java代碼 復(fù)制代碼 收藏代碼
  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:表示啟動(dòng)容器時(shí)初始化該Servlet; url-pattern:表示哪些請(qǐng)求交給Spring Web MVC處理, “/” 是用來(lái)定義默認(rèn)servlet映射的。也可以如“*.html”表示攔截所有以html為擴(kuò)展名的請(qǐng)求。 自此請(qǐng)求已交給Spring Web MVC框架處理,因此我們需要配置Spring的配置文件,默認(rèn)DispatcherServlet會(huì)加載WEB-INF/[DispatcherServlet的Servlet名字]-servlet.xml配置文件。本示例為WEB-INF/ chapter2-servlet.xml。
2、Spring配置文件中配置HandlerMapping、HandlerAdapter 具體配置在WEB-INF/ chapter2-servlet.xml文件中

Java代碼 復(fù)制代碼 收藏代碼
  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:表示將請(qǐng)求的URL和Bean名字映射,如URL為 “上下文/hello”,則Spring配置文件必須有一個(gè)名字為“/hello”的Bean,上下文默認(rèn)忽略。 SimpleControllerHandlerAdapter:表示所有實(shí)現(xiàn)了org.springframework.web.servlet.mvc.Controller接口的Bean可以作為Spring Web MVC中的處理器。如果需要其他類型的處理器可以通過(guò)實(shí)現(xiàn)HadlerAdapter來(lái)解決。
3、在Spring配置文件中配置ViewResolver
具體配置在WEB-INF/ chapter2-servlet.xml文件中:

Java代碼 復(fù)制代碼 收藏代碼
  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模板頁(yè)面需要使用JSTL標(biāo)簽庫(kù),classpath中必須包含jstl的相關(guān)jar包;     prefix和suffix:查找視圖頁(yè)面的前綴和后綴(前綴[邏輯視圖名]后綴),比如傳進(jìn)來(lái)的邏輯視圖名為hello,則該該jsp視圖頁(yè)面應(yīng)該存放在“WEB-INF/jsp/hello.jsp”;
4、開發(fā)處理器/頁(yè)面控制器

Java代碼 復(fù)制代碼 收藏代碼
  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、收集參數(shù)、驗(yàn)證參數(shù)    
  10.        //2、綁定參數(shù)到命令對(duì)象    
  11.        //3、將命令對(duì)象傳入業(yè)務(wù)對(duì)象進(jìn)行業(yè)務(wù)處理    
  12.        //4、選擇下一個(gè)頁(yè)面    
  13.        ModelAndView mv = new ModelAndView();    
  14.        //添加模型數(shù)據(jù) 可以是任意的POJO對(duì)象    
  15.        mv.addObject("message", "Hello World!");    
  16.        //設(shè)置邏輯視圖名,視圖解析器會(huì)根據(jù)該名字解析到具體的視圖頁(yè)面    
  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、收集參數(shù)、驗(yàn)證參數(shù)         //2、綁定參數(shù)到命令對(duì)象         //3、將命令對(duì)象傳入業(yè)務(wù)對(duì)象進(jìn)行業(yè)務(wù)處理         //4、選擇下一個(gè)頁(yè)面         ModelAndView mv = new ModelAndView();         //添加模型數(shù)據(jù) 可以是任意的POJO對(duì)象         mv.addObject("message", "Hello World!");         //設(shè)置邏輯視圖名,視圖解析器會(huì)根據(jù)該名字解析到具體的視圖頁(yè)面         mv.setViewName("hello");         return mv;      }  }  

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

Java代碼 復(fù)制代碼 收藏代碼
  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,表示如過(guò)請(qǐng)求的URL為 “上下文/hello”,則將會(huì)交給該Bean進(jìn)行處理。
5、開發(fā)視圖頁(yè)面 創(chuàng)建 /WEB-INF/jsp/hello.jsp視圖頁(yè)面:

Java代碼 復(fù)制代碼 收藏代碼
  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處理器傳過(guò)來(lái)的模型數(shù)據(jù)。
通過(guò)請(qǐng)求:http://localhost:9080/springmvc-chapter2/hello,如果頁(yè)面輸出“Hello World! ”就表明我們成功了!
五、Spring MVC核心開發(fā)步驟:

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

2、  HandlerMapping的配置,從而將請(qǐng)求映射到處理器

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

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

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


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 日韩在线播放第一页 | 国产精品热 | 麻豆porn| 黄污视频在线看 | 特级黄色影院 | 欧产日产国产精品乱噜噜 | 色人阁导航 | 狠狠干天天操 | 毛片天天看| 久久激情免费视频 | 精品成人在线观看 | 国产精品v片在线观看不卡 成人一区二区三区在线 | 午夜生活理论片 | jizzzxxxxhd| 成人免费午夜视频 | 欧美激情精品久久久久久黑人 | 俄罗斯16一20sex牲色另类 | 91久久久国产精品 | 欧美日韩网站在线观看 | 91久久91久久精品免观看 | 最新中文在线视频 | 亚洲免费毛片基地 | 精品国产91一区二区三区 | 日韩激情 | 综合网天天色 | 99re久久最新地址获取 | 草莓福利视频在线观看 | 99re热视频这里只精品 | 国产精品视频成人 | 欧美一级电影网 | 黄色免费在线网站 | 在线播放h | 91色爱 | 中文字幕国 | 国产成人精品网站 | 成人福利视频网站 | 午夜视频在线观看免费视频 | 亚洲精品成人久久久 | 高清一区二区在线观看 | 日韩av片在线免费观看 | 久久激情国产 |