一、MVC设计模式

软件可以认为有 Model View Controller 来组成 MVC设计模式 要求这三部分 应该尽量独立 互不干扰 使程序结构清晰  便于开发和维护

二、JAVAEE经典三层架构

将整个JAVAEE的开发过程分为 Web Service Dao 三层

案例:改造EasyMall 为 三层架构

分层的优势:

~1.分层目的在于 代码具有更加优良的结构 便于开发和调试

~2.便于在层与层之间实现代码的复用 减少代码冗余

~3.在更改模块时可以不影响其他模块的使用 实现模块的复用

如 需要将底层的数据库 从mysql 切换到oracle 此时 只需要去修改Dao层 web层和service层不需要修改。

再例如 ,需要将web层 切换为 用Android 或 IOS 移动端实现 ,此时 只需要 替换web 层 Service 和 Dao层不需要修改。

为了实现第三个优点,三层架构要求,层与层之间尽量的独立,不要胡乱传递层特有的对象,例如不要将web层特有的对象传递给其他层,dao层 特有的对象返回给其他层,因为,一旦这样做,这些某一层特有的对象就入侵到了其他层,一旦需要替换这一层时,不可避免的要跟着修改其他层中使用了这一层特有对象的地方的代码。这种由于乱传递对象而造成 层与层之间关系变得过于紧密的情况,称之为层与层之间发生了耦合。

这种层与层之间过于紧密的关系是有害的,应该尽量的避免或消除,解决这些耦合的过程就称之为 解耦。最终希望实现 高内聚 低耦合 的状态。

解耦的实现:

不要胡乱传递层特有的对象人为的造成耦合。

但是再小心,层与层之间早晚要发生关系的,这些耦合是无法避免的,此时 需要将耦合管理起来 - 管理耦合有很多种方案 - 我们介绍 - 接口+配置文件+工厂 实现解耦。

接口:

使层可以面向接口编程 而不需要关注下面层具体的实现

在切换底层时 不需要修改上层代码 因为接口没有变动

为层的实现提供了统一的标准  方便 实现不同实现类

工厂+配置文件:

基于配置来实现产生接口的实现类

由工厂来根据配置来生产接口的具体实现类对象,在底层实现类变化时,可以不需要修改代码 只需要改配置即可

单例 泛型 反射

单例模式:

解决的问题:保证一个类在一个程序中只能有唯一的一个实例

2种情况:

1. 需要唯一的一个对象进行统一的管理,如果对象多了,就会出问题

2. 相对于频繁创建对象,使用唯一的对象可以提高效率

如何实现单例模式?

1. 私有的构造器

2. 私有的静态的自身实例,作为唯一的实例

3. 公有的静态的返回当前类的唯一实例的方法

代码重构:

jsp中的java代码用标签技术替代

配置虚拟主机,实现www.easymall.com访问

在[tomcat]/conf/server.xml配置虚拟主机<Host name="www.bingou.com" />

修改Hosts文件增加 127.0.0.1 bingou.com

在[tomcat]/conf/www.bingou.com/ROOT.xml 中编写<Context docBase="工程的WebRoot目录"/>直接让tomcat中的www.bingou.com虚拟主机管理工程目录下的WebRoot,好处是不用发布,直接修改工程中的文件立即可以起作用。

**此种方式下没有了发布过程,myeclipse就不会自动帮我们加入jstl开发包了,需要自己导入。

用javabean保存信息

整理代码结构,实现软件分层

注册用户:

RegistServlet

解决请求响应乱码

验证验证码

获取用户提交的数据

校验数据

将数据封装到bean中,调用Service的方法注册用户

注册成功后回到主页

UserService

注册用户的方法:

检查用户名是否存在

注册用户到数据库

UserDao

根据用户名查找用户

加入用户数据到数据库中

登录用户:

LoginServlet

处理乱码

获取用户名密码

记住用户名的处理

调用Service根据用户名密码查找用户

找不到就提示用户名密码不正确

找到就登录用户回到主页

UserService

登录用户的方法

调用到根据用户名密码查找用户

UserDao

根据用户名密码查找用户的方法

AJAX校验用户名:

解决乱码

获取用户名

检查用户名是否已经存在

代码修改

链接:https://pan.baidu.com/s/1stneiwMhgVxw03VV28PDZg 密码:py2j

