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('@ ...
随机推荐
- BZOJ_2225_[Spoj 2371]Another Longest Increasing_CDQ 分治+树状数组
BZOJ_2225_[Spoj 2371]Another Longest Increasing_CDQ 分治+树状数组 Description 给定N个数对(xi, yi),求最长上升子 ...
- k8s关键性概念
1.service每个service对应一个cluster IP,cluster IP对应的服务网段最初是在配置kube-apiserver.kube-controller-manager和kube- ...
- FZU2277 Change(dfs序+树状数组)
传送门 题意 q次操作,操作有两种: 1 v x k:a[v]+=x,a[v']+=x-k(v'是v的子节点)... 2 v:查询\(a[v]mod(10^9+7)\) 分析 子节点增加的值为\(x+ ...
- hdoj5328【尺取】
现在在队内赛(灰常艾斯比的队内赛),还是来写篇题解开心一下,23333. 题意: 就是问你找出一个最长的等比数列或者等差数列 思路: 一个等差的尺取,一个等比的尺取.2333,就这么过了,具体自己写吧 ...
- hdoj1728【搜索的两种写法】
以前的一道题目,现在拿到总觉得是DFS,然后T掉就没什么想法了,很狗的看了以前的写法(以前还是看题解的AC的),是BFS,每次都要转弯,但是之前你的达到一种他走到了死路,所以才是不得不转弯,写法也是非 ...
- sql server编写通用脚本自动统计各表数据量心得
工作过程中,如果一个数据库的表比较多,手工编写统计脚本就会比较繁琐,于是摸索出自动生成各表统计数据量脚本的通用方法,直接上代码: /* 脚本来源:https://www.cnblogs.com/zha ...
- Unity陀螺仪
using UnityEngine; using System.Collections; using UnityEngine.UI; //摄像机 陀螺仪转动 public class TGyro : ...
- Mirror Number SPOJ - MYQ10
Mirror Number SPOJ - MYQ10 题意:http://blog.csdn.net/hcbbt/article/details/38349367 稍微改一下http://www.cn ...
- 生产环境中配置的samba
实验需求: 由于实验室纳新一帮新孩子,搭建samba主要是临时共享一些学习资源的,基本上大家用的都是windows.而且这个服务可以让他们在校园的里的个个角落都可以访问到,所以给挂了学校的公网,不过我 ...
- RHEL 6.5----LVS(DR)
主机名 IP 所需软件 master eth0==>192.168.30.140(Nat) eth0:1==>192.168.17.130(Nat) ipvsadm node-1 et ...