`
可执行
  • 浏览: 17490 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

web开发,不用框架会怎样?

阅读更多

struts1的action居然不是线程安全的!
spring默认居然也不是线程安全的!
spring非单例时的性能和功能有待考证!
不懂web前台的java程序员居然提倡非标准的标签编程美其名曰美工看不懂代码!
SSH一上,代码阅读性狂降到0,特别是spring的aop,从被拦截的类里是看不出被拦截的!
SSH开发阅读性低的离谱,代码-XML-代码-XML-代码-XML看到死!为了解耦不惜一切!

    很多时候,搞java的人有点偏执了,自我陶醉在java的世界里,疯狂追求理论、追求设计模式、追求框架、追求用java解决一切,java已经蜕变为臃肿、复杂、混乱的代名词,越来越多的人开始投奔C#(本人预测5年内java将失去其头上的光环,不是败给C#是败给自己),要知道在web中java只是web的一个后台可选方案,不要试图用java去解决前台的问题,前台技术又是一番天地(html、ajax、js、jquery、css、flex、flash、activex、PS、Silverlight...)。程序有思想最重要,不然你最多做做信息系统,无法胜任创新型研发,下面是我常用的一种简单开发模式,不能说有啥特别的地方,我认为最关键的是这是我亲手写出来的,没有依赖其它插件和框架,所以最大的好处自然就是“出了问题一眼我就知道出在哪”。
    下面这个方法其实思路很明了,只是写到文字上就看起来复杂了,我向同事介绍我的思路时只用了10分钟。
    此文并没有框架不能用之意,希望大家逃离框架的约束,不至于没了框架就什么都不会做了:


    “不要在一棵树上吊死,到周围的树上试试”,我们在层出不穷的框架上滴血流汗,被框架框的严严实实。
    在这里有必要提倡写自己的代码写自己的思想,别人的东西虽好但那是有环境的不是所有情况下都完美的,我们可能背离了计算机语言的初衷——实现自己的想法。这里我和大家简单讨论下tomcat下开发的一种纯java代码的模式,用简单的方法实现MVC。

第一步:用静态html+css+div+js开发静态页面,反复修改满意后继续下一步。

第二步:封装自己的持久化工具。运用DAO模式+工厂模式对数据库进行封装,实现持久化,再次强调对象的持久化其实就是把对象属性存到数据库,所谓持久化方法就是封装JDBC增删改查等基本功能的类,调用时传入一个带属性的类,然后封装类取得传入类的属性并调用自己的方法把数据存入数据库,这就实现了传入类的持久化。

定义表Vo包:      Tab1Vo(属性和表列名对应)  Tab2Vo            Tab…Vo

                         DBConnection.class(DB连接类,以下省略.class)
               |
调用DBConnection     SQLbase(增删改查…类,参数决定SQL访问表)
               |
               ———————————————————————
                                        |
DAO定义: Tab1Dao(对应DB表) Tab2Dao    Table…Dao            |
        |          |         |                |
Dao实现:Tab1DaoIm(Tab1Vo) Tab2DaoIm(Tab2Vo) Tab…DaoIm(Tab…Vo) <—- 继承SQLbase
        |          |         |        
        ———————————————————
                  |
工厂:             factory(实例化工厂)

    在调用时只用到 定义表Vo包 和 工厂包,new一个表对应Vo类,调用factory实例化表对应DAO对象,因为实例化对象继承了SQLbase所以它具有SQLbase定义过的任何增删改查…操作,一旦到运用时你会发现,我们只是new了一个Vo类然后用工厂实例化一个对象并传入Vo实现所以数据库操作,这就是所谓对象的实例化。
    现在来分析封装代码量,
      1.定义表Vo:其实就是以表名为属性建立一个简单类并生成getter和setter,没了。
      2.DBConnection:一成不变的JDBC连接数据库,核心不过10行代码。
      3.SQLbase:这个类可能要复杂点,现所有需要的数据库操作,一般就增删改查…(分页在此通过SQL决定),你会发现由于它是从DBConnection返回DB连接的所以具体DB被分离,这个类以后可以拿到任何地方去操作DB,只要修改一下DBConnection。
      4.Dao实现:由于SQLbase封装了N多操作,但你的某张表并不需要,这时可以在这里裁剪,由于继承了SQLbase,只要根据Vo传参调用SQLbase方法就实现了,代码小于30行。
      5.factory:就是简单返回Dao实例,一个调用没了,代码很少。
    在DB中可以用统一的表命名法比如Table1,Table2,Table3,Table……并在注释中体现具体对应,这样你的封装以后可以在任何类似场合用,根据你SQLbase功能的强大,你的封装不比Hibernate差,关键是这是你写的你对它了如指掌。


第三部:用servlet取代Struts。相比Struts1,Struts2的确你能简化开发流程,但是特殊时候还是URL直接传参来的靠谱。

1.创建页面跳转servlet:

        servlet(用于跳转和控制的servlet)
         |
         |
    获取URL参数id…并过滤(这里id…指URL传的多个参数),如非法跳转错误jsp页面
         |
         |
       if(id=page1…){ 调用页面bean1(页面bean下面会讲)获得数据,跳转到相应jsp }
         |
         |
       if(id=page2…){ 调用页面bean2获得数据,跳转到相应jsp }
         |
         |
       if(id=page3…){ 调用页面bean3获得数据,跳转到相应jsp }
         |
         .
         .
         .
       else{ 跳转到404错误jsp页面 }

第四步:实现页面Bean

2.实现“页面bean”,众所周知JAVA是面向对象的,这里的“页面bean”对象就是JSP页面,页面bean里提供了对应jsp页面所需所有动态数据,包括下页id参数、导航路径等一切动态的数据,这样的好处是你在第一步建立静态网页时只要建立几个模板,然后传参调用,根据参数显示不同内容,但是你调用的始终是一个JSP不同的是里面的内容,这样就重用了JSP。
  所有的数据库调用和业务逻辑都是在页面Bean里实现的,页面Bean里有N多属性,对应了JSP页面各个动态数据,在页面Bean中可以调用其他功能Bean。举例:

                    PageBean1
                      |
         ——————————————————————————   ……
         |      |      |   |    |    |
属性:    当前页面导航 页面内容List 日期 下一页id 上一页id 作者  ……

3.实现页面bean工厂。PageBeanFactory可以实例化并返回所有页面bean。

    现在我们来运用:在显示页面只需导入页面bean工厂包 和 页面bean包,这和持久化封装其实是一个道理,new一个页面Bean调用时用工厂根据参数实例化当前页面Bean,然后用 <%=bean.属性 %>的方式来显示页面内容。如果要修改显示内容只需要修改页面Bean,显示层不变,任何数据来源、逻辑都在页面Bean里解决,完全和JSP显示层解耦。

第五步:建立过滤器(和spring中AOP效果差不多,只是它是面向访问切面的)。所有安全问题,权限问题,编码问题,一律放在过滤器里过滤,不合法的一律跳转错误页面。每当用户进入把过滤IP的专用Bean实例引用传给其Sessen,一旦用户非法操作达一定数量拒绝其访问。

第六步:配置服务器安全,在web配置中配置404、505、I\O异常等一律跳转错误页并设置错误页3秒后返回主页。杀掉地址栏前面的小猫,建立自己的favicon.ico并配置WEB文件,配置跳转servlet后缀名,影藏后台实现语言。

总结:
      1.你的代码和BD或其它数据来源完全解耦
      2.和显示层JSP完全解耦
      3.你的持久化可以在任何场合(看你封装能力)复用
      4.servelet担当控制,没有任何的配置,修改非常方便,只要修改servlet里if语句,想跳那跳那。
      5.数据库密码那可以适当用下java的properties配置文件

“写自己的代码,写自己的思想”,抛弃框架的束缚吧,没有框架你一样可以做到!

分享到:
评论
2 楼 wpf523 2012-07-13  
恩,想法不错。思考
1 楼 cosmo1987 2011-10-16  
一个开发,无所谓用不用,自己的习惯。多人协作开发,问题就来了。你可以想想多人开发的时候,不用框架会遇到什么问题,就明白了web开发,不用框架会怎样。

相关推荐

    .Net Web 开发简易框架

    .Net Web 开发简易框架 .Net Web 开发简易框架 .Net Web 开发简易框架

    Delphi+Web前端开发教程基于TMS+WEB+Core框架.pdf

    在Delphi的Web开发领域,有几款重要的框架,包括IntraWEB、uniGUI和TMS WEB Core。这些框架各有特色,比如IntraWEB以其实时更新和高度定制性闻名,uniGUI则以其广泛的组件库和易于学习的特性吸引用户,而TMS WEB ...

    MS_WEB开发框架技术

    MS_WEB开发框架技术1简介,MS_WEB开发框架技术2MVC应用,MS_WEB开发框架技术3Ajax,MS_WEB开发框架技术4JQuery,MS_WEB开发框架技术5Web服务,MS_WEB开发框架技术6数据绑定,MS_WEB开发框架技术8LINQ概况,MS_WEB...

    Pythonweb开发框架Zope有什么优势?.pdf

    Pythonweb开发框架Zope有什么优势?.pdf

    基于C的OpenWrt Web界面开发框架设计源码

    本源码是基于C开发的OpenWrt Web界面开发框架设计,包含152个文件,其中包括45个.json文件,22个.js文件,17个.md文件,17个.vue文件,以及11个.lua文件。此外,还包括4个.c文件,3个.yml文件,3个.mk文件,2个.svg...

    伍华聪2.0Web开发框架

    "伍华聪2.0Web开发框架"是一个专为现代Web应用设计的高效、灵活的开发工具集。这个框架旨在简化Web应用的构建过程,提高开发效率,同时保证代码的质量和可维护性。通过深入理解"伍华聪2.0"这一标签,我们可以推断出...

    java web开发框架

    Java Web开发框架是用于构建动态、交互式的Web应用程序的强大工具,它简化了开发过程,提高了代码的可重用性和可维护性。本框架的核心目标是为开发者提供一套高效且易于学习的开发环境,以实现快速原型设计和项目...

    web开发三大框架

    Web开发中的三大框架,即Struts2、Spring和Hibernate,是Java EE领域中非常重要的组成部分,它们各自专注于解决Web应用程序的不同问题,共同构建了一个高效、灵活的开发环境。以下是对这三个框架的详细介绍: 1. ...

    基于asp.net的web开发框架

    【基于ASP.NET的Web开发框架】是Web应用程序开发的一个强大工具,它利用Microsoft的.NET Framework提供了高效、可扩展且易于维护的解决方案。该框架的核心在于ASP.NET,一个用于构建动态网站、应用程序和服务的平台...

    web开发基础 知识框架

    web开发基础 知识框架

    java web框架开发技术

    Java Web 框架是指基于 Java 语言的 Web 应用程序开发框架,提供了一个基本的架构和组件,帮助开发者快速构建 Web 应用程序。Java Web 框架包括多种类型,如 Struts2、Spring MVC、Play Framework 等。 二、Struts2...

    Web前端框架技术综述.pdf

    Web前端框架技术的发展历史可以追溯到20世纪90年代,当时的Web开发主要基于静态HTML页面,开发者需要使用JavaScript来实现动态效果。但是,随着Web应用程序的发展,开发者需要更快速、更高效的开发方式。这时,出现...

    python开发web框架django使用教程

    Python Django是一种流行的Web开发框架,它提供了一个高效、灵活和可扩展的开发环境。下面是 Python Django框架的使用教程: 安装Django 1. 下载Django-1.8.2.tar.gz压缩包,并将其解压到C盘下,例如C:\Django-...

    2020年web开发需要的python框架:Django.pdf

    随着2020年Web开发技术的不断演进,Python语言及其框架在Web开发领域依然扮演着重要角色。而在众多Python Web框架中,Django凭借其强大的功能、高效的开发效率以及完善的文档支持,成为了众多开发者的首选。本文将...

    Furion Web开发框架

    Furion Web开发框架是一个为了让 .NET 开发更简单,更通用,更流行的开发框架。 Furion框架特点: 全新面貌:基于 .NET5/6 平台,没有历史包袱 极少依赖:框架只依赖两个第三方包 极易入门:只需要一个 Inject() ...

    Python-基于flask的快速开发WebAPI的框架

    基于flask的快速开发Web API的框架

    web前端开发框架那些事

    常用的就那么几个,这也是技术人员对框架库认知达成共识,才能让一个产品受到大家的关注,技术人员口碑的形成和养成的习惯是离不开的,如果你用一款前端开发框架开发web应用,一直用一种框架慢慢的就会产生依懒性,...

    Web开发主流框架技术研究.pdf

    Web开发框架技术,即Web开发过程中可重复使用的技术规范,使用框架可以帮助技术员快速开发特定的系统。Web开发框架技术分前端开发框架技术和后端开发框架技术。 二、前端开发框架技术 前端开发是创建Web页面或APP等...

    毕业设计基于pythonWeb开发Django框架的图书商城管理系统源码+数据库文件.zip

    毕业设计基于pythonWeb开发Django框架的图书商城管理系统源码。 软件架构:python的web开发Django框架 安装教程 在命令行中输入python manage.py runserver 运行商城。 注意:要在web里的目录下才能运行manage.py ...

    JFinal框架在Java Web开发中的应用.pdf

    尽管如此,JFinal依然是Java Web开发领域中一个值得推荐的开发框架,特别是在追求快速开发和简单配置的项目中具有很大优势。 从文章中提供的内容来看,JFinal框架的确能够满足当前快速发展的技术和Web需求,且在...

Global site tag (gtag.js) - Google Analytics