日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring之SpringMVC(四)

發布時間:2024/2/28 javascript 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring之SpringMVC(四) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.Spring MVC概述

Spring MVC基于MVC模式實現,能夠構建一個像Spring一樣的靈活和松耦合的web應用程序。

2.Spring的工作流程


上面是一個請求的流程:

  • 1.請求的第一站是DispatcherServlet,所以Spring容器首先必須先在配置中加載DispatcherServlet的bean。DispatcherServlet就是前端控制器。

  • 2.DispatcherServlet任務是將請求轉發到HandlerAdapter(控制器)中,但是該轉發到哪個控制器呢?它會根據它攜帶的url在HandlerMapping(處理器映射)中找到這個控制器。

  • 3.找到了這個控制器,于是DispatcherServlet攜帶請求和對應參數發給這個控制器,說:“交給你了,兄弟!”

  • 4.控制器進行處理。

  • 5.控制器處理完,把數據打包,連同模型和視圖名一同發回給DispatcherServlet,就是說:“我搞定了,拿去!”

  • 6.上面說到返回一個視圖名,但是怎么找到對應的頁面呢?這時候就有了ViewResolver(試圖解析器),例如視圖名為‘login’,ViewResolver會把他解析成“localhost:8080/project/login.html”

  • 7.有了返回的數據模型和對應的解析視圖,于是對應視圖,也就是localhost:8080/project/login.html就能把數據渲染出來。

3.DispatcherServlet的配置

DispatcherServlet可以通過web.xml進行配置,但是,由于Spring3.1功能的增強,同時為了更好地了解DispatcherServlet,將采用java將DispatcherServlet配置到servlet容器中。
下面就是Java實現的配置DispatcherServlet

public class SpittrWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{@Overrideprotected Class<?>[] getRootConfigClasses() {return new Class<?>[] {RootConfig.class};}@Overrideprotected Class<?>[] getServletConfigClasses() {return new Class<?>[] {WebConfig.class};}@Overrideprotected String[] getServletMappings() {return new String[] {"/"};}}
  • a protected String[] getServletMappings()這個方法會將一個或多個路徑映射到DispatcherServlet上,他映射的是“/”,表示處理進入應用的所有請求。

剩下兩個函數,需要了解兩個“應用上下文”,SpringWeb中有兩個應用上下文,DispatcherServlet和ContextLoaderListener加載的上下文。

DispatcherServlet加載控制器,視圖解析器,以及處理器映射的bean。
ContextLoaderListener加載應用中的其他bean,例如后端的中間層和數據層。

  • b.protected Class<?>[] getServletConfigClasses()方法返回帶有@Configuration注解的類用來定義DispatcherServlet應用上下文的bean。

  • c.protected Class<?>[] getRootConfigClasses()返回帶有@Configuration注解的類用來定義ContextLoaderListener應用上下文的bean。

讓我們來簡單看一下RootConfig和WebConfig是什么?

@Configuration @EnableWebMvc @ComponentScan("spitter.web") public class WebConfig extends WebMvcConfigurerAdapter{@Beanpublic ViewResolver viewResolver() {InternalResourceViewResolver resolver = new InternalResourceViewResolver();resolver.setPrefix("/WEB-INF/views");resolver.setSuffix(".jsp");resolver.setExposeContextBeanAsAttributes(true);return resolver;}@Overridepublic void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {configurer.enable();} } @Configuration @ComponentScan(basePackages={"spittr"},excludeFilters= {@Filter(type = FilterType.ANNOTATION , value=EnableWebMvc.class)}) public class RootConfig { }

我們已經配置好了DispatcherServlet,啟用了基本的SpringMVC組件,下面就是使用SpringMVC控制器去處理web請求。

@Controller @RequestMapping(value = "/hello") public class HelloController {@RequestMapping(value = "/show",method = RequestMethod.GET)public String showUser(@RequestParam("user_id") long user_id , Model model)model.addAttribute(userRespository.findOne(user_id));return "user";} }

如圖請求是xxxx/hello/show 參數是user_id
返回結果是model,儲存user信息,渲染視圖是user.jsp
當然,在控制器中,可以進行很復雜的處理操作,這些操作可以被一層層封裝起來,達到良好的項目質量。

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的Spring之SpringMVC(四)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。