Title: Java与MVC模式开发
Author: cheyo@JMU
From: telnet://bbs.jmu.edu.cn http://bbs.jmu.edu.cn
E-mail: cheyocn at hotmail dot com
Date: Tue Oct 4 2005
就自己的理解与体会,谈谈Java中的MVC模式开发,希望对初学Java的朋友有点帮助.
就目前而言,Java主要用于Web开发,即J2EE应用部分,说得难听点,从表面来看就是做
网站,当然,这种网站不是简简点点由一些HTML堆成的.
就我看来,目前在厦门招的Java程序员,主要也是从事MVC模式的开发居多.
以下以一个在线图书借阅系统为例.
1. 问题出现
如果是要开发一个在线图书借阅系统,比如说是集美大学图书馆的借阅系统,这个系统
希望被做成B/S模式的,用户只要有浏览器就可以使用这个系统.
那么,在开发语言方面,我们可以选择使用纯JSP来开发.
OK. 如果你选用纯JSP来开发,那么对于一个图书查询功能来说,你可能会这样实现:
在一个JSP页面中,比如叫BookSearch.jsp中,你放置了一个表单,用户在这个页面中
填写图书查询关键字,并提交这个表单,这个表单提交到自身页面,即BookSearch.jsp
进行处理.BookSearch.jsp会在初始化页面时进行判断,如果有接收到用户提交的查询
关键字,则查询数据库,并把查询结果显示出来.如果没有,则只显示图书查询表单.即,
整个完整的业务功能流程是:
(提交查询请求) (拦截请求)
BookSearch.jsp <----> BookSearch.jsp
(显示查询结果) (执行业务逻辑)
如果你用这种方式完成了整个系统.那么,如果现在客户----集大图书馆希望除了B/S外,
还有个客户端,即桌面应用程序Application, 你便会发现,只为了多一个Application客
户端,你却基本上要重写这个系统.因为你之前写的那些jsp页面对于你写Application没
有什么帮助,代码无法重用.
2. 什么是MVC? 为什么要使用MVC?
如果我们使用MVC模式来开发,那么,以上代码无法重用的问题便迎刃而解.
M: Model,即模型,负责业务逻辑部分,含执行业务逻辑部分和业务对象部分,一般为普通
Java类或EJB
V: View,即视图,负责呈现在用户面前的部分,一般为JSP页面.
C: Controller,即控制器,负责整个流程的控制,一般为Servlet.
MVC就是视图、控制器、模型相分离的一种开发模式。
如果用MVC模式来实现图书查询功能,那便会是这样的:
在一个JSP页面中用户提交图书查询请求,Servlet拦截这个请求,并转发到相应的Java类/
EJB进行图书信息查询. 执行完图书查询后,返回查询结果给Servlet. Servlet把查询结果
传给JSP,JSP显示查询结果.
即流程为:
(提交查询请求) (拦截请求/C) (执行业务逻辑)
BookSearch.jsp(V) <----> Servlet(C) <---> 普通Java类/EJB(M)
(显示查询结果) (转发到JSP)
如果是基于以上MVC模式实现,那么,如果此时希望系统多一个Application的客户端,
则只需要添加C和V部分即可,M部分可以代码重用,大大提高工作效率.
除了代码重用外,MVC还可以让逻辑更加清晰,各个组件都在实现什么功能非常清楚----
V作视图,C作控制器,M执行业务逻辑,这样对开发效率也有非常大的提高.试想一下,如果
是像以上的纯JSP实现方式那样,把MVC混合在一个.jsp中,那么调试维护都是很困难的.
3. MVC模式的具体实现
在具体的实现上,View一般为JSP页面,它包含提交请求的页面(图书查询页面)和业务逻
辑执行结果的显示页面(查询结果页面).这两个页面,有时可以集合成一个页面.JSP页面
提交业务逻辑执行请求给Servlet,Servlet从普通Java类/EJB取得返回结果并返回给JSP,
组织返回结果显示给用户. JSP只负责显示信息,不处理业务逻辑.
在JSP页面中,我们可以使用scriptlet,即嵌入在jsp页面中的java代码,控制组织显示界面
.
但我认为这不是一个好的选择.因为,如果网页美工与Java程序员不是同一个人,而且美工
不懂Java(虽然俺还没有真的见过这种情况,现在很多小公司都是前后台同一个人,即网页
美工同时也是Java程序员),那么,面对在.jsp页面中的一大堆Java代码,美工人员会很头疼
.
而且,假设前后台开发人员不分离,那么在一个页面中调试与维护一个嵌入大量代码的jsp
页面也是很麻烦的, 比如.jsp中的
<%
}
%>
多了,总让人看了头晕. 更好的选择是使用TabLib,如JSTL。 使用JSTL,可以把形如
<%
if() {
....
}
%> 的scriptlet变成
<c:if ****>
之类的标签,这样对于jsp代码的阅读、调试与维护非常有利。如果在JSTL的基础上加上JS
P2.0
的表达式语言(Expression Language),则更进一步有利于写出清晰的JSP代码. 以下是一
个
JSTL+ EL的例子:
<c:if test="${!empty NotFoundMsg}">
<c:out value="<BR><font color=red>${NotFoundMsg}</font><BR>"
escapeXml="false" default=""/>
</c:if>
(如果参数NotFoundMsg不为空,则显示参数NotFoundMsg的内容).
以下提到的Struts中,有非常丰富的标签,那些标签基本上都覆盖了JSTL.
另外,在jsp页面中嵌入大量的CSS和Javascript代码,我认为也不是一个好的选择,同样的,
我认为分离和CSS和Javascript是更好的选择,分离出他们二者会让jsp代码各清晰,也各有
利于CSS代码和Javascript代码的复用.
Controller则一般为Servlet, Servlet拦截JSP提交的请求,并把请求转发到相应的Java
类/EJB上进行执行业务逻辑, 然后把Java类返回的结果,传给JSP.
Model一般为普通Java类/EJB,实现业务逻辑.这些普通Java类/EJB接收Servlet传过来的参
数,并由此执行业务逻辑,并把结果返回给Servlet. 目前, 大部分的中小项目都不使用EJB
了,EJB似乎越来越冷,甚至现在有一个口号叫: "J2EE without EJB",不过,以前EJB是J2EE
的核心.与EJB越来越冷相对的,Hibernate等ORM框架正在越来越热.
除了最原始的JSP+Servlet+Java类的实现外,现在还有很多的MVC框架,像Struts,WebWorks
等.其中,在中国现在最流行的是Struts框架,现在已经有越来越多的公司用Struts来进行
开发了.
OK, 差不多聊到这. 一毕业了就没再接触Java了,以前学的也逐渐淡忘了, 写这些的时候,
就发现很多东西已经记不得了.
今天写这些的目的之一就是希望在以前学的被忘掉前,写出来,能给Java新手一点帮助,不
至于以前学的东西现在白白浪费掉.
上文有错误的地方,欢迎指正.
相关推荐
五子棋ai:极大极小搜索和α-β剪枝算法的思想和实现(qt和c++)(一)引言和界面设计
引言 alphaGo击败围棋冠军李世石的新闻让我对棋类博弈产生了浓厚的兴趣,无奈本人不会围棋,但算是一个五子棋业余爱好者,于是乎希望通过实现一个五子棋ai来了解相关算法和知识。 五子棋在英文中又称Gobang,five-in-row,还有两个称呼:gomoku和renju(连珠)。我来简要介绍一下区别。由于五子棋已经被机器严格证明了是一种**“不公平”的游戏,先手黑子是绝对占优的,并且先手有必胜*...
jsp,MVC开发模式,EL表达式,JSTL标签的使用说明
1. JSP: 2. MVC开发模式 3. EL表达式 4. JSTL标签 jsp 指令 * 作用:用于配置JSP页面,导入资源文件 * 格式: <%@ 指令名称 属性名1=属性值1 属性名2=属性值2 … %> * 分类: 1. page : 配置JSP页面的 * contentType:等同于response.setContentType() 1. 设置响应体的mime类型以...
别再为3D抓取发愁了!Halcon手眼标定保姆级教程(Eye-to-Hand模式,含完整代码)
本文提供Halcon手眼标定的保姆级教程,详细讲解Eye-to-Hand模式下的3D抓取实现方法。从硬件配置、坐标系系统到标定流程和核心算法,涵盖完整代码和实战经验,帮助用户快速掌握工业自动化中的精准抓取技术。
Jsp的el&jstl&mvc
EL01_EL表达式的概述 全称是Expression Language 主要作用 获取域对象中的数据并输出 执行运算并将结果输出 获取WEB开发中的常用对象 格式 ${} 02_EL表达式获取并输出其他类型的对象 el表达式作用: 替代jsp页面中的<% 主要是用来展示数据的 1,从4个域对象中根据键的名字获取值 User u = new User("zhang...
Time-Interleaved Analog-to-Digital Converters
这篇论文提供了时间交错模数转换器的教程回顾。在解释了偏置、增益、定时和其他不匹配对变换器性能的影响后,给出了目前解决不匹配问题的方法。论文最后总结了时间交错模数转换器的现状。 1.简介 时间交错模数转换器(ADC)将多个子ADC组合成一个ADC系统,可以实现比单独的子ADC[1]更快的采样速率。历史上,时间交错adc的主要缺点是需要紧密匹配子adc[2]的特性。近年来,由于应用需要非常宽带信号的数字化、功率高效子adc的可用性以及由深亚微米互补金属氧化物硅(CMOS)技术实现的微调技术,使得时间交错
汽车诊断之UDS入门-0x19 0x0A服务
0x19 0x0A解析
JSP&EL表达式&JSTL标签&MVC模式&三层架构
<head></head><body><%%></body>
论文阅读------Exposure Fusion: A Simple and Practical Alternative to High Dynamic Range Photography
Mertens T, Kautz J, Van Reeth F. Exposure fusion: A simple and practical alternative to high dynamic range photography[C]//Computer graphics forum. Oxford, UK: Blackwell Publishing Ltd, 2009, 28(1): 161-171. 摘要 本文提出了一种将包围曝光的序列融合到高质量图像中的技术,而无需先转换为高动态范围(HD.
JavaWeb学习的第十六天(JSP_MVC开发模式_EL表达式_JSTL的使用)
一、案例引入 1.通过Servlet实现连接数据库,响应查询的内容给浏览器 package com.bianyiit.servlet; import com.bianyiit.dao.UserDao; import com.bianyiit.domian.User; import javax.servlet.ServletException; import javax.servlet.anno...
推荐系统[一]:超详细知识介绍,一份完整的入门指南,解答推荐系统相关算法流程、衡量指标和应用,以及如何使用jieba分词库进行相似推荐,业界广告推荐技术最新进展
推荐算法其实本质上是一种信息处理逻辑,当获取了用户与内容的信息之后,按照一定的逻辑处理信息后,产生推荐结果。热度排行榜就是最简单的一种推荐方法,它依赖的逻辑就是当一个内容被大多数用户喜欢,那大概率其他用户也会喜欢。但是基于粗放的推荐往往会不够精确,想要挖掘用户个性化的,小众化的兴趣,需要制定复杂的规则运算逻辑,并由机器完成。召回:当用户以及内容量比较大的时候,往往先通过召回策略,将百万量级的内容先缩小到百量级。
电子凸轮追剪算法深度解析:2500字图解+代码实战
工艺需求:在物料连续运动过程中完成精准切割核心矛盾:切割瞬间刀具与物料必须绝对同步传统方案:机械凸轮(结构复杂,调整困难)现代方案:电子凸轮(柔性可调,精度更高)
JavaWeb07(EL表达式、JSTL标签、三层架构和MVC设计模式)
Part01:EL表达式 1、EL表达式: 提供了在JSP中简化表达式的方法,让JSP代码更加简单 2、EL表达式的作用: 替换了<%= %> 3、语法: ${表达式} 4、功能: 获取域中的数据 获取简单的数据(String):${[pageScope|requestScope|sessionScope|applicationScope.]属性名} 获取复杂的数据: ...
Imagenet数据集1000类别中英文
英文 {0: 'tench, Tinca tinca', 1: 'goldfish, Carassius auratus', 2: 'great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias', 3: 'tiger shark, Galeocerdo cuvieri', 4: 'hammerhead, hammerhead shark', 5: 'electric ray, cram.
java中mvc开发模式_MVC开发模式
1.1 MVC模式1.1.1 MVC模式简介MVC是一种架构型模式,它本身并不引入新的功能,只是用来指导我们改善应用程序的架构,使得应用的模型和视图相分离,从而得到更好的开发和维护效率。在MVC模式中,应用程序被划分成了模型(Model)、视图(View)和控制器(Controller)三个部分。其中,模型部分包含了应用程序的业务逻辑和业务数据;视图部分封装了应用程序的输出形式,也就是通常所说...
汉书HE8,好用的汇编代码编写工具
汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大
IMSL CNL 7.0.0 (x86-64)Crack
IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件
基于MVC模式的JAVA开发
MVC(Model View Control)模型-视图-控制器 MVC设计模式" title="java MVC设计模式" style="margin:0px; padding:0px; border:0px; list-style:none"> 一、MVC与模板概念的理解 MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是
数学建模模型总结
这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!
Java Web开发基础——Java Web项目中的MVC设计模式
本节将深入探讨MVC设计模式的概念、分层设计方法,以及如何在Java Web项目中通过Servlet和JSP实现MVC架构。通过分层设计和Servlet与JSP的配合,开发者可以构建出更高效、可维护的Web应用。15年互联网开发、带过10-20人的团队,多次帮助公司从0到1完成项目开发,在TX等大厂都工作过。控制器处理用户请求并调用相应的业务逻辑,同时将数据传递到视图。控制器使用Servlet实现,接收请求、调用业务逻辑并决定要返回的视图。接收用户请求并将其路由到相应的业务逻辑,同时决定要返回的视图。
文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况
主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。
17.MVC设计模式与Java Web应用开发实战
MVC(Model-View-Controller)是一种将程序分为模型、视图和控制器三个核心组件的设计模式。模型负责业务逻辑和数据交互,视图负责数据展示,控制器协调模型和视图,处理用户请求。MVC的核心优势包括关注点分离、可维护性、复用性和团队协作。在Java Web中,MVC可以通过Servlet、JSP和业务类等技术实现。控制器接收用户请求并调用模型处理业务逻辑,最终将数据传递给视图进行展示。MVC模式可以与前端技术结合,既支持传统的JSP渲染,也支持现代的RESTful API和AJAX调用。通过M
Java--MVC开发模式
Java--MVC开发模式 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! Jsp演变历史 早期只有servlet,只能使用response输出标签数据,非常麻烦 后来又jsp,简化了Servlet的开发,如果过度使用jsp,在jsp中即写大量的java代码,有写html表,造成难于维护,难于分工协作 再后来,java的web开发,借鉴mvc开发模式,使得程序的设计更加合理性 MVC开发模式 示意图 再来一张 M:Model
利用MVC模式开发Java应用程序
感谢原作者,把MVC的实现讲得这么清晰,原blog地址:点击打开链接 利用MVC模式开发Java应用程序 本文选自:开放系统世界 Java是一种面向对象的语言,是实现面向对象编程的强大工具。我们在实际编程中,应该运用并发挥其最大效能。但是,要利用面向对象编程思想,自己独立开发出好的Java应用程序,特别是大、中型程序,并
java mvc 开发_传智播客java学习 mvc开发模式
传智播客java学习 mvc开发模式今天我学习了java 的mvc开发模式,我做了简单的笔记:1. ,id代表两层含义:a) Java代码里面的实例b) 共享作用域里面的变量c) Class要写全路径2. Param指定的是传递的参数,该参数的值是javabean属性的值,3. javabean的自...
java web开发的mvc_Java Web开发之MVC设计模式简介
设计模式是一套被反复使用、成功的代码设计经验的总结。模式必须是典型问题(不是个别问题)的解决方案。在程序设计中,把采用模型(Model)、视图(View)、视图(Controller)的设计方式称为MVC设计模式。一、首先,给大家简述一下MVC设计模式的组成:(1) M(Model) 模型:处理业务逻辑,对应组件是JavaBean(Java类);(2) V(View)视图层:显示查询结果、收集...
java中mvc开发模式,java之MVC开发模式
友情提醒:eclipse创建servlet不会帮你同步创建一个web.xml配置文件;所以建议使用MyEclipse!1.View层(jsp)用户名:密码:生日:爱好:看书画画玩电脑睡觉是否同意协议:同意不同意注册这是一个Jsp页面中的用户登录界面(表单)提交之后跳转到一个servlet文件(位于javaweb包下的Logservlet.java文件),用于处理表单传进来的数据。---------...
【转】利用MVC模式开发Java应用程序[组图]
Java是一种面向对象的语言,是实现面向对象编程的强大工具。我们在实际编程中,应该运用并发挥其最大效能。但是,要利用面向对象编程思想,自己独立开 发出好的Java应用程序,非凡是大、中型程序,并不是一件简单的事情。正是基于面向对象编程思想,人们将实际中的各种应用程序,进行了大量的分析、总 结,从而归纳出许多标准的设计模式。将这些设计模式合理地运用到自己的实际项目中,可以最大限度地减少开发...
Java基础教程(237)Web开发之MVC高级开发:解锁Java Web开发,MVC模式的高级精髓与实战
本文深度解析Java Web开发中MVC架构的高级应用,涵盖Spring MVC核心机制、拦截器与数据绑定优化、Restful API设计及前后端分离实践。通过一个完整的用户管理系统示例,展示如何利用注解驱动开发实现高效控制器编写、参数验证与全局异常处理,探讨Service层抽象策略和视图解析技巧,助力开发者构建可维护的高性能企业级应用。
java mvc_java之MVC开发模式
友情提醒:eclipse创建servlet不会帮你同步创建一个web.xml配置文件;所以建议使用MyEclipse!1.View层(jsp)1 2 用户名:3 密码:4 生日:5 爱好:看书6 画画7 玩电脑8 睡觉9 是否同意协议:同意10 不同意11 注册12 这是一个Jsp页面中的用户登录界面(表单)提交之后跳转到一个servlet文件(位于java...
1万+



被折叠的 条评论
为什么被折叠?



