java后台传一个对象到前台_前台判断对象中的一个布尔值_springMVC面试题
1:springMVC工作原理
springMVC架構(gòu).png
【用戶發(fā)送請求到前端控制器dispatcherservlet,前端控制器接收到請求之后調(diào)用處理器映射器,根據(jù)請求url找到具體的處理器,生成處理器對象返回給前端控制器,前端控制器通過處理器適配器調(diào)用處理器,執(zhí)行處理器返回ModelAndView,處理器適配器將ModelAndView返回給前端控制器,前端控制器將ModelAndView傳遞給視圖解析器,視圖解析器解析后返回具體的view,前端控制器對view進行渲染視圖后響應給用戶】
1、用戶發(fā)送請求至前端控制器DispatcherServlet
2、DispatcherServlet收到請求調(diào)用HandlerMapping處理器映射器。
3、處理器映射器根據(jù)請求url找到具體的處理器,生成處理器對象及處理器攔截器(如果有則生成)一并返回給DispatcherServlet。【此時處理器映射器返回的處理器對象包含:包名+類名+方法名】
4、DispatcherServlet通過HandlerAdapter處理器適配器調(diào)用處理器
5、執(zhí)行處理器(Controller,也叫后端控制器)。
6、Controller執(zhí)行完成返回ModelAndView
7、HandlerAdapter將controller執(zhí)行結(jié)果ModelAndView返回給DispatcherServlet
8、DispatcherServlet將ModelAndView傳給ViewReslover視圖解析器【ModelAndView內(nèi)部其實就是一個jsp文件的路徑】
9、ViewReslover解析(讀取jsp文件到內(nèi)存中)后返回具體View
10、DispatcherServlet對View進行渲染視圖(即將模型數(shù)據(jù)填充至視圖中)。
11、DispatcherServlet響應用戶
2:什么是springMVC框架【簡單介紹一下spring框架的答題思路】
springMVC框架屬于表現(xiàn)層框架,使用了MVC架構(gòu)模式的思想,是spring框架的一部分。
MVC是web開發(fā)中的設計模式
3:springmvc與struts2不同
1、springmvc的入口是一個servlet即前端控制器,而struts2入口是一個filter過濾器。
2、springmvc是基于方法開發(fā)(一個url對應一個方法),傳遞參數(shù)是通過方法的形參,一般設計為單例模式(可以設計為單例或多例(建議單例));
struts2是基于類開發(fā),傳遞參數(shù)是通過類的屬性,只能設計為多例。
【綁定參數(shù)springMVC是綁定在形參上,而struts2是綁定在成員變量上。】
多例是以類為單位,每一個請求創(chuàng)建一個類
單例是以方法為單位,每一個請求創(chuàng)建【復制】一個方法
3、Struts采用值棧存儲請求和響應的數(shù)據(jù),
springmvc采用request域存儲請求和響應的數(shù)據(jù)
Struts采用值棧存儲請求和響應的數(shù)據(jù),通過OGNL存取數(shù)據(jù), springmvc通過參數(shù)解析器是將request請求內(nèi)容解析,并給方法形參賦值,將數(shù)據(jù)和視圖封裝成ModelAndView對象,最后又將ModelAndView中的模型數(shù)據(jù)通過request域傳輸?shù)巾撁妗sp視圖解析器默認使用jstl。【springmvc存數(shù)據(jù)只是放在request域中,Struts采用值棧存儲請求和響應的數(shù)據(jù)】
Springmvc的controller是單例的,而struts2是多例的
4:講下SpringMvc的核心入口類是什么,Struts1,Struts2的分別是什么
SpringMvc的是DispatchServlet,
Struts2的是StrutsPrepareAndExecuteFilter
5:SpringMvc的控制器是不是單例模式,如果是,有什么問題,怎么解決
是單例模式,所以在多線程訪問的時候有線程安全問題,不要用同步,會影響性能的,解決方案是在控制器里面不能寫字段
6:SpringMVC的優(yōu)點
1.是基于組件技術(shù)的.全部的應用對象,無論控制器和視圖,還是業(yè)務對象之類的都是 java組件.并且和Spring提供的其他基礎結(jié)構(gòu)緊密集成
【說明:在springmvc的各個組件中,處理器映射器、處理器適配器、視圖解析器稱為springmvc的三大組件。需要用戶開發(fā)的組件有controller、view】
2.與Spring框架天生整合,無框架兼容問題 與Struts2相比安全性高 配置量小、開發(fā)效率高
7:怎么樣把某個請求映射到特定的方法上面【注解@RequestMapping】
直接在方法上面加上注解@RequestMapping,并且在這個注解里面寫上要攔截的路徑
8:@RequestMapping注解用在類上面有什么作用
在class上添加@RequestMapping(url)指定通用請求前綴, 限制此類下的所有方法請求url必須以請求前綴開頭
可以使用此方法對url進行分類管理
9:SpingMvc中的控制器的注解一般用那個,有沒有別的注解可以替代
一般用@Conntroller注解,表示是表現(xiàn)層,不能用用別的注解代替.
10:當一個方法向AJAX返回特殊對象,譬如Object,List等,需要做什么處理
要加上@ResponseBody注解
11:如果在攔截請求中,我想攔截get方式提交的方法,怎么配置
可以在@RequestMapping注解里面加上method=RequestMethod.GET
12:如果在攔截請求中,我想攔截提交參數(shù)中包含"type=test"字符串,怎么配置
可以在@RequestMapping注解里面加上params="type=test"
13:我想在攔截的方法里面得到從前臺傳入的參數(shù),怎么得到
直接在形參里面聲明這個參數(shù)就可以,但必須名字和傳過來的參數(shù)一樣
14:如果前臺有很多個參數(shù)傳入,并且這些參數(shù)都是一個對象的,那么怎么樣快速得到這個對象
直接在方法中聲明這個對象,SpringMvc就自動會把屬性賦值到這個對象里面
15:怎么樣在方法里面得到Request,或者Session
直接在方法的形參中聲明request,SpringMvc就自動把request對象傳入
16:SpringMvc中函數(shù)的返回值是什么.【controller返回值】
返回三種類型:
1、ModelAndView 無敵的 帶著數(shù)據(jù) 返回視圖路徑(返回視圖時帶著數(shù)據(jù),一塊返回) 不建議使用
2、String 返回視圖路徑 model帶數(shù)據(jù)(返回視圖就是返回視圖,數(shù)據(jù)是由model帶回,視圖和數(shù)據(jù)解耦) 官方推薦此種方式,解耦,數(shù)據(jù)和視圖分離MVC 建議使用
3、void ajax不需要跳轉(zhuǎn)視圖只需要返回數(shù)據(jù) json格式數(shù)據(jù) 請求如果是ajax用次返回方式就比較合適 異步請求時使用
17:SpringMVC怎么樣設定重定向和轉(zhuǎn)發(fā)的
在返回值前面加"forward:"就可以讓結(jié)果轉(zhuǎn)發(fā),
譬如"forward:user.do?name=method4"
在返回值前面加"redirect:"就可以讓返回值重定向,
譬如"redirect:http://www.baidu.com"
18:SpringMvc用什么對象從后臺向前臺傳遞數(shù)據(jù)的
通過ModelMap對象,可以在這個對象里面用put方法,把對象加到里面,前臺就可以通過el表達式拿到
19:怎么樣把ModelMap里面的數(shù)據(jù)放入Session里面
可以在類上面加上@SessionAttributes注解,里面包含的字符串就是要放入session里面的key
20:SpringMvc怎么和AJAX相互調(diào)用的
通過Jackson框架就可以把Java里面的對象直接轉(zhuǎn)化成Js可以識別的Json對象
具體步驟如下
1.加入Jackson.jar
2.在配置文件中配置json的映射
3.在接受Ajax方法里面可以直接返回Object,List等,但方法前面要加上@ResponseBody注解
21:json數(shù)據(jù)交互
@RequestBody
作用:
@RequestBody注解用于讀取http請求的內(nèi)容(字符串),通過springmvc提供的HttpMessageConverter接口將讀到的內(nèi)容(json數(shù)據(jù))轉(zhuǎn)換為java對象并綁定到Controller方法的參數(shù)上。
@ResponseBody
作用:
@ResponseBody注解用于將Controller的方法返回的對象,通過springmvc提供的HttpMessageConverter接口轉(zhuǎn)換為指定格式的數(shù)據(jù)如:json,xml等,通過Response響應給客戶端
22:異常處理器
springmvc在處理請求過程中出現(xiàn)異常信息交由異常處理器進行處理,自定義異常處理器可以實現(xiàn)一個系統(tǒng)的異常處理邏輯。
異常處理器幫助我們捕獲異常,然后交由我們自己寫的異常處理類進行處理了
異常處理思路
系統(tǒng)中異常包括兩類:預期異常【可以預料的】和運行時異常【運行前不知道的】RuntimeException,前者通過捕獲異常從而獲取異常信息,后者主要通過規(guī)范代碼開發(fā)、測試通過手段減少運行時異常的發(fā)生。
系統(tǒng)的dao、service、controller出現(xiàn)都通過throws Exception向上拋出,最后由springmvc前端控制器交由異常處理器進行異常處理,如下圖:
圖片.png
【需要我們干兩件事:
1、第一,寫一個實現(xiàn)類實現(xiàn)HandlerExceptionResolver接口
2、第二,將寫好的實現(xiàn)類放到spring中進行實例化】
instanceof
java 中的instanceof 運算符是用來在運行時指出對象是否是特定類的一個實例。instanceof通過返回一個布爾值來指出,這個對象是否是這個特定類或者是它的子類的一個實例。
23:攔截器
【Spring Web MVC 的處理器攔截器類似于Servlet 開發(fā)中的過濾器Filter,用于對處理器進行預處理和后處理。
實現(xiàn)攔截效果有兩步:
1、攔截器定義:實現(xiàn)HandlerInterceptor接口
2、攔截器配置:在springmvc.xml中配置攔截器】
Spring Web MVC 的處理器攔截器類似于Servlet 開發(fā)中的過濾器Filter,用于對處理器進行預處理和后處理。【在進入action or controller之前先判斷一下用戶登沒登陸】
1、攔截器定義:實現(xiàn)HandlerInterceptor接口
2、攔截器配置:在springmvc.xml中配置攔截器
1、攔截器定義:實現(xiàn)HandlerInterceptor接口
在preHandle方法中會選擇放行不放行【返回true是放行,false是不放行】
正常情況下都放行的話執(zhí)行順序是:preHandle執(zhí)行順序與定義的順序相同
postHandle和afterCompletion都是按照攔截器定義逆序調(diào)用
如果中間有的攔截器沒有放行那么:所有的postHandle都不會被調(diào)用,afterCompletion只有在放行的時候才會調(diào)用
2、攔截器配置:在springmvc.xml中配置攔截器!
interceptors:中可以配置多個攔截器
mapping:配置攔截規(guī)則【攔截所有:/**】
bean:自定義攔截器類
實例:判斷用戶是否登錄
如果沒有登錄,重定向到登錄頁面,不放行。
如果登錄則放行
從路徑中取數(shù)據(jù)@PathVariable
總結(jié)
以上是生活随笔為你收集整理的java后台传一个对象到前台_前台判断对象中的一个布尔值_springMVC面试题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java aop execution_S
- 下一篇: c++ 与 java_Java与C++比