`
solonote
  • 浏览: 89974 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

悲剧的JSP细粒度重用

阅读更多

刚刚来到成都的一家外包公司工作,第一次做外包,主要是自己想锻炼一下外语了。我外语真的很烂,不过还是找到了一家美国公司。他们在用一个商业框架做电子商务的网站开发,框架是ATG,就不多介绍了,不觉得比开源框架强 - -;

 

我开始进入项目组,参与一个电子商务网站的开发,工作是很简单的把JSP改一下,改成客户要求的HTML样式。我开始认为这是一个简单的不能再简单的事情了。

但是,我错了,JSP页面里面居然包含了无数的 if 判断,并且无数的include标签,所有东西都被写成小块,1个页面可能包括了3个大块a,b,c,然后每一个大块里边又深层嵌套了几个小块,这样如果你要把a大块里层的一个东西移动到b大块简直就是一个悲剧,你不能简单的修改那一块逻辑,因为这些jsp是被其他页面重用的,你的修改可能导致别的页面不可工作了,你必须先传参数一层一层传到你要修改的那个展示区域,然后通过一个if判断隐藏,然后再b大块里边展示。

 

本来很简单的事情却很费力,我终于深刻体会到“越差的软件越复杂,开发维护成本越高”这句话的含义。

这篇文章很容易就会被写成发泄不满的文章,我必须克制我自己抱怨的冲动。那么下边来说说我对jsp粒度的想法,希望能与大家交流,讨论。

 

jsp作为展示层,我觉得其可重用的判断标准应该为它是否是一个完整的显示组件,比如导航,它是一个完整的显示组件,它不和其他组件耦合,因此它是可以完整重用,应该被include到一个jsp页面中。

而一些细粒度的东西,具体我不太好举例,但是如果你发现你要在构造页面的数据中带入一些需要include的jsp url,css或者很多的if/else时,你就必须考虑一下,是否是把两个本来应该分开的页面写成了一个页面。或者当你修改页面的时候你发现自己必须修改好几个jsp,你也必须注意,是不是jsp的粒度出现了问题。

 

我们当然希望所有的jsp都没有冗余(修改发生时只修改一个地方)。但如果做到这一点,页面肯定非常复杂,反而带来更大的维护成本,特别是项目组有人离开了,加入新人的时候,一个jsp里边嵌套了很多层的jsp肯定是一件非常头痛的事情。

 

jsp更应该负责的是展示数据的逻辑而不是判断数据选择展示逻辑的工作,这样的工作更应该交给控制层去做。

 

 

希望灾难早一天停止.............................

 

 

2
0
分享到:
评论

相关推荐

    jsp中的代码重用技术

    这种方法提供了强大的功能,可以在作用域内协调共享数据,但同时也带来了一些限制,比如缺少细粒度的控制和没有参数化的构造器支持。 #### 四、JSP1.1中的改进 随着JSP版本的演进,1.1版本引入了典型标签库(Tag ...

    基于Spring Security的细粒度权限管理系统设计源码

    这是一个基于Spring Security框架的细粒度权限管理系统,使用Java语言开发,同时包含JavaScript、CSS、HTML等多种编程语言。该项目共包含2447个文件,其中主要文件类型包括JavaScript、PNG图片、CSS、HTML、JAR包、...

    jsp模板 jsp模板 jsp模板jsp模板jsp模板

    jsp模板jsp模板jsp模板jsp模板jsp模板jsp模板jsp模板jsp模板jsp模板jsp模板jsp模板jsp模板jsp模板jsp模板jsp模板jsp模板jsp模板jsp模板jsp模板jsp模板jsp模板jsp模板jsp模板jsp模板jsp模板jsp模板jsp模板jsp模板jsp...

    浅析JSP、JAVASCRIPT及JSP与JAVA组件实例化过程分析.pdf

    组件是类本身细粒度的可重用实现,为了解决功能或机制层面更大粒度重用的问题引入了组件的概念。组件对外暴露一个或多个接口,供外界调用。组件内部由多个类来协同实现指定的功能。对于复杂的组件,会包括很多的类,...

    jsp实用教程上机实验

    在第一次请求时,JSP会被转换成一个Servlet类,并在后续请求中重用。 3. **脚本元素**:Scriptlets(`<%...%>`)用于编写Java代码块,它们在服务器端执行并生成HTML响应。表达式(`${...}`)则会将Java表达式的值...

    可以运行的jsp网上商城 jsp+mysql

    3. **JavaBean**:作为JSP中的可重用组件,JavaBean可以封装业务逻辑,提高代码复用性。它们通过`jsp:useBean`指令被引入到JSP页面中。 4. **Servlet**:在后台处理HTTP请求和响应,与JavaBean协作完成业务逻辑。...

    关于jsp的外文文献及翻译

    JavaBean是Java平台上的可重用组件,符合JavaBeans规范的Java类,通常用于封装业务逻辑。在JSP中,JavaBean可以通过JSP动作标签 `<jsp:useBean>` 引入,提供了一种在页面间共享数据的方法。开发者可以通过设置和获取...

    JSP程序设计从入门到精通355页.pdf

    函数用于实现代码的重用和封装。数组和对象用于实现数据的存储和操作。 JSP 高级技术 JSP 高级技术包括了 Session、Cookie、Application 等方面的内容。Session 是一种服务器端的存储机制,用于存储用户的会话信息...

    jsp网站源码jsp网站源码

    - **可重用性**:通过自定义标签库(Tag Libraries),可以创建可重用的组件。 - **灵活性**:基于强大的Java平台,JSP能利用所有Java库和框架。 然而,JSP也存在一些不足,如过度使用脚本let可能导致代码混乱,...

    用JSP创建可重用的图形背景

    有一个技术可以在Java Server Pages(JSP)中产生整齐、精细的直方图,它可以用来作为可重用的背景。为了达到可重用性的目的,你需要使得图形的尺寸可以调整,你还应该管理直方块以免它们越过图形区域的边界。然后,...

    jsp内置对象及jsp复用

    总结来说,JSP内置对象提供了丰富的功能,简化了服务器端编程,而JSP复用机制则促进了代码的模块化和重用,提高了开发效率。熟练掌握这些概念和技巧,对于构建高效、可扩展的Web应用程序至关重要。

    十三、JSP动作

    利用JSP动作可以动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件生成HTML代码。 JSP动作包括: jsp:include:在页面被请求的时候引入一个文件。 jsp:useBean:寻找或者实例化一个JavaBean...

    JSP设计(第三版)

    1. **分离关注点**:应尽可能将业务逻辑、数据处理和页面展示分离,提高代码的可维护性和可重用性。 2. **代码复用**:利用JavaBean和自定义标签实现代码复用,降低重复工作量。 3. **安全性**:注意JSP中的安全...

    jsp医院住院管理系统

    3. **JavaBean**: JavaBean是Java平台上的组件模型,可以封装数据和方法,用于在JSP页面中重用代码和共享数据。在住院管理系统中,JavaBean可以代表病人、医生、病房等实体对象。 4. **MVC模式**: Model-View-...

    外文文献JSP发展历史中英文

    Java Server Pages (JSP) 技术是Sun Microsystems公司发起并由多家公司共同构建的一种动态网页技术标准。它在创建动态网页方面具有强大且灵活的功能,但并不特别复杂。JSP与微软的Active Server Pages (ASP)技术非常...

    jsp实现毕业设计成品

    项目可能采用了MVC(Model-View-Controller)设计模式,这是一种常见的Web应用程序架构模式,将业务逻辑、数据模型和用户界面分离,提高了代码的可维护性和可重用性。在MVC模式下,Model负责数据处理,View用于显示...

    jsp.rar_javaBean mysql_jsp SQL 2000_jsp sql_jsp 留言板_sql jsp

    JavaBeans是一种Java组件模型,常被用来封装业务逻辑,便于在JSP页面中重用。 **1. JSP与MySQL的连接:** 在JSP中连接MySQL数据库通常涉及以下步骤: - 导入所需的库,如`java.sql.*`和`javax.sql.*`。 - 创建...

    外文翻译--JSP及其WEB技术

    此外,JSP还支持直接在网页中嵌入Java代码,并且可以调用可重用组件,如Servlet、JavaBean等,这些组件构成了基于Java的Web应用程序的基础部分。 #### 二、JSP的工作原理 当Web服务器接收到对JSP页面的访问请求时...

    JSP所需的jar包

    8. **javax.faces.*.jar**:对于使用JSF技术的项目,如`jsf-api.jar`和`jsf-impl.jar`,它们提供了JSF的接口和实现,允许创建可重用的UI组件和处理用户交互。 9. **mysql-connector.jar**或其他数据库驱动:如果你...

    《JSP从入门到精通》

    8. **JSP与JavaBean**:学习如何创建和使用JavaBean,它们是封装业务逻辑的组件,可以方便地在JSP中重用。 9. **JSP错误处理和调试**:学习如何配置错误页面,以及如何使用日志记录工具进行问题排查。 10. **JSP...

Global site tag (gtag.js) - Google Analytics