`
asklxf
  • 浏览: 36821 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

为什么主流Java MVC框架如此难以使用

    博客分类:
  • Java
阅读更多

使用J2EE Web开发已经好几年了,从JSP、Struts、WebWork到现在的Struts 2、Wicket,没有一个用起来简单顺手的。

 

无论哪个框架吹嘘自己有多么简单和高效的生产力,甚至让一个从未接触过Web开发的人5分钟能上手,绝对是骗人的。照着教程做一个Hello World还可以,一旦网站规模一大,根本无法维护。

 

再深入挖掘一下,你会发现,其实一个MVC框架无论服务器端设计有多么差,其实也差不到哪去,有面向对象经验的开发人员都可以写出比较能维护的代码,即便像Struts这种比较古老的框架,服务器端开发也不难,和WebWork2比仅仅是不方便而已。

 

但是到了View这一层就五花八门了,总体来说,有以下几路主流门派:

 

1. 以Struts为代表的JSP + Tag派,真叫一个难用,尤其是Tag,不但要查手册,你还必须写出if equals ... else的逻辑来。

 

2. 以JSF为代表的全Tag派,基本上写一个JSP和一个XML没啥区别,都是Tag堆出来的,甚至变态到HTML元素都给Tag了,比如<h:div>。

 

3. 以Wicket为代表的嵌入式派,可以通过<span wicket:id="message" id="message">来搞定,不破坏HTML,不过通过Filter过滤性能值得怀疑。

 

无论哪种MVC框架,目的都是要简化View的开发,然而在实际使用时却发现,简化了简单的页面,复杂页面却变得更复杂了,因为这些MVC框架都普遍忽视了一个基本原理:现代Web技术是建立在HTML+CSS+JavaScript基础上的,任何试图帮助Java开发者隐藏HTML、CSS和JavaScript的努力最终都将阻碍Web开发。不会HTML,不会CSS,不会JavaScript,那就不要做Web开发,无论你多么精通Java!

 

正是由于这些MVC框架有意无意地让Java开发人员远离HTML,才造成了View开发的困难重重。尤其以JSF为代表,性能就不说了,要添加JavaScript你只能先看编译后的HTML源码,要修改CSS要DEBUG至少N次,所有的可视化HTML编辑器都用不了。

 

所以,要真正提高Web开发的生产力,尤其是页面的可维护性,Web页面必须由精通HTML+CSS+JavaScript的开发人员完成,服务器端技术对这些的侵入性越小,页面越容易维护。目前我认为比较好的View框架还是Velocity和FreeMarker,通过<div>${message}</div>比JSP Tag强很多,结合HTML可视化编辑器(主要指Dreamwaver),调试起来非常方便,而且不用重启服务器。至于服务器端,其实各MVC大同小异,我一直使用Spring MVC+Velocity,少集成一个框架毕竟麻烦少一些。

5
3
分享到:
评论
9 楼 liu346435400 2012-07-20  
恩,不错的文章。struts虽然号称功能强大,但那些标签库确实令人难受,增加程序员的学习量不说,而且不容易实现美工和后台程序员的分离。需要深思
8 楼 shengfuqiang 2010-07-28  
view开发对java程序员来说确实难,主要是没有重点关注view层的开发而已,
7 楼 shengfuqiang 2010-07-28  
view开发对java程序员来说确实难,主要是没有重点关注view层的开发而已,
6 楼 fyting 2009-08-05  
引用
现代Web技术是建立在HTML+CSS+JavaScript基础上的,任何试图帮助Java开发者隐藏HTML、CSS和JavaScript的努力最终都将阻碍Web开发。

深得吾心啊。
在ajax盛行的今天,这类自动生成的逐渐会变成废物。而JSF压根就不是MVC路线,在一部分企业开发中可能还有一点用吧。反过来,ASP.NET MVC倒是做得不错……
5 楼 crabboy 2009-07-12  
不会HTML,不会CSS,不会JavaScript,那就不要做Web开发,无论你多么精通Java!


这话在理。
4 楼 vb2005xu 2009-06-29  
我个人认为当前最好用最简单的MVC框架是Spring MVC .... 但是还是有很多不便

抛开MC这两个层次...对V这一层的实现,各种框架均有不同的实现,对lz所说的深表赞同...lz所说的Wicket我还是第一次听到,感觉这个和python的turbogears框架中使用的那个kid差不多...我个人认为,单开效率不讲,这种确实最好维护和协作的...

现在的MVC框架在V层,似乎是让JAVA程序员担任着这个开发责任,让一个java程序员同时兼任美工的作用... 那么多的标签,美工咋的会..??

我平时接活的时候都是SpringMVC ,在V层仅仅使用JSP + JSTL来弄,这样和美工很好的协作,美工做的页面拿过来改下就可以使用...

想修改页面的时候,又不用重启服务器..很方便...

我讨厌使用标签库,真的很讨厌... 比如那个displaytag,说白了不就是一个增强型的表格,这个使用JS可以轻易的实现,为什么要使用标签库呢,我始终都是使用JS来渲染这些,

<table class="displaytag" requri="infolist.do?user=admin" mode="debug"></table>

后台infolist.do传过来的是XML或者JSON数据,前台处理下...

mode属性指定开发时的性质,为debug的时候则显示实现设置好的一组数据

条钱库仍JAVA程序员看不起JS,同时与美工脱节,让JAVA全能,使得JAVA程序员变成了集系统设计,代码开发,页面设计等等的大拿... 真的好么?
3 楼 kobevaliant 2009-06-26  
不错,很同意。
当应用复杂之后,分离解耦永远是提高生产效率、提高并行开发效率的不二法门。
jsp tag技术(包括类似jsf之类的变种)在这方面做得很不好,本身页面上的html css js就够乱的了,它还跟着添乱,让页面开发一团糟。
2 楼 jmu 2009-06-25  
mvc框架我认为并没有阻碍view开发 
mvc说白了是给一站式人方便用的,web展现技术说实在的对于一站式的程序员很琐碎,很耗时间,很棘手
所以对于view的包装方便了一部分人使用,
的确对于生产环境,真正的商业开发,没有专业的web写手是不行的
但这不管struts这些框架的事啊
  传统的struts1我可以继续用, el我可以继续用,我页面照样可以js,css,jquery,或者直接用json传输

其实mvc所做的努力无非是想让写后台的和web工程师分开,顺便提供了前台展现的基本解决方案,因为并不是所有项目都有必要花精力,人力,把web打造到极致, 所谓够用就行了

"正是由于这些MVC框架有意无意地让Java开发人员远离HTML" 这话我不敢苟同, mvc, 对于m.v和c都进行了包装,单单说让开发者远离v是不公平的,如果这叫远离html, 我也可以mvc让他们远离servlet,远离jdbc...
view开发难度重重, 是因为一直以来对于web开发人员的偏见和发展不均衡的导向等原因造成的
估计现在很多公司仍然把web前台程序员叫做"美工"吧!
1 楼 liangcoder 2009-06-25  
Web Developer 和 Java Developer 还是有一些区别的,例如 HTML CSS JS 确实是必不可少的。

相关推荐

    mvc框架性比较

    Struts、Spring MVC等是主流的MVC框架,它们提供了丰富的功能,简化了开发流程,但也带来了性能上的差异。本文将深入探讨几个主流MVC框架在性能上的表现。 首先,我们关注的是纯JSP的表现。作为最基础的处理方式,...

    开发者突击Java Web主流框架

    2. **Spring框架**:Spring是Java Web开发中最广泛使用的框架之一,它不仅提供了MVC框架,还包含依赖注入(DI)和面向切面编程(AOP)等功能,支持事务管理、数据访问、安全控制等。 3. **Struts框架**:Apache ...

    java主流开发框架演变历程.pptx

    Java 主流开发框架演变历程 Java 主流开发框架的演变历程是 Java 开发者不可或缺的知识点。从早期的 JSP+Servlet+JavaBean 到现在的 SpringBoot,Java 主流开发框架经历了多次演变。 一、JSP+Servlet+JavaBean ...

    mvc框架开发租房网站

    本篇文章将探讨使用MVC框架开发租房网站的关键技术点,包括对Servlet、JSP、JavaBean以及自定义MVC框架的理解。 首先,我们从Servlet开始。Servlet是Java Web应用的基础,它是一个Java类,用于处理HTTP请求并生成...

    javaSSH框架javaSSH框架 整合

    JavaSSH框架,通常指的是在Java开发中用于构建服务器端应用的一种技术栈,它结合了Struts、Spring和Hibernate这三个主流的开源框架。Struts提供了MVC(Model-View-Controller)设计模式,Spring则是一个全面的后端...

    学生籍贯管理系统,基于Java SSM框架开发(spring、 spring mvc、 mybatis)

    首先,SSM框架是Java Web开发中的主流选择,它由Spring、Spring MVC和MyBatis三个组件构成。Spring作为基础框架,提供了依赖注入和面向切面编程,简化了应用的复杂性。Spring MVC作为Spring的Web层,负责处理HTTP...

    Java框架API大全.rar

    本压缩包“Java框架API大全.rar”包含了三大主流Java Web框架——Spring、Hibernate、Struts的完整API文档,为开发者提供了详尽的参考资料。 首先,Spring框架是Java企业级应用的核心框架,以其依赖注入(DI)和...

    设计 REST 风格的 MVC 框架

    因此,设计一个原生支持REST风格的MVC框架,以适应现代Web开发的需求,变得尤为重要。 #### REST风格的MVC框架设计原理 在设计REST风格的MVC框架时,关键在于如何将URL直接映射到具体的控制器方法上,而不是像传统...

    开发者突击:Java Web主流框架整合开发源代码

    【开发者突击:Java Web主流框架整合开发源代码】是一份专为Java Web开发人员准备的实践教程,旨在帮助他们深入理解和应用J2EE、Struts、Hibernate和Spring四大主流框架进行整合开发。这个资源包包含了丰富的源代码...

    开发者突击:Java Web 主流框架整合开发 源码资源说明

    Struts是Java Web应用的MVC框架,用于构建动态、可维护的Web应用程序。文件中提到的版本分别为1.2.9和2.0.9,均可从Apache官方网站下载。Struts 1.2.9的下载链接为...

    自定义Java开发框架

    2. **MVC模式**:大多数Java框架都基于Model-View-Controller(MVC)设计模式,将业务逻辑、数据展示和用户交互分离,使得代码组织清晰,易于维护。开发者可以专注于业务逻辑的实现,而无需关心视图层和控制层的细节...

    ssh2 java web 主流框架 整合

    本教程将深入探讨如何整合这些主流框架,以构建高效、灵活且可扩展的Java Web应用程序。 首先,Spring框架作为整个应用的核心,提供依赖注入(DI)和面向切面编程(AOP)的能力,使得代码更加松耦合,易于测试和...

    开发者突击_Java+Web主流框架整合开发_J2EE+Struts+Hibernate+Spring+源代码

    Spring不仅包含了IoC(Inversion of Control)容器,负责管理对象的生命周期和依赖关系,还提供了大量其他功能,如数据访问抽象、Web MVC框架、事务管理、安全控制等。Spring框架的模块化设计使得开发者可以根据需要...

    Java框架Java框架Java框架

    本文将深入探讨三个主流的Java框架:Spring、Hibernate和Struts,以及它们的核心特性和使用。 **Spring框架** Spring是一个全面的企业级应用框架,它在Java开发中扮演着核心角色。其主要特点包括: 1. **Spring ...

    java框架核心技术笔记

    Java框架是Java开发中的核心工具,它们为开发者提供了一套预定义的结构和模式,使得在构建复杂的Web应用、企业级应用或者桌面应用时能够更加高效。这些框架大大简化了代码编写,提高了代码的可复用性和可维护性。本...

    java 三大框架面试题(SSH)

    Java 三大框架,即Struts、Hibernate和Spring,是Java Web开发中常用的技术组合,用于构建高效、可维护的企业级应用程序。这些框架各有其特点,共同构建了一个强大的MVC(Model-View-Controller)架构。 Struts是...

    MVC新闻发布系统 java

    4. **Spring MVC框架**:Spring MVC是Java Web开发中的主流框架,它简化了MVC的实现,提供了依赖注入、AOP(面向切面编程)、事务管理等功能。在MVC新闻发布系统中,Spring MVC负责调度请求、处理响应、装配模型数据...

    Java框架SSH实例小型企业网站

    【SSH框架整合实例】是Java开发中的一个重要主题,它涵盖了Spring、Struts和Hibernate三个主流的开源框架。这个实例是一个小型企业网站的实现,虽然功能有限,但足够用于初学者学习和理解这些框架的集成与应用。 ...

Global site tag (gtag.js) - Google Analytics