国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【SpringMVC】集成Web、MVC執(zhí)行流程、數(shù)據(jù)響應(yīng)、數(shù)據(jù)交互

這篇具有很好參考價值的文章主要介紹了【SpringMVC】集成Web、MVC執(zhí)行流程、數(shù)據(jù)響應(yīng)、數(shù)據(jù)交互。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

SpringMVC確實很麻煩,零碎的點太多

一.Spring集成Web

在Spring的學(xué)習(xí)中,我們知道在IOC容器中獲取Bean時要通過獲取上下文的方式
(new ClasspathXmlApplicationContext),這樣我想在不同的地方獲取Bean我得重新加載配置文件,應(yīng)用上下文的對象也被創(chuàng)建了多次,造成所謂的“硬編碼”問題。
【SpringMVC】集成Web、MVC執(zhí)行流程、數(shù)據(jù)響應(yīng)、數(shù)據(jù)交互
如何解決?
按照思維習(xí)慣,解決此問題的最好方法就是把我的配置文件作用域提高
在Web項目中,可以使用ServletContextListener監(jiān)聽Web應(yīng)用的啟動,我們可以在Web應(yīng)用啟動時,就加載Spring的配置文件,創(chuàng)建應(yīng)用上下文對象ApplicationContext,在將其存儲到最大的域servletContext域中,這樣就可以在任意位置從域中獲得應(yīng)用上下文ApplicationContext對象了,從而實現(xiàn)數(shù)據(jù)共享。
如何實現(xiàn)?
①導(dǎo)入Spring集成Web坐標(biāo)

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>5.3.5.RELEASE</version>
    </dependency>

②配置ContextLoaderListener監(jiān)聽器
Spring提供了一個監(jiān)聽器ContextLoaderListener就是對上述功能的封裝,該監(jiān)聽器內(nèi)部加載Spring配置文件,創(chuàng)建應(yīng)用上下文對象,并存儲到ServletContext域中,提供了一個客戶端工具WebApplicationContextUtils供使用者獲得應(yīng)用上下文對象

 <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>

③通過工具獲得應(yīng)用上下文對象

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    ServletContext servletContext = this.getServletContext();   
    ApplicationContext app = WebApplicationContextUtils.getWebApplicationContext(servletContext);
    UserService userService = app.getBean(UserService.class);
 }

補充:為了解決xml文件名稱與代碼產(chǎn)生的耦合,引入了設(shè)置全局變量這一操作,通過在web.xml里事先定義好后再由具體的的代碼獲得定義的參數(shù)名來讀文件,極大降低了耦合性
【SpringMVC】集成Web、MVC執(zhí)行流程、數(shù)據(jù)響應(yīng)、數(shù)據(jù)交互
這樣的話以后要改配置文件我就可以直接在一處修改文件名即可

二.對于SpringMVC的理解

M——model進(jìn)行業(yè)務(wù)邏輯的處理
V——view視圖,負(fù)責(zé)數(shù)據(jù)的輸出,畫面的展示
C——controller 負(fù)責(zé)接收從視圖發(fā)送過來的數(shù)據(jù),同時控制model與view

Spring MVC是是屬于Spring Framework生態(tài)里面的一個模塊,它是在Servlet基礎(chǔ)上構(gòu)建并且使用MVC模式設(shè)計的一個 Web框架,主要的目的是簡化傳統(tǒng)Servlet+JSP模式下的Web開發(fā)方式。其次,Spring MVC的整體架構(gòu)設(shè)計對Java Web里面的MVC架構(gòu)模式做了增強和擴展,主要有幾個方面。把傳統(tǒng)MVC框架里面的Controller控制器做了拆分,分成了前端控制器DispatcherServlet和后端控制器Controller,把 Model模型拆分成業(yè)務(wù)層Service和數(shù)據(jù)訪問層Repository。
在視圖層,可以支持不同的視圖,比如 Freemark、velocity、JSP等等
【SpringMVC】集成Web、MVC執(zhí)行流程、數(shù)據(jù)響應(yīng)、數(shù)據(jù)交互
所以,Spring MVC天生就是為了MVC模式而設(shè)計的,因此在開發(fā)MVC應(yīng)用的時候會更加方便和靈活。

三.MVC執(zhí)行流程(??????)

