1. 程式人生 > >如何學習java ssh三大框架

如何學習java ssh三大框架

想說說自己Spring的學習路程,課餘自學Spring將近一年了,還是不得其道。去年暑假學習了一下JSP,並沒有深入理解,所以導致學習Spring時對著書本寫一些demo,感覺自己理解了,其實並不知道內部時什麼原理,出了問題不停的百度,一個小問題好幾天解決不了。
學習一種框架最先需要知道的是為什麼需要使用這個框架,任何一個框架的發明都是為了解決程式設計中的一些痛點,開啟任何一本hibernate或者其他框架的入門書,第一章都是介紹框架的理念和優勢。如果需要理解這些理念和優勢,那麼你需要知道不使用這個框架之前是怎麼處理的,才能知道框架做了一些什麼事情。
針對Spring的學習,第一步就是理解IoC和AOP;這是基礎;然後學習SpringMVC,其實還是Java EE開發,如果要理解這個框架,就要知道沒有這個框架之前,使用的是什麼技術。
很多新的技術只不過是引入了新的程式設計元素對原來技術進行了封裝。
Web開發,首先需要理解的是 HTTP協議,這部分一定要深入理解。理解http請求,其實就是要知道下面這張圖的含義。

還要知道伺服器傳送給瀏覽器的響應是沒有沒有JS,CSS和圖片等外部資源的,瀏覽器在解析響應時才會再次請求這些資源,這裡會出現一些靜態資源請求不到的問題,SpringMVC是怎麼配置的?
接下來,學習Servlet和JSP。這個步驟不是可以跳過的,現在流行的框架Spring MVC和Struts2其實都是基於Servlet的,只有深入理解了Servlet才能理解後面的新技術。
下面幾個知識點可以檢測你是否理解了Servlet:
1、什麼是ServletContext,和tomcat等web容器的關係時什麼?Servlet 工作原理解析
簡單的說,我們在瀏覽器點選連結和按鈕產生的訊息不是傳送給Servlet的,而是傳送給web容器的(在JSP出現之前,web容器也叫Servlet容器),web容器接收訊息後不知道怎麼處理,轉交給我們編寫的Servlet處理,那麼web容器怎麼和Servlet交流呢?於是就出現了Servlet介面,介面是定義一種規範的良好表達形式。
只要我們編寫的Java類符合Servlet規範,那麼就能被Web容器識別並被容器管理。
2、什麼是Session?Session在實際工程中的應用場景。以及@SessionAttribute註解的侷限性。
3、JSP是面向伺服器的,它並不知道瀏覽器是什麼鬼,是我們在寫JSP時預設客戶端是瀏覽器,JSP就是一個Servlet。JSP的常用物件和指令。
4、JSP的中文編碼亂碼有幾種情況?各自的解決方法?提示: JSP檔案的編碼,瀏覽器的解析編碼,GET請求的編碼,POST的編碼。
5、Servlet是一種介面規範,其中請求和響應是Servlet容器通過向方法的引數賦值HttpServletRequest或者HttpServletResponse傳遞的。在Struts1裡面,將doGet()方法裡的響應移到返回值裡。在Struts2裡則:
  • 在Controller中徹底杜絕引入HttpServletRequest或者HttpServletResponse這樣的原生Servlet物件。
  • 同時將請求引數和響應資料都從響應方法中剝離到了Controller中的屬性變數。
這是一個很大的技術改造,也造成了Struts2的盛行。Spring MVC走的是中間路線,Spring的2.0.8之前的版本甚至直接使用Servlet的doGet的。Spring MVC現在開始流行主要還是因為Schema xml的精簡和基於註解的配置。所以這裡出現了新的知識點:Schema Based XML的相關知識和Java5引入的註解原理。
參考文獻:
部落格專欄 - SpringMVC深度探險
強烈推薦看兩遍。
還有關於Spring 容器和MVC容器的關係,這裡有一篇很好的介紹:
Spring與web MVC的整合——Spring的應用上下文管理
書籍:推薦許令波的書《深入分析Java Web技術內幕(修訂版)》和計文柯的《深入理解spring技術內幕》,特別是第二本,對spring的分析很是徹底。


