最典型的JAVA MVC就是JSP + servlet + javabean的模式。比較好的MVC,老牌的有Struts、Webwork。新興的MVC 框架有Spring MVC、Tapestry、JSF等。

在這里我們對比一下Asp.net mvc和Spring mvc,至于為什么拿Spring mvc來比,原因是它們的相似更高,便于對比學(xué)習(xí)

不了解的推薦看下面這篇文章,如果不清楚MVC的就先看下MVC的文章,這里就不啰嗦了

Struts和SpringMVC 對比

 

 

前言

.NET C#到Java沒那么難,都是面向?qū)ο蟮恼Z言,而且語法還是相似的,先對比一下開發(fā)環(huán)境,再到Servlet,再到MVC,都是一樣一樣的,只是JAVA的配制項比較多而已,只要配好一個,后面都是copy,簡直so easy,而且用myeclipse可以省一些配制

Java與.NET的區(qū)別不在它們的本身,最大的區(qū)別在于他們背后的力量,相信大家都能感覺得到,我就不多說。

 

系列目錄

一、.NET C#Java沒那么難,開發(fā)環(huán)境篇

二、.NET C#到Java沒那么難,Servlet篇

三、.NET C#到Java沒那么難,MVC篇

四、.NET C#Java沒那么難,DB篇

五、.NET C#Java沒那么難,Nosql篇

六、.NET C#Java沒那么難,微服務(wù)篇

七、.NET C#Java沒那么難,大數(shù)據(jù)篇

 

.NET C#到Java沒那么難,MVC篇

 目錄

1.項目結(jié)構(gòu)比較

2.路由比較

3.Controller比較

4.View比較

5.Action參數(shù)綁定和返回

6.Filter和Interceptor

7.SpringMVC配制

8.運行效果

9.擴展閱讀

 

 

 

1.項目結(jié)構(gòu)比較 

左邊是用VS2015新建的MVC項目,右邊是通過MyEclipse2016新建的SpringMVC項目,結(jié)構(gòu)基本一致

Java中的源碼都放在src目錄,jsp文件都在views目錄里,也可以放在WEB-INF目錄里

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)    photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

 

2.路由比較

NET的MVC里面,有一個專門注冊路由的地方,博客園都是MVC的高手,這里就不再啰嗦了。所有的路由規(guī)則都統(tǒng)一放在一起管理,直接了當(dāng),一目了然。

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

Java Spring的Route規(guī)則是通過注解(NET的特性)的方式,寫在Controller中的,也可以用配制文件來配制。(SpringMVC也可以把所有的路由規(guī)則寫在配制文件里統(tǒng)一管理,也比較清楚)

注意:RequestMapping就是Spring的路由,Spring在初始化的時候,會掃描指定位置下面所有的類,如果有@Controller的注解,就將其記錄為Controller,然后會解析@RequestMapping,構(gòu)建類似于RouteTable這樣的東西。

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

 

3.Controller比較

上邊是.NET的Controller的代碼,下邊是Java的Controller的代碼,基本一致

.NET用的是約定大于配制(也可以用.NET的特性),而NET的話,約定了所有的Controller都放在指定的目錄下面(經(jīng)“沖殺”同學(xué)提醒只要繼承Controller就可以了,放在哪個目錄都可以,不過建議還是按約定放在指定的位置),都繼承于Controller父類/接口。

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

@Controller就是Java Spring的Controller,Spring在初始化的時候,會掃描指定位置下面所有的類,如果有@Controller的注解,就將其記錄為Controller

當(dāng)然,編碼習(xí)慣好的Java開發(fā)者,也會把所有Controller放在同一個目錄/Package的,例如我把Controller都放在com.rabbit.controller包。

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

4.View比較

1).NET MVC的View用的是cshtml文件,用的Razor引擎表達式 ,還有aspx視圖引擎;Java的View用的是jsp文件,用的是 JSTL標簽,EL表達式

2).NET MVC的view一般就兩種,一種是使用原生的aspx寫法,一種是razor寫法,但這僅僅是寫法上的區(qū)別,還是一套的實現(xiàn)。而在Spring MVC中就不同了,view的實現(xiàn)卻有很多的選擇,我們可以使用jsp,可以使用velocity,也可以使用更為強大的freemarker,即便是使用jsp做為view的實現(xiàn),也可以有很多的寫法,比如使用jstl、el或直接寫jsp等等。

3).NET MVC與Spring MVC各有所長,比如在view的layout布局上,.NET已經(jīng)很好的集成了,但Spring MVC做這個還要import或include,如果想做到更好,還需要第三方的layout jar。但是Spring MVC因為它出生就是Spring,所以與生俱來就可以對IOC、AOP的無縫整合,.NET需要用Autofac這種第三方框架實現(xiàn)IOC,AOP .Net MVC已經(jīng)整合進去(就是各種Filter)

看看Spring MVC的返回視圖是不是也和.NET MVC一樣一樣的呢

Spring MVC Action支持如下的返回方式:String, ModelAndView, Model, ModelMap, Map,View, void,如下我用兩種方式實現(xiàn)了相同的功能,第二種ModelAndView和.NET MVC的View 是不是很像呢

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

5.Action參數(shù)綁定和返回JSON

參數(shù)綁定這塊,兩者的處理都差不多,如果一個數(shù)據(jù)類型可以和字符進行相互轉(zhuǎn)換,那么系統(tǒng)就會自動幫你做綁定。如果不行的話,自己寫一個類型和字符的轉(zhuǎn)換類即可。

1).如下參數(shù)username可以通過get,post傳遞過來,Action都可以正常接收,只要名字一致即可,名字不一致時可以用注解實現(xiàn)

2).如下參數(shù)傳Model也是可以的,只要名字一致就可以自動綁定

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

返回JSON這塊兩者的處理都差不多,都是自動把對象序列化后返回

1).如下使用ResponseBody注解,直接返回POJO對象即可自動序列化成JSON,這里需要引入Jackson的包

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

Jackson包下載

 

6.Filter過濾器和Interceptor攔截器

1).Action過濾器HandlerInterceptor 和 .NET IActionFilter

那什么是攔截,又為什么要攔截。對于Spring MVC來說,攔截器主要的工作對象就是用戶的請求,攔截下來之后,我們可以在攔截的各個階段進行自定義處理。常見的比如可以做權(quán)限驗證,登錄系統(tǒng)后,系統(tǒng)獲取到你的請求然后分析下你的用戶權(quán)限,是Administrator還是User還是Guest。

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn) 

2).全局錯誤過濾器 Spring ControllerAdvice(ExceptionHandler) 和 .NET IExceptionFilter

springmvc三種全局異常處理

 

7.SpringMVC配制

web.xml文件配制

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn) View XML

springmvc.xml 文件配制

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn) View XML

 

8.運行效果

上邊是Asp.net MVC,下邊是Java Spring MVC

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)        photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

9.擴展閱讀

SpringMVC 原理和入門

SpringMVC 入門和實例

SpringMVC最全實例

 

未完,待續(xù),歡迎評論拍磚

 


作  者: 易   磊(Rabbit_Yi)  photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)
出  處: http://www.cnblogs.com/rabbityi/ 
版權(quán)聲明:本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。 
特此聲明:所有評論和私信都會在第一時間回復(fù)。也歡迎園子的大大們指正錯誤,共同進步。或者直接私信我 
聲援博主:如果您覺得文章對您有幫助,可以點擊文章下部推薦】關(guān)注我】。您的鼓勵是作者堅持原創(chuàng)和持續(xù)寫作的最大動力! 

http://www.cnblogs.com/rabbityi/p/7089244.html