客戶端與服務(wù)器端的一次會話代表著一次請求與響應(yīng),通過MVC的模式使其更加系統(tǒng)
【SpringMVC】集成Web、MVC執(zhí)行流程、數(shù)據(jù)響應(yīng)、數(shù)據(jù)交互
具體執(zhí)行流程如下所示:
①用戶發(fā)送請求至前端控制器DispatcherServlet
②DispatcherServlet收到請求調(diào)用HandlerMapping處理器映射器
③處理器映射器找到具體的處理器(可以根據(jù)xml配置、注解進(jìn)行查找),生成處理器對象及處理器攔截器(如果有則生成)一并返回給DispatcherServlet
④DispatcherServlet調(diào)用HandlerAdapter處理器適配器
⑤HandlerAdapter經(jīng)過適配調(diào)用具體的處理器(Controller,也叫后端控制器)
⑥Controller執(zhí)行完成返回ModelAndView
⑦HandlerAdapter將controller執(zhí)行結(jié)果ModelAndView返回給DispatcherServlet
⑧DispatcherServlet將ModelAndView傳給ViewReslover視圖解析器
⑨ViewReslover解析后返回具體View
⑩DispatcherServlet根據(jù)View進(jìn)行渲染視圖〈即將模型數(shù)據(jù)填充至視圖中),DispatcherServlet響應(yīng)用戶

【SpringMVC】集成Web、MVC執(zhí)行流程、數(shù)據(jù)響應(yīng)、數(shù)據(jù)交互

1.組件解析

1.前端控制器:DispatcherServlet
用戶請求到達(dá)前端控制器,它就相當(dāng)于MVC模式中的C,DispatcherServlet是整個流程控制的中心,由它調(diào)用其它組件處理用戶的請求,DispatcherServlet的存在降低了組件之間的耦合性
2.處理器映射器: HandlerMapping
HandlerMapping負(fù)責(zé)根據(jù)用戶請求找到Handler即處理器,SpringMVC提供了不同的映射器實現(xiàn)不同的映射方式,例如:配置文件方式,實現(xiàn)接口方式,注解方式等
3.處理器適配器: HandlerAdapter
通過 HandlerAdapter對處理器進(jìn)行執(zhí)行,這是適配器模式的應(yīng)用,通過擴展適配器可以對更多類型的處理器進(jìn)行執(zhí)行
【SpringMVC】集成Web、MVC執(zhí)行流程、數(shù)據(jù)響應(yīng)、數(shù)據(jù)交互
4.處理器:Handler
它就是我們開發(fā)中要編寫的具體業(yè)務(wù)控制器。由DispatcherServlet把用戶請求轉(zhuǎn)發(fā)到Handler。由Handler對具體的用戶請求進(jìn)行處理
5.視圖解析器:View Resolver
View Resolver負(fù)責(zé)將處理結(jié)果生成View視圖,View Resolver 首先根據(jù)邏輯視圖名解析成物理視圖名,即具體的頁面地址,再生成View視圖對象,最后對View進(jìn)行渲染將處理結(jié)果通過頁面展示給用戶
6.視圖:View
SpringMVC框架提供了很多的View視圖類型的支持,包括: jstlView、freemarkerView.pdfView等。最常用的視圖就是jsp。一般情況下需要通過頁面標(biāo)簽或頁面模版技術(shù)將模型數(shù)據(jù)通過頁面展示給用戶,需要由程序員根據(jù)業(yè)務(wù)需求開發(fā)具體的頁面

2.RequestMapping

作用:用于建立請求URL和處理請求方法之間的對應(yīng)關(guān)系
位置:
類上,請求URL的第一級訪問目錄。此處不寫的話,就相當(dāng)于應(yīng)用的根目錄
方法上,請求URL的第二級訪問目錄,與類上的使用@ReqquestMapping標(biāo)注的一級目錄一起組成訪問虛擬路徑屬性:
value:用于指定請求的URL。它和path屬性的作用是一樣的method:用于指定請求的方式
params:用于指定限制請求參數(shù)的條件。它支持簡單的表達(dá)式。要求請求參數(shù)的key和value必須和配置的一模一樣

四.SpringMVC數(shù)據(jù)響應(yīng)

頁面跳轉(zhuǎn)

