JavaWeb阶段题库
1、Servlet的生命周期方法有哪幾個?分別什么情況被調用?
1、Init:servlet對象被創建后立即調用,一次生命周期只會被調用一次
2、Servlet:每次被請求時服務器都會調用service處理用戶請求
3、Destory:項目被銷毀時服務器會調用destroy銷毀servlet對象
2、 轉發和重定向的區別?(至少寫3個)
1、請求次數:轉發1次,重定向2次
2、瀏覽器地址:轉發不變,重定向改變
3、使用request域共享數據:轉發是一次請求可以共享數據,重定向瀏覽器發起兩次請求,
?????不能共享數據
4、相對路徑:轉發地址不會造成轉發后的頁面中的相對位置發生改變引起相對路徑失效,
? ? ? 重新定向不會
5、效率:轉發瀏覽器一次請求效率高,重定向效率低
6、WEB-INF下資源:轉發可以訪問,重定向不能訪問
3、說出幾種vue當中的指令及其用法
v-model 雙向綁定
v-for 循環
v-if v-show 顯示與隱藏
v-on 事件
v-once :只能綁定一次
4、get和post的區別(至少寫倆)
1、瀏覽器和表單的默認提交方式是get,get請求效率比post高
2、get請求參數在url地址后拼接,所以有以下特點:
? ? ? ? 請求報文沒有請求體
? ? ? ? 少了和請求體相關的請求頭參數
? ? ? ? 參數在url地址中拼接,上傳參數大小由限制,不能用來上傳文件,相對post請求不安全
3、post請求參數在請求報文的請求體中攜帶,有以下特點:
? ? ? ? 請求報文有請求體,相對安全
? ? ? ? 請求頭多了請求體相關的參數
? ? ? ? 請求體數據沒有大小限制可以用來上傳文件
5、Cookie過期和Session超時有什么區別?
1、Cookie是服務器創建,然后通過響應頭的形式交給瀏覽器保存,每個Cookie瀏覽器在保存時都有過期時間,默認瀏覽器關閉后過期,超過過期時間瀏覽器就不會再保存Cookie了
2、Session是服務器中的一個對象,服務器內部都會管理每個Session對象,從瀏覽器最后一次使用Session對象開始計時時,如果超過Session對象那個的超時時間,服務器會銷毀Session對象
3、Session是服務器端的技術
4、Cookie是瀏覽器端技術
6、四大域對象及其范圍
1、pageContext:當前頁面的上下文,在頁面范圍中共享數據,JSP頁面特有的,每個頁面
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 都有自己的pageContext對象
2、request:請求域,在一次請求中共享數據,轉發也是一次請求能使用request共享數據
3、session:會話對象,瀏覽器打開第一次訪問數據庫開始到瀏覽器關閉的一次過程中可以
? ? ? ? ? ? ? ? ? ? ? 共享數據
4、application:項目上下文對象,項目的一次運行過程中可以共享數據
7、請寫出spring中常用的依賴注入方式
1、通過setter方法注入
2、通過構造方法注入
8、簡述Spring中如何基于注解配置Bean和裝配Bean
1、首先要在Spring中配置開啟注解掃描
? ? ? ? <context:component-scan base-page=""/>
2、在具體的類上加上具體的注解
3、Spring中通常使用@Autowired或者是@Resource等注解進行bean的裝配
9、說出Spring或者Springmvc中常用過的5個注解,冰解釋含義
10、MyBatis中#{} 和#{} 的區別是什么?
#{}是預編譯處理,${}是字符串替換
Mybatis在處理#{}時,會將sql中的#{}替換為?號。調用PreparedStatement的set方法來賦值
Mybatis在處理${}時,就是把${}替換成變量的值
使用#{}可以有效的防止SQL注入,提高系統安全性
11、Mybatis結果集的映射方式有幾種,并分別結束每種映射方式如何使用
自動映射,通過resultType來指定要映射的類型即可
自定義映射 通過resultMap來完成具體的映射規則,指定將結果集中的哪個列映射到對象的哪個屬性
12、簡述Mybatis的動態SQL,列出常用的5個標簽及作用
動態SQL是Mybatis的強大特性之一 基于功能強大的OGNL表達式
動態SQL主要是用來解決查詢條件不確定的情況,在程序運行期間,根據提交的條件動態的完成查詢
常用的標簽:
? ? ? ? <if>:進行條件的判斷
? ? ? ? <where>:在<if>判斷后的SQL語句前面添加WHERE關鍵字,并處理SQL語句開始位置
? ? ? ? ? ? ? ? ? ? ? ? ?的AND或者OR的問題
? ? ? ? <trim>:可以用在SQL語句前后進行添加指定字符 或者去掉指定字符
? ? ? ? <set>:主要用于修改操作時出現的逗號問題
? ? ? ? <choose><when><otherwise>:類似于Java中的switch語句。在所有的體哦阿健中選擇
???????????????????????????????????????????????????????????其一
? ? ? ? <foreach>:迭代操作
13、簡述Spring中ContextLoaderListener的作用以及實現原理
1、作用:ContextLoaderListener的作用是通過監聽的方式在WEB應用服務器啟動時將
????????????????Spring的容器對象進行初始化
2、原理:ContextLoaderListener實現了ServletContextListener接口,用于監聽
????????????????ServletContext的創建,當監聽到ServletContext創建時,在對應contextInitialized
? ? ? ? ? ? ? ? 方法中,將Spring的容器對象進行創建,并將創建好的容器對象設置到
????????????????ServletContext域對象中,目的是讓各個組件可以通過ServletContext共享到Spring
????????????????容器對象
14、簡述Mybatis提供的兩級緩存,以及緩存的查找順序
1、MyBatis的緩存分為一級緩存和二級緩存
2、一級緩存是SqlSession級別的緩存,默認開啟
3、二級緩存是NameSpace級別(Mapper)的緩存,多個SqlSession可以共享,使用時許喲啊進行配置開啟
4、緩存的查找順序:二級緩存>>>一級緩存 >>>數據庫
15、簡述MyBatis的單個參數、多個參數如何傳遞及如何取值
1、MyBatis傳遞單個參數,如果是普通類型(String+8個基本)的,取值時在#{}中可以任意指定,如果是對象類型的,則在#{}中使用對象的屬性來取值
2、MyBatis傳遞多個參數,默認情況下,MyBatis會對多個參數進行封裝Map,取值時在#{}可以使用012...或者是param1 param2...
3、MyBatis傳遞多個參數,建議使用命名參數,在Mapper接口的方法的形參前面使用? ?
16、寫成http常見的狀態碼和標識的含義(至少寫出4個)
200 OK??? //客戶端請求成功
301?? Moved Permanently(永久移除),請求的 URL 已移走。Response 中應該包含一個 Location URL, 說明資源現在所處的位置
302?? found 重定向
400?? Bad Request //客戶端請求有語法錯誤,不能被服務器所理解
401?? Unauthorized //請求未經授權,這個狀態代碼必須和 WWW-Authenticate 報頭域一起使用
403?? Forbidden //服務器收到請求,但是拒絕提供服務
404?? Not Found //請求資源不存在,eg:輸入了錯誤的 URL
500?? Internal Server Error //服務器發生不可預期的錯誤
503?? Server Unavailable //服務器當前不能處理客戶端的請求,一段時間后可能恢復正常
17、簡述Springmvc中如何返回JSON數據
Step1:在項目中加入json轉換的依賴,例如jackson,fastjson,gson等
Step2:在請求處理方法中將返回值改為具體返回的數據的類型,例如數據的集合類List<Employee>等
Step3:在請求處理方法上使用@ResponseBody注解
18、Spring通知有哪些類型,以及該通知的執行時機?
19、介紹一下Spring bean的生命周期
默認情況下,IOC容器種bean的生命周期分為五個階段:
調用構造器或者是通過工廠的方式創建Bean對象
給bean對象的屬性注入值
調用初始化方法,進行初始化,初始化方法是通過init-method來指定的
使用
IOC容器關閉時,銷毀Bean對象
20、Mapper接口開發需要注意的四個點
21、簡述SpringMVC的工作原理
22、簡述REST中的四種請求方式及對應的操作
GET ????????查詢操作
POST? ? ? ?添加操作
DELETE? ?刪除操作
PUT? ? ? ? ? 修改操作
23、簡述Spring聲明式事務中@Transaction中常用的兩種事務傳播行為
通過propagation來執行事務的傳播行為
REQUIRED:使用調用者的事務,如果調用者沒有事務,則啟動新的事務運行
REQUIRES_NEW:將調用者的事務掛起,開啟新的事務運行
24、簡述Spring與Mybatis整合時,主要整合的兩個地方
1、SqlSession創建的問題,通過SqlSessionFactoryBean來配置用于創建SqlSession的信息
? ? ? 例如:Mybatis的核心配置文件、Mapper映射文件、數據源等
2、Mapper接口創建的問題,使用MapperScannerConfigurer批量為Mybatis的Mapper接口生
??????成代理實現類并將具體的對象交給Spring容器管理
25、簡述REST中 HiddenHttpMethodFilter過濾器的作用
該過濾器主要負責轉換客戶端請求的方式,當瀏覽器的請求方式為POST,并且在請求中能通過_method 獲取到請求參數值
該過濾器就會進行請求方式的轉換
一般在REST中,都是將POST請求轉換為對應的DELETE或者是PUT
26、Springmvc中如何解決POST請求中文亂碼問題
Springmvc中通過CharacterEncodingFilter解決中文亂碼問題.
在web.xml中加入:
??? <filter>
??? ??? <filter-name>CharacterEncodingFilter</filter-name>
??? ??? <filter-class>
org.springframework.web.filter.CharacterEncodingFilter</filter-class>
??? <init-param>
??? ??? <param-name>encoding</param-name>
?????? <param-value>utf-8</param-value>
??? </init-param>
??? </filter>
??? <filter-mapping>
??? ??? <filter-name>CharacterEncodingFilter</filter-name>
??? ??? <url-pattern>/*</url-pattern>
??? </filter-mapping>
27、Spring中常用的設計模式
28、談談你對Spring的理解
- Spring是一個開源框架,為簡化企業級應用開發而生。Spring可以使簡單的JavaBane實現以前只有EJB才能實現的功能。Spring是一個IOC和AOP容器框架
- SPring容器的主要核心是:
- 控制反轉(IOC),傳統的Java開發模式中,當需要一個對象時,我們會自己使用new或者getInstance 等直接或者間接調用構造方法創建一個對象。而在 spring 開發模式中,spring 容器使用了工廠模式為我們創建了所需要的對象,不需要我們自己創建了,直接調用spring 提供的對象就可以了,這是控制反轉的思想。
-
依賴注入(DI),spring 使用 javaBean 對象的 set 方法或者帶參數的構造方法為我們在創建所需對象時將其屬性自動設置所需要的值的過程,就是依賴注入的思想。
面向切面編程(AOP),在面向對象編程(oop)思想中,我們將事物縱向抽成一個個的對象。而在面向切面編程中,我們將一個個的對象某些類似的方面橫向抽成一個切面,對這個切面進行一些如權限控制、事物管理,記錄日志等公用操作處理的過程就是面向切面編程的思想。AOP 底層是動態代理,如果是接口采用 JDK 動態代理,如果是類采用CGLIB 方式實現動態代理。
29、簡述SpringMVC中ContextLoaderListener的作用以及實現原理
30、請解釋@Autowired注解的工作機制及required屬性的作用
1、首先會使用byType的方式進行自動裝配,如果能唯一匹配,則裝配成功,如果匹配到多個兼容類型的bean,還會嘗試使用byName的方式進行唯一確定,如果能唯一確定,則裝配成功,如果不能唯一確定,則裝配失敗,拋出異常
2、默認情況下,使用@Autowired標注的屬性必須被裝配,如果裝配不了,也會拋出異常
? ? ? 可以使用required=false來設置不是必須要被裝配
31、請描述一下Spring的事務管理
1、聲明式事務管理的定義:用在 Spring 配置文件中聲明式的處理事務來代替代碼式的處理事務。這樣的好處是,事務管理不侵入開發的組件,具體來說,業務邏輯對象就不會意識到正在事務管理之中,事實上也應該如此,因為事務管理是屬于系統層面的服務,而不是業務邏輯的一部分,如果想要改變事務管理策劃的話,也只需要在定義文件中重新配置即可,這樣維護起來極其方便。
基于 TransactionInterceptor? 的聲明式事務管理:兩個次要的屬性: transactionManager,用來指定一個事務治理器, 并將具體事務相關的操作請托給它; 其他一個是 Properties 類型的transactionAttributes 屬性,該屬性的每一個鍵值對中,鍵指定的是方法名,方法名可以行使通配符, 而值就是表現呼應方法的所運用的事務屬性。
3、編程式事物管理的定義:在代碼中顯式挪用 beginTransaction()、commit()、rollback()等事務治理相關的方法, 這就是編程式事務管理。Spring 對事物的編程式管理有基于底層 API 的編程式管理和基于 TransactionTemplate 的編程式事務管理兩種方式。
32、簡述SpringMVC中處理模型數據的兩種方式
1、使用ModelAndView作為方法的返回值,將模型數據和視圖i西南西封裝到ModelAndView中
2、使用Map或者是Model作為方法的形參,將數據模型添加到Map或者是Model中
總結
以上是生活随笔為你收集整理的JavaWeb阶段题库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端利器 —— 提升《500倍开发效率》
- 下一篇: Javascript中分号的问题