MVC之在实例中的应用
MVC模式在Java Web应用程序中的实例分析
1. 结合六个基本质量属性
1)可用性
2)可修改性
3)性能
4)安全性
5)可测试性
6)易用性
2. 分析具体功能模块的MVC设计实现(例如登录、用户权限等功能模块)。
MVC是一个设计模式,它强制性地使应用程序的输入、处理和输出分开。
显示层(View):主要负责接收Servlet传递的内容,并且调用JavaBean,将内容显示给用户。
控制层(Controller):
主要负责所有的用户请求参数,判断请求参数是否合法,根据请求的类型调用JavaBean执行操作并将最终的处理结果交由显示层进行显示。
模型层(Model): 完成一个独立的业务操作组件,一般都是以JavaBean或者EJB的形式进行定义的。
1. 定义VO类——User.java
定义登录所需属性:userid、name、password,并设置相应setting与getting方法

2. 定义JDBC数据库操作类——DatabaseConnection.java
提供数据库的连接与关闭操作

3. 定义DAO接口——IUserDAO.java
定义一个登陆验证方法即可findLogin()

4. .定义DAO实现类——UserDAOImpl.java
实现DAO接口的findLogin方法,对数据库的操作

5.定义DAO代理操作类——UserProxy.java

6.定义工厂类——DAOFactory.java
调用DAO接口,返回代理类

DAO的操作完成只是数据层的操作,下面需要编写Servlet类(控制层),在Servlet中接收客户端发来的输入数据,同时需要调用DAO,并且根据DAO的结果返回相应的信息
7.定义Servlet——LoginServlet.java
(1)通过request.getParameter()方法接收用户请求发送过来的userid与userpass两个参数
(2)对两个参数进行非空验证,若为空,则在info类集对象中添加相应错误信息;当验证通过后,程序将调用DAO进行数据层的验证,并根据DAO的返回结果来决定返回给客户端的信息;
(3)使用反射机制通过工厂类取得代理类实例,然后调用真实主题类的findLogin()方法,进行数据库的验证(判断登录用户是否数据库user表中的用户id与密码一致),并将相应成功或错误信息添加到info对象中;
(4)通过req.setAttribute(“info”,info) ;将最终响应信息request范围中;
(5)通过forward()方法跳转回相应的JSP(String path = “login.jsp” ;)进行显示

8.Servlet配置文件web.xml

9.显示层JSP——login.jsp
用户登录界面以及接收响应信息
实现控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。

10.配置web.xml

MVC之在实例中的应用的更多相关文章
- ASP.NET MVC 3和Razor中的@helper 语法
原文:http://kb.cnblogs.com/page/102191/ ASP.NET MVC 3支持一项名为"Razor"的新视图引擎选项(除了继续支持/加强现有的.aspx ...
- MVC如何在Pipeline中接管请求的?
MVC如何在Pipeline中接管请求的? 文章内容 上个章节我们讲到了,可以在HttpModules初始化之前动态添加Route的方式来自定义自己的HttpHandler,最终接管请求的,那MVC是 ...
- (转)ASP.NET MVC 3和Razor中的@helper 语法
转自:http://kb.cnblogs.com/page/102191/ ASP.NET MVC 3支持一项名为“Razor”的新视图引擎选项(除了继续支持/加强现有的.aspx视图引擎外).当编写 ...
- MVC框架以及实例(补充)
此文是MVC框架以及实例(http://www.cnblogs.com/justmaomao/p/6739065.html)的补充部分 以下简单介绍简单登录的相关内容 1)在login.jsp中待提交 ...
- ASP.NET MVC 3和Razor中的@helper
ASP.NET MVC 3支持一项名为“Razor”的新视图引擎选项(除了继续支持/加强现有的.aspx视图引擎外).当编写一个视图模板时,Razor将所需的字符和击键数减少到最小,并保证一个快速.通 ...
- [读后感]spring Mvc 教程框架实例以及系统演示下载
[读后感]spring Mvc 教程框架实例以及系统演示下载 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致&qu ...
- 【MVC 2】MVC+EF框架结构实例:注册ID号验证
导读:本篇博客,将通过一个实例,详细介绍MVC+EF的应用.原理性的东西或者说是进一步的解耦和,请看博客: [框架结构 3]MVC+EF实体框架-原理解析.在这里,仅用MVC框架和一个EF生成的Mod ...
- 在ASP.NET MVC 4 on Mono中使用OracleClient in CentOS 6.x的问题记录
在ASP.NET MVC 4 on Mono中使用OracleClient in CentOS 6.x的问题记录 前言 最近有个Web项目,业务功能不复杂,但是这个客户(某政府部门)有两个硬性要求:1 ...
- 【问题】Asp.net MVC 的cshtml页面中调用JS方法传递字符串变量参数
[问题]Asp.net MVC 的cshtml页面中调用JS方法传递字符串变量参数. [解决]直接对变量加引号,如: <button onclick="deleteProduct('@ ...
随机推荐
- ekhtml使用总结
ekhtml是一个高效SAX方式的HTML解析库. 文件说明 官网下载ekhtml-0.3.2.tar.gz文件解压后,内部包括源码.测试文件.文档.编译脚本等. 如需编译成静态库或动态库后进行集成, ...
- mysql负载均衡方案
mysql负载均衡方案 一.直接连接 数据库的读写分离方案很多,这里介绍基于mysql数据库的读写分离方案. 比较常见的读写分离方案如下: 1 基于查询分离 最简单的分离方法是将读和写分发到主和从服务 ...
- 【旧文章搬运】Windows句柄表分配算法分析(实验部分)
原文发表于百度空间,2009-03-31========================================================================== 理论结合实 ...
- python 查找IP地址归属地
#!/usr/bin/env python # -*- coding: utf-8 -*- #查找IP地址归属地 #writer by keery_log #Create time:2013-10-3 ...
- virtualBox更改虚拟机内存大小
在cmd中进入到virtualbox安装目录 查看目前的虚拟机列表: VBoxManage list vms 读取虚拟机具体信息 VBoxManage showvminfo <uuid>| ...
- Vue scrollBehavior 滚动行为
使用前端路由,当切换到新路由时,想要页面滚到顶部,或者是保持原先的滚动位置,就像重新加载页面那样. vue-router 能做到,而且更好,它让你可以自定义路由切换时页面如何滚动. 注意: 这个功能只 ...
- 51nod 1051 最大子矩阵和(DP)
题意 略 分析 一道经典的DP题,但是我弱到差点做不出来,真的垃圾 设置\(sum(i,j)代表1-i行第j列的前缀和\),然后枚举行i和行j,再枚举列k,做一遍类似一维的最大子段和即可 #inclu ...
- NOJ2026:Keroro侵略地球(01字典树)
传送门 题意 略 分析 将n个数插入字典树中,m次查询,取最大值,复杂度\(O(mlogn)\) trick 1.注意题目给的空间,开40刚刚够(62852K) 2.作为01字典树的模板保存了 代码 ...
- 51nod 1276 【离线化】
思路1.: 离线处理: 具体就是把岛屿离线然后按照高度排序,把query按照从高到低排序,然后每次query只要从最高的岛屿开始找起,判断条件:如果他旁边都是没有被找过的(也就是默认是海),那么数量+ ...
- HDOJ4857【拓扑排序】
首先 CLJ ORZ 这道题做了两次,第一次瞎搞... 第二次,好吧,骄傲地说水过... 题意:不说了: 思路: 题目默认是小的在前面,那么就是反向建图,每次排序拿大的出来: 第一次做的时候,我记得我 ...