1.直接返回字符串,本質(zhì)是在配置文件里寫好頭和尾,在具體的代碼中返回文件名后跳轉(zhuǎn)
【SpringMVC】集成Web、MVC執(zhí)行流程、數(shù)據(jù)響應(yīng)、數(shù)據(jù)交互
2.返回ModelAndView對象

    public ModelAndView back(){
//            Model:模型 作用封裝數(shù)據(jù),View:視圖 作用展示數(shù)據(jù)
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("username","itcast");   //設(shè)置模型數(shù)據(jù)
        modelAndView.setViewName("hello");     //設(shè)置視圖名稱
        return modelAndView;
   }

頁面跳轉(zhuǎn)的方式還有,比如向request域存儲數(shù)據(jù)后返回對象

回寫數(shù)據(jù)

1.直接輸出字符串

    public void back(HttpServletResponse response) throws IOException {
        response.getWriter().print("Hello Java");
    }

2.寫注解直接返回字符串

    @ResponseBody  //告知SpringMVC框架 不進(jìn)行視圖跳轉(zhuǎn) 直接進(jìn)行數(shù)據(jù)響應(yīng)
    public String back() throws IOException {
        return "hello java";
    }

3.返回對象或者集合
事先要配置SpringMVC注解驅(qū)動<mvc:annotation-driven/>默認(rèn)底層就會集成Jackson進(jìn)行對象集合與json格式字符串的轉(zhuǎn)換

    @ResponseBody
    public Sheep back() throws IOException {
        Sheep sheep = new Sheep();
        sheep.setUsername("懶羊羊");
        sheep.setAge(2);
        return sheep;  //SpringMVC自動將Sheep轉(zhuǎn)換成json格式的字符串
    }

五.SpringMVC獲得請求數(shù)據(jù)

1.獲得基本數(shù)據(jù)類型,形如:

    @RequestMapping(value="/resp")
    @ResponseBody
    public void save11(String username,int age) throws IOException {
        System.out.println(username);
        System.out.println(age);
    }

然后我在URL中輸入相應(yīng)的路徑,傳入相應(yīng)的參數(shù)即可獲得請求的數(shù)據(jù)
http://localhost:yu7daily/demo1?username=lyy&age=2
2.獲得POJO類型參數(shù)

    @RequestMapping(value="/demo2")
    @ResponseBody
    public void back(User user) throws IOException {
        System.out.println(user);
    }

同樣在URL傳入路徑,即可獲得數(shù)據(jù)
http://localhost:yu7daily/demo2?username=lyy&age=2文章來源地址http://www.zghlxwxcb.cn/news/detail-426666.html

