一、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

转载于:https://www.cnblogs.com/chuijingjing/p/9772590.html

9.MVC模式 -- 改造源代码相关推荐

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

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

  2. spring-mvc教程_使用MVC模式制作游戏-教程和简介

    spring-mvc教程 游戏开发中一种有用的体系结构模式是MVC(模型视图控制器)模式. 它有助于分离输入逻辑,游戏逻辑和UI(渲染). 在任何游戏开发项目的早期阶段,它的用途很快就会被注意到,因为 ...

  3. 使用MVC模式制作游戏-教程和简介

    游戏开发中一种有用的体系结构模式是MVC(模型视图控制器)模式. 它有助于分离输入逻辑,游戏逻辑和UI(渲染). 在任何游戏开发项目的早期阶段,其实用性很快就会被注意到,因为它允许快速更改内容,而无需 ...

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

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

  5. 小汤学编程之JavaEE学习day03——JSP组成结构、JSP原理、JSP生命周期、JSP九大内置对象、四大作用域、JSP的MVC模式

    一.JSP组成结构 二.JSP的原理 1.JSP的运行原理     2.分析JSP所生成的Servlet代码     3.JSP的执行过程 三.JSP生命周期 四.JSP九大内置对象 五.JSP四大作 ...

  6. php下的ssm模式,编码风格:Mvc模式下SSM环境,代码分层管理

    一.分层策略 MVC模式与代码分层策略,MVC全名是ModelViewController即模型-视图-控制器,作为一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到 ...

  7. MVC模式和DDD模式对比,谁才是银弹?

    目录 MVC模式和DDD模式对比,谁才是银弹? 从DDD的角度看MVC架构的问题 第一层:初出茅庐 第二层:草船借箭(战术设计) 第三层:运筹帷幄(战略设计) DDD的不足 总结 MVC模式和DDD模 ...

  8. mvc原理和mvc模式的优缺点

    mvc原理和mvc模式的优缺点 一.mvc原理    mvc是一种程序开发设计模式,它实现了显示模块与功能模块的分离.提高了程序的可维护性.可移植性.可扩展性与可重用性,降低了程序的开发难度.它主要分 ...

  9. JSPssh物流便利店管理系统SSH 框架 MVC 模式 mysql数据库

    一.源码特点     JSPssh物流便利店管理系统 是一套完善的WEB设计系统,对理解JSP java 编程开发语言有帮助,系统采用ssh框架 MVC模式进行开发,系统具有完整的源代码和数据库,系统 ...

  10. ssh名片管理系统ssh框架 MVC模式myeclipse开发

    一.源码特点     JSPssh名片管理系统 是一套完善的WEB设计系统,对理解JSP java 编程开发语言有帮助,系统采用ssh框架 MVC模式进行开发,系统具有完整的源代码和数据库,系统主要采 ...

最新文章

  1. 云计算的7种变化方式
  2. DELL备份恢复系统的小工具 Dell DataSafe Local Backup
  3. zcu102 hdmi example(一)
  4. [MyBatisPlus]通用枚举
  5. 技术干货 | 深度解构 Android 应用面临紧急发版时的救星方案:mPaaS 热修复——DexPatch
  6. 输入输出流_内部存储·
  7. Lvs+Keepalived高可用负载均衡配置
  8. httpclient: 设置连接池及超时配置,请求数据:PoolingHttpClientConnectionManager
  9. 四十二、在线预览pdf文件
  10. Android 自定义viewGroup实现淘宝二楼及处理多指触控事件
  11. C语言编程奖学金评定,C语言计算奖学金总额
  12. 优秀笔记课件——WORD使用技巧
  13. 树莓派学习笔记(九)树莓派Linux内核开发
  14. 将视频分割成多张图片和多张图片生成视频
  15. java代码(ascii与字母互转)
  16. Gym - 102263 B - Road to Arabella
  17. Shiro学习(2)身份验证
  18. ASP.NET教育管理系统源码【源码分享】
  19. 作为一个码农,发发牢骚
  20. qq邮件引流需要注意什么?QQ邮件群发推广的技巧

热门文章

  1. 由繁到简,开源网络情报系统如何做“减法”?
  2. PMOS NMOS电流流向及符号图
  3. Android 分享到Instagram
  4. 微信视频号下载视频工具3.0,实测有效免费保存!
  5. 【八种基本分析方法】
  6. 牛客刷题系列(C++)——详解MGJ8 链表合并(目前内存开销最小)
  7. Mybatis学习整理
  8. python自然语言处理实战源代码下载_NLP学习:涂铭《Python自然语言处理实战核心技术与算法》PDF+源代码...
  9. 计算机毕业设计Python+uniapp鲸落图书商城小程序LW(小程序+源码+LW)
  10. GNSS原理及技术(一)——GNSS现状与发展