檢視原始碼是比較快的學習方法,在一個專案裡直接利用debug的方式追蹤變數檢視原始碼,而不是去閱讀原始碼。
如何使用eclipse的debug:★ Eclipse Debug 介面應用詳解——Eclipse Debug不為人知的祕密
簡單說下步驟:新建一個maven web專案,將需要的依賴都新增到pom中去,在pom資料夾中開啟終端,執行"mvn dependency:sources"就可以下載所有pom中依賴的原始碼。如果是eclipse,選中專案,右鍵 run as 選擇 maven build... ,在goal中填入“dependency:sources”,沒有mvn。接著簡單寫一個mvc專案。假設有一個如下的handler method:我們在方法的第一行打一個斷點,進行除錯 。
        @RequestMapping("/")
	public ModelAndView indexHandler(){
		
		ModelAndView mv=new ModelAndView("success");
		mv.addObject("key", "hello,hsiung!");
		mv.addObject("time", new Date());
		
		return mv;
	}

一步一步往下看,可以在outline的視窗清楚地看到ModelAndView的屬性和方法,可以看到ModelAndView有兩個屬性很重要,一個是view:Object;一個是model:ModelMap,接著可以看到上面方法的第二行呼叫的是如下程式碼:
public ModelAndView addObject(String attributeName, Object attributeValue) {
		getModelMap().addAttribute(attributeName, attributeValue);
		return this;
	}
所以model中實際使用的是ModelMap這個類,那這個類的結構是什麼呢?按住Ctrl再單擊ModelMap,就可以看到其實就是一個LinkedHashMap<String, Object>。
2015.6.22

---------------------沒想到有人看,修改了了一下錯別字和細節 2015.6.23-----------------

關於demo,其實spring project提供了一些很好的MVC demo,
spring-projects/spring-mvc-showcase · GitHub
spring-projects/spring-petclinic · GitHub
下載原始碼,到pom目錄下開啟終端 執行: mvn eclipse:eclipse ,構建成功後直接匯入eclipse就可以執行檢視效果了。注意,mvn 命令經常一次不能成功,主要是有些maven外掛下載失敗以及國內網路的問題,手動刪除下載失敗的依賴,然後命令多執行幾次就可以成功了。也可以使用開源中國的maven源。

相關推薦

如何學習java ssh三大框架

想說說自己Spring的學習路程,課餘自學Spring將近一年了,還是不得其道。去年暑假學習了一下JSP,並沒有深入理解,所以導致學習Spring時對著書本寫一些demo,感覺自己理解了,其實並不知道內部時什麼原理,出了問題不停的百度,一個小問題好幾天解決不了。 學習一種框架最先需要知道的是為什麼需要使用這個

JAVA Collections.sort方法在SSH三大框架中使用中的問題

     最近,一同學在開發中遇到了SSH三大框架中使用到了Collections.sort方法。然而,他開發環境中的JDK 是1.7.0_64,網站部署的JDK版本是1.7.0_80,他通過開發環境中產生的.class直接去更新網站部署環境中的.class 檔案後,程式

JAVASSH三大框架整合的詳細步驟_摘錄於尚矽谷視訊

