01面試題.框架.SpringMVC

1.講一下MVC

  • MVC設計模式: Model-View-Controller簡寫。
  • MVC是軟件工程中的一種軟件架構模式,它是一種分離業務邏輯與顯示界面的設計方法。它把軟件系統分爲三個基本部分:模型(Model)、視圖(View)和控制器(Controller)。
  •  控制器Controller:對請求進行處理,負責選擇視圖;
  •  視圖View:用戶與程序交互的界面;
  •  模型Model:用於處理業務

2. springmvc的執行流程

SpringMVC是一個MVC框架,springmvc的工做流程:
   1. 發送請求:在瀏覽器輸入請求路徑,發送請求,前端控制器鏈接全部的請求。
   2. 得到處理器:前端控制器(DispatcherServlet)接收到請求,經過處理器映射器(handlerMapping)得到對應的處理器(Handler)
         大白話:根據請求路徑得到對應的controller。
   3. 執行處理器:經過處理器適配器(HandlerAdapter)執行處理器(Handler),並返回視圖模型對象(ModelAndView)
         大白話:執行controller方法。若是方法返回的字符串,底層也會轉換成ModelAndView。
   4. 解析視圖:經過視圖解析器(ViewResolver)解析ModelAndView中的視圖,將邏輯視圖解析成真正的視圖。
   5. 渲染視圖:將Model中的數據渲染到視圖(View)中
   6. 響應結果
         大白話:將模型數據(查詢結果)渲染到jsp頁面中,並將處理結果響應給瀏覽器。前端

  • SpringMVC執行流程圖

3.什麼是Spring MVC框架的控制器?

Spring框架的核心控制器(前端控制器)是DispatherServlet  
他的核心功能就是分發請求,請求會被分發給對應處理的類handler。java

4.SpringMVC跳轉一個頁面,怎麼返回一個json數據?

使用@ResponseBody註解,將返回json數據。 瑞吃胖特法雷
1.若是在方法使用該註解,當前方法返回json數據。
2.若是在類上使用該註解,當前類中全部的方法,都將返回json數據。spring

springmvc默認用jackson對json數據進行轉換,但須要添加jackson的包數據庫

擴展閱讀:
消息轉換器原理解析:https://blog.csdn.net/shadabing/article/details/84664402
SpringBoot配置Fastjson:https://blog.csdn.net/cjq2013/article/details/76421101
SpringMVC配置Fastjson:https://blog.csdn.net/do_bset_yourself/article/details/51324186json

5.分層設計的優缺點

優勢:
一、開發人員能夠只關注整個結構中的其中某一層;
二、能夠很容易的用新的實現來替換原有層次的實現;
三、能夠下降層與層之間的依賴;
四、有利於標準化;
五、利於各層邏輯的複用
缺點:
一、下降了系統的性能。這是不言而喻的。若是不採用分層式結構,不少業務能夠直接造訪數據庫,以此獲取相應的數據,現在卻必須經過中間層來完成。
二、有時會致使級聯的修改。這種修改尤爲體如今自上而下的方向。若是在表示層中須要增長一個功能,爲保證其設計符合分層式結構,可能須要在相應的業務邏輯層和數據訪問層中都增長相應的代碼。設計模式

6. SpringMVC和Spring的經常使用註解

1.Spring相關注解
1.1)聲明bean的註解
@Component 通用註解,用於聲明bean。能夠配置任意組件。
@Repository 派生註解,與@Component等效,Dao實現類推薦使用的註解,不只能夠聲明bean,並且提升可讀性。 
@Service 派生註解,與@Component等效,Service實現類推薦使用的註解,不只能夠聲明bean,並且提升可讀性。
@Controller 派生註解,與@Component等效,Controller實現類推薦使用的註解,不只能夠聲明bean,並且提升可讀性。 數組

1.2)bean注入的相關注解
@Autowired:按類型注入,
@Resource(name=""):按名稱注入
@Resource():先按名稱注入,若是沒有再按照類型。瀏覽器

1.3)配置類相關注解
@Bean 註解在方法上,聲明當前方法的返回值爲一個bean。
@Configuration 聲明當前類爲配置類,內部常使用@Bean進行詳細配置。取代了xml文件配置。
@ComponentScan 用於對Component進行掃描,能夠配置掃描的包路徑架構

1.4)@Value註解:爲屬性注入簡單值mvc

2.SpringMVC相關注解
@RequestMapping 修飾方法,將請求路徑映射到Controller對應的處理方法上。
                              修飾類,給請求路徑添加訪問前綴(二級路徑)
@ResponseBody 將返回值轉換成json數據,並響應給瀏覽器。
@RequestBody 將json格式的請求參數,封裝到指定的JavaBean中。
@PathVariable 用於接收路徑參數,好比@RequestMapping(「/hello/{name}」)申明的路徑,參數前使用註解@PathVariable("name"),就能夠獲取name對應的值。
@RestController 該註解爲一個組合註解,至關於@Controller和@ResponseBody的組合,註解在類上,意味着,該Controller的全部方法都響應JSON格式數據。

7.從頁面傳數據到後臺的幾種方式,以及後臺如何接收

1.地址欄參數或普通表單請求,如:age=18&gender=man,SpringMVC方法參數須要使用@RequestParam("參數名")得到參數值。
2.提交json類型數據,SpringMVC 方法參數須要使用@RequestBody 將數據封裝到java對象中。
3.路徑佔位符:如 http://localhost:8080/user/findById/1,使用@RequestMapping("findById/{id}")匹配路徑,使用@PathVariable("id")得到對應的參數值。
4.文件上傳,修改表單請求爲"multipart/form-data"方式,SpringMVC採用MultipartFile參數類型接收數據

8.@Controller 註解的做用

 @Controller 是@Component的派生註解,功能就是將被修飾的類添加到spring容器。
字面意思,用於修飾Controller層的組件,提升可讀性。

9.@RequestMapping 註解的做用

修飾方法,將請求路徑映射到Controller對應的處理方法上。
修飾類,給請求路徑添加訪問前綴(二級路徑)

10.註解開發怎麼返回集合數據

使用 @ResponseBody 註解將Java集合轉換json數組,並將結果響應給瀏覽器。

相關文章
相關標籤/搜索