到了這里,關(guān)于【SpringMVC】集成Web、MVC執(zhí)行流程、數(shù)據(jù)響應(yīng)、數(shù)據(jù)交互的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【SpringMVC】基于 Spring 的 Web 層MVC 框架

    【SpringMVC】基于 Spring 的 Web 層MVC 框架

    ??歡迎來到@邊境矢夢°的csdn博文?? ??本文主要梳理SpringMVC : 基于 Spring 的 Web 層MVC 框架??? ??我是邊境矢夢°,一個正在為秋招和算法競賽做準(zhǔn)備的學(xué)生?? ??喜歡的朋友可以關(guān)注一下 ?????? ,下次更新不迷路?? Ps: 月亮越亮說明知識點越重要 (重要性或者難度越大

    2024年02月08日
    瀏覽(20)
  • 【SpringMVC】| SpringMVC執(zhí)行流程原理 | 常用注解 剝析

    【SpringMVC】| SpringMVC執(zhí)行流程原理 | 常用注解 剝析

    MVC全稱Model View Controller,是一種設(shè)計創(chuàng)建Web應(yīng)用程序的模式。這三個單詞分別代表Web應(yīng)用程序的三個部分: Model (模型):指數(shù)據(jù)模型。用于存儲數(shù)據(jù)以及處理用戶請求的業(yè)務(wù)邏輯。在Web應(yīng)用中,JavaBean對象,業(yè)務(wù)模型等都屬于Model。 View (視圖):用于展示模型中的數(shù)據(jù)的

    2024年02月06日
    瀏覽(53)
  • spring mvc 執(zhí)行流程

    1、客戶端發(fā)起請求先經(jīng)過Filter處理 2、經(jīng)過Filter后到達(dá)Servlet 3、在請求到了DispatchServlet核心處理器,收到請求后DispatchServlet向HandlerMapping請求查詢Handler 4、HandlerMapping返回HandlerExecutionChain處理執(zhí)行鏈到DispatchServlet,HandlerExecutionChain包括了Handler和Interceptor 5、DispatchServlet根據(jù)Han

    2024年02月11日
    瀏覽(20)
  • SpringMVC_執(zhí)行流程

    SpringMVC_執(zhí)行流程

    DispatcherServlet :前端控制器,用于對請求和響應(yīng)進(jìn)行統(tǒng)一處理 HandlerMapping :處理器映射器,根據(jù) url/method可以去找到具體的 Handler(Controller) Handler :具體處理器(程序員,以后開發(fā)這一部分需要) HandlerAdapter :處理器適配器,進(jìn)行處理器方法的執(zhí)行 ViewResolver :處理視圖相關(guān)的

    2024年02月09日
    瀏覽(20)
  • SpringMVC的執(zhí)行流程

    SpringMVC的執(zhí)行流程

    過去的開發(fā)中,視圖階段(老舊JSP等) 1.首先用戶發(fā)送請求到前端控制器DispatcherServlet(這是一個調(diào)度中心) 2.前端控制器DispatcherServlet收到請求后調(diào)用處理器映射器HandlerMapping 3.處理器映射器HandlerMapping找到具體的處理器,可查找xml配置或注解配置,生成處理器對象及處理器攔截器

    2024年02月19日
    瀏覽(20)
  • SpringMVC 執(zhí)行流程

    SpringMVC 執(zhí)行流程

    SpringMVC 框架 ? SpringMVC 是一個基于 Java 的實現(xiàn)了 MVC 設(shè)計模式的請求驅(qū)動類型的輕量級 Web 框架,通過把 Model,View,Controller 分離,將 Web 層進(jìn)行職責(zé)解耦,把復(fù)雜的 Web 應(yīng)用分成邏輯清晰的幾部分,簡化開發(fā),減少出錯,方便組內(nèi)開發(fā)人員之間的配合。 簡而言之,SpringMVC 就

    2024年03月25日
    瀏覽(11)
  • springMVC執(zhí)行流程詳解

    springMVC執(zhí)行流程詳解

    springMVC執(zhí)行流程 主要由model層,view層和controller層組成。 1.1,jsp模型 主要是結(jié)構(gòu)簡單,開發(fā)這個小型項目的效率高,主要是由這個jsp和javaBean組成。但是jsp同時負(fù)責(zé)了controller層和view層,因此所有的代碼都寫在這個jsp里面,導(dǎo)致這個代碼的重用性很低,維護(hù)不方便,因此這種

    2024年02月16日
    瀏覽(18)
  • Spring MVC的執(zhí)行流程

    Spring MVC的執(zhí)行流程

    Spring MVC的執(zhí)行流程如圖所示: 執(zhí)行流程: 用戶點擊某個請求路徑,發(fā)起一個HTTP request請求,該請求會被提交到Dispatcher Servlet(前端控制器); 由Dispatcher Servlet請求一個或多個Handler Mapping(處理器映射器),并返回一個執(zhí)行鏈(Handler Execution Chain); Dispatcher Servlet將Handler Mapp

    2024年02月05日
    瀏覽(21)
  • 第12章:SpringMVC執(zhí)行流程

    1.SpringMVC 常用組件 ①、DispatcherServlet: 前端控制器 ,框架提供。 作用:統(tǒng)一處理請求和響應(yīng),整個流程的控制中心,由它調(diào)用其他組件處理用戶的請求 ②、HandlerMapping: 處理器映射器 ,框架提供 作用:根據(jù)請求的url、method等信息查找Handler即控制器方法 ③、Handler: 處理器,

    2024年02月08日
    瀏覽(20)
  • SpringMVC的執(zhí)行流程與源碼分析

    SpringMVC的執(zhí)行流程與源碼分析

    通過深入分析Spring MVC的源碼,我們可以更好地理解其工作原理和內(nèi)部機制。這有助于我們更好地使用該框架進(jìn)行Web應(yīng)用程序的開發(fā),并解決實際開發(fā)中遇到的問題。同時,對于學(xué)習(xí)和研究Spring MVC框架的人來說,閱讀源碼并進(jìn)行分析也是一種重要的學(xué)習(xí)和提升手段。 Spring MV

    2024年01月21日
    瀏覽(53)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包