S4h4s2整合步驟(Spring4.x.x,Hibernate4.x.x,Struts2.x.x) 1. 加入 Spring 1).加入 jar 包 2).配置 web.xml 檔案(1加入applicationContext.xml執行spring,2之後加入Strut

SSH三大框架學習心得體會

這篇文章是基本的概念講解和心得體會,之後會有詳細的demo進行解說。 在過去的一段時間內,我一直對SSH(spring、Struts2、hibernate)的框架不是很瞭解,藉著這次完成電影購票系統的大作業好好學習了一下。學習過程中,我閱讀了一些相關書籍,其中

SSH三大框架的整合

ide exceptio 什麽 知識點 iso 明顯 api 解壓 open SSH三個框架的知識點(http://www.cnblogs.com/tuhooo/p/6491906.html) 一、Hibernate框架 1. Hibernate的核心配置文件 1.

JavaEE 規範和 SSH 三大框架的關系

器) 三種 一次 進行 資源計劃 系統軟件 使用 部署 足夠 轉載自 : http://blog.csdn.net/bingjing12345/article/details/20641891 2014年發布的 1994-2000 年是互聯網的大航海時代。 請註意,下面的時

SSH三大框架的整合(例項)

搭建專案: 搭建一個實際的專案,為了避免影響到你之前已經搭建過的專案,可以先新建一個工作空間,指定一個新的空間來做這一次的專案,不會和其他的專案衝突,尤其是在編碼這一部分。 指定新工作空間的目錄: 一個新的空間: 新建一個專案: 點選next: 點選next:

SSH三大框架需要的配置檔案

1. Struts2框架   * 在web.xml中配置核心的過濾器 <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.f

SSH三大框架需要的jar包

1. Struts2框架   * struts-2.3.24\apps\struts2-blank\WEB-INF\lib\*.jar -- Struts2需要的所有jar包   * struts2-spring-plugin-2.3.24.jar ---Struts2整合Spring的外掛包 2. Hib

SSH三大框架整合的三種方式

SSH框架整合: Struts2+Spring+Hibernate導包 Struts2匯入jar包: * struts2/apps/struts2-blank.war/WEB-INF/lib/*.jar * 匯入與spring整合

SSH三大框架】Hibernate基礎第十二篇:load()懶載入分析以及一對一、一對多、多對一、多對多懶載入的分析

一、懶載入的定義: 懶載入:在WEB應用程式中,經常會需要查詢資料庫,系統的響應速度在很大程度上是與資料庫互動的響應。因此,如果能夠優化與資料庫的互動速度,則能夠大大提高WEB應用的響應速度。 例如:當有一個Student類和一個Teacher類。當我們載入一個學生的所有資

SSh三大框架常考面試題

Hibernate工作原理及為什麼要用?  原理:  讀取並解析配置檔案 讀取並解析對映資訊,建立SessionFactory 開啟Sesssion 建立事務Transation 持久化操作 提交事務 關閉Session 關閉SesstionFactory 為什麼要用: 

SSh三大框架

SSH是 struts+spring+hibernate的一個整合框架,是目前比較流行的一種Web應用程式開源框架。區別於 Secure Shell 。 整合SSH框架的系統從職責上分為四層:表示層、業務邏輯層、資料持久層和域模組層,以幫助開發人員在短期內搭建結構清晰、可複用

maven執行ssh三大框架+oracle資料庫的一般步驟及注意事項

maven執行ssh框架一般步驟: (一)建立父工程(maven project)ssh_parent(pom) 1、配置pom.xml。 2、maven的倉庫有三種:本地倉庫、私服、中央倉庫,程式執

SSH三大框架搭建整合struts2+spring+hibernate

SSH框架整合理論: 在SSH框架的JAVAweb專案的開發過程中,WEB層通常使用的是Struts2+jsp,service層使用的是javaBean,DAO層使用的是hibernate,而spring的使用覆蓋三層。 使用了spring框架之後,我們可以把物件交給spring

SSH三大框架面試知識點

                Struts 談談你對Struts的理解。 答: 1.struts是一個按MVC模式設

MyEclipse 2017 整合SSH三大框架 到登入功能的實現(附原始碼)

本來以為學完Java EE之後用個三大框架沒什麼難度,結果昨天搭環境就搞了一晚上,還是靠室友找了半天才找出錯誤在哪,為了避免重複踩坑,而且目前網上用myeclipse2017做環境的教程還是蠻少的,就寫篇部落格記錄一下 先看一下最終的架構 整

SSH三大框架】Hibernate基礎第七篇:一對多關聯關係的操作

相對於上文的多對一關係,這裡又說明下一對多的關聯關係。 在上文中,我們描述了多對一的關係,在關係資料庫中也是多對一的關係,並且還是一對多的關係。但是,僅僅如此是不夠的,Hibernate是一種面向物件的結構,在Hibernate中仍然是多對一的關係,但是沒有一對多,所以我們

使用ssh三大框架和整合出現的異常

1. org.hibernate.PropertyNotFoundException: Could not locate getter method for property [cn.itcast.domain.Customer#custId] (adsbygoogle = win

SSH三大框架】Spring基礎第二篇:Spring依賴注入的三種方式

控制反轉(Inversion of Control)和依賴注入(Dependency Injection):應用控制反轉,物件在被建立的時候,由一個調控系統內所有物件的外界實體將其所依賴的物件的引用傳遞給它。也可以說,依賴被注入到物件中。所以,控制反轉是,關於一個物件如何獲