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

在这里我们对比一下Asp.net mvc和Spring mvc,至于为什么拿Spring mvc来比,原因是它们的相似更高,便于对比学习

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

Struts和SpringMVC 对比

 

 

前言

.NET C#到Java没那么难,都是面向对象的语言,而且语法还是相似的,先对比一下开发环境,再到Servlet,再到MVC,都是一样一样的,只是JAVA的配制项比较多而已,只要配好一个,后面都是copy,简直so easy,而且用myeclipse可以省一些配制

Java与.NET的区别不在它们的本身,最大的区别在于他们背后的力量,相信大家都能感觉得到,我就不多说。

 

系列目录

一、.NET C#Java没那么难,开发环境篇

二、.NET C#到Java没那么难,Servlet篇

三、.NET C#到Java没那么难,MVC篇

四、.NET C#Java没那么难,DB篇

五、.NET C#Java没那么难,Nosql篇

六、.NET C#Java没那么难,微服务篇

七、.NET C#Java没那么难,大数据篇

 

.NET C#到Java没那么难,MVC篇

 目录

1.项目结构比较

2.路由比较

3.Controller比较

4.View比较

5.Action参数绑定和返回

6.Filter和Interceptor

7.SpringMVC配制

8.运行效果

9.扩展阅读

 

 

 

1.项目结构比较 

左边是用VS2015新建的MVC项目,右边是通过MyEclipse2016新建的SpringMVC项目,结构基本一致

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

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训    photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

 

2.路由比较

NET的MVC里面,有一个专门注册路由的地方,博客园都是MVC的高手,这里就不再啰嗦了。所有的路由规则都统一放在一起管理,直接了当,一目了然。

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

Java Spring的Route规则是通过注解(NET的特性)的方式,写在Controller中的,也可以用配制文件来配制。(SpringMVC也可以把所有的路由规则写在配制文件里统一管理,也比较清楚)

注意:RequestMapping就是Spring的路由,Spring在初始化的时候,会扫描指定位置下面所有的类,如果有@Controller的注解,就将其记录为Controller,然后会解析@RequestMapping,构建类似于RouteTable这样的东西。

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

 

3.Controller比较

上边是.NET的Controller的代码,下边是Java的Controller的代码,基本一致

.NET用的是约定大于配制(也可以用.NET的特性),而NET的话,约定了所有的Controller都放在指定的目录下面(经“冲杀”同学提醒只要继承Controller就可以了,放在哪个目录都可以,不过建议还是按约定放在指定的位置),都继承于Controller父类/接口。

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

@Controller就是Java Spring的Controller,Spring在初始化的时候,会扫描指定位置下面所有的类,如果有@Controller的注解,就将其记录为Controller

当然,编码习惯好的Java开发者,也会把所有Controller放在同一个目录/Package的,例如我把Controller都放在com.rabbit.controller包。

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

4.View比较

1).NET MVC的View用的是cshtml文件,用的Razor引擎表达式 ,还有aspx视图引擎;Java的View用的是jsp文件,用的是 JSTL标签,EL表达式

2).NET MVC的view一般就两种,一种是使用原生的aspx写法,一种是razor写法,但这仅仅是写法上的区别,还是一套的实现。而在Spring MVC中就不同了,view的实现却有很多的选择,我们可以使用jsp,可以使用velocity,也可以使用更为强大的freemarker,即便是使用jsp做为view的实现,也可以有很多的写法,比如使用jstl、el或直接写jsp等等。

3).NET MVC与Spring MVC各有所长,比如在view的layout布局上,.NET已经很好的集成了,但Spring MVC做这个还要import或include,如果想做到更好,还需要第三方的layout jar。但是Spring MVC因为它出生就是Spring,所以与生俱来就可以对IOC、AOP的无缝整合,.NET需要用Autofac这种第三方框架实现IOC,AOP .Net MVC已经整合进去(就是各种Filter)

看看Spring MVC的返回视图是不是也和.NET MVC一样一样的呢

Spring MVC Action支持如下的返回方式:String, ModelAndView, Model, ModelMap, Map,View, void,如下我用两种方式实现了相同的功能,第二种ModelAndView和.NET MVC的View 是不是很像呢

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

5.Action参数绑定和返回JSON

参数绑定这块,两者的处理都差不多,如果一个数据类型可以和字符进行相互转换,那么系统就会自动帮你做绑定。如果不行的话,自己写一个类型和字符的转换类即可。

1).如下参数username可以通过get,post传递过来,Action都可以正常接收,只要名字一致即可,名字不一致时可以用注解实现

2).如下参数传Model也是可以的,只要名字一致就可以自动绑定

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

返回JSON这块两者的处理都差不多,都是自动把对象序列化后返回

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

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

Jackson包下载

 

6.Filter过滤器和Interceptor拦截器

1).Action过滤器HandlerInterceptor 和 .NET IActionFilter

那什么是拦截,又为什么要拦截。对于Spring MVC来说,拦截器主要的工作对象就是用户的请求,拦截下来之后,我们可以在拦截的各个阶段进行自定义处理。常见的比如可以做权限验证,登录系统后,系统获取到你的请求然后分析下你的用户权限,是Administrator还是User还是Guest。

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训 

2).全局错误过滤器 Spring ControllerAdvice(ExceptionHandler) 和 .NET IExceptionFilter

springmvc三种全局异常处理

 

7.SpringMVC配制

web.xml文件配制

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训 View XML

springmvc.xml 文件配制

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训 View XML

 

8.运行效果

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

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训        photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

9.扩展阅读

SpringMVC 原理和入门

SpringMVC 入门和实例

SpringMVC最全实例

 

未完,待续,欢迎评论拍砖

 


作  者: 易   磊(Rabbit_Yi)  photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训
出  处: http://www.cnblogs.com/rabbityi/ 
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。 
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我 
声援博主:如果您觉得文章对您有帮助,可以点击文章下部推荐】关注我】。您的鼓励是作者坚持原创和持续写作的最大动力! 

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

网友评论