9.MVC模式 -- 改造源代码的更多相关文章

  1. 二十八、带给我们一种新的编码思路——EFW框架CS系统开发中的MVC模式探讨

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...

  2. 二十七、EFW框架BS系统开发中的MVC模式探讨

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...

  3. Dot Net设计模式—MVC模式

    1 MVC设计模式简介 MVC结构是为那些需要为同样的数据提供多个视图的应用程序而设计的,它很好的实现了数据层与表示层的分离.MVC作为一种开发模型,通常用于分布式应用系统的设计和分析中,以及用于确定 ...

  4. 【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)

    一. iOS 项目简介 1. iOS 文件简介 创建一个 HelloWorld 项目, 在这个 IOS 项目中有四个目录 : 如下图; -- HelloWorldTests 目录 : 单元测试相关的类 ...

  5. Android中MVP模式与MVC模式比較(含演示样例)

    原文链接 http://sparkyuan.me/ 转载请注明出处 MVP 介绍 MVP模式(Model-View-Presenter)是MVC模式的一个衍生. 主要目的是为了解耦,使项目易于维护. ...

  6. SSH和三层架构的MVC模式的对应关系

    1.MVC(Model-View-Controller)设计模式: 首先让我们了解下MVC(Model-View-Controller)的概念: MVC全名是Model View Controller ...

  7. 编码风格:Mvc模式下SSM环境,代码分层管理

    本文源码:GitHub·点这里 || GitEE·点这里 一.分层策略 MVC模式与代码分层策略,MVC全名是ModelViewController即模型-视图-控制器,作为一种软件设计典范,用一种业 ...

  8. Android 腾讯入门教程( 智能手表UI设计 和 MVC模式 )

    *****注意到mvc 在android 中是如何进行分层分域执行各自的功能.**** 官方推荐的按钮尺寸是48像素 前端之Android入门(1):环境配置 前端之Android入门(2):程序目录 ...

  9. ASP.Net MVC开发基础学习笔记:一、走向MVC模式

    一.ASP.Net的两种开发模式 1.1 ASP.Net WebForm的开发模式 (1)处理流程 在传统的WebForm模式下,我们请求一个例如http://www.aspnetmvc.com/bl ...

随机推荐

  1. 参数 out

    function outtest(out jo: ISuperObject; out s: string):Boolean; begin //进入函数时 jo =nil ErrStr = '' Res ...

  2. 不吹不擂,Python编程【315+道题】

    写在前面 近日恰逢学生毕业季,课程后期大家“期待+苦逼”的时刻莫过于每天早上内容回顾和面试题问答部分[临近毕业每天课前用40-60分钟对之前内容回顾.提问和补充,专挑班里不爱说话就的同学回答]. 期待 ...

  3. MyEclipse CI 2018.9.0正式发布(附下载)

    MyEclipse线上特惠,在线立享专属折扣!火热开启中>> 此MyEclipse版本增加了对较新的Wildfly服务器的支持,修复了与PDT等第三方工具的兼容性,并在IDE中包含了许多错 ...

  4. vue和微信小程序的区别、比较

    链接:https://segmentfault.com/a/1190000015684864 一.生命周期 先贴两张图: vue生命周期 小程序生命周期 相比之下,小程序的钩子函数要简单得多. vue ...

  5. anu - component

    import { extend, isFn, options, clearArray, noop } from "./util"; import { CurrentOwner } ...

  6. xcode cocos2dx升级

    原文转自:http://www.codeo4.cn/archives/690 cocos2d-x的安装脚本里没有升级的脚本,我们如果在新版本安装的时候加上参数:-f 强制安装也没有能完全解决问题.新建 ...

  7. iOS-----使用NSOperation与NSOperationQueue实现多线程

    使用NSOperation与NSOperationQueue实现多线程 NSOperation与NSOperationQueue的基本理论如下. NSOperationQueue 代表一个FIFO的队 ...

  8. 读博 在没有导师PUSH的情况下该何去何从?

    读博已有两月之久,与导师也是仅有的一面之缘,短短数分钟谈话大致总结便是看看基础知识,再然后就没有什么了,突然之间有些小懵逼.突然间感慨这就是我的博士生涯的生活,这就没有啦,以后就这么过啦?在读博士之前 ...

  9. 最大似然估计和最大后验概率MAP

    最大似然估计是一种奇妙的东西,我觉得发明这种估计的人特别才华.如果是我,觉得很难凭空想到这样做. 极大似然估计和贝叶斯估计分别代表了频率派和贝叶斯派的观点.频率派认为,参数是客观存在的,只是未知而矣. ...

  10. hdu1059 dp(多重背包二进制优化)

    hdu1059 题意,现在有价值为1.2.3.4.5.6的石头若干块,块数已知,问能否将这些石头分成两堆,且两堆价值相等. 很显然,愚蠢的我一开始并想不到什么多重背包二进制优化```因为我连听都没有听 ...