Java与MVC模式开发

Java开发的核心模式 - MVC 在整个Java学习之旅中,MVC(Model-View-Controller)设计模式无疑占据着极其重要的地位,堪称理解和掌握Java项目开发精髓的钥匙。如果你未能透彻理解并熟练运用MVC设计模式,那么很可能在面对复杂的项目架构、模块划分以及代码组织等问题时感到迷茫,无法充分利用Java编程的强大功能和灵活性。 阅读详情

    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新手一点帮助,不

至于以前学的东西现在白白浪费掉.


上文有错误的地方,欢迎指正.

深入理解 MVC 模式在 Java GUI 应用开发中的应用 本文通过分析 Java Swing 应用开发中的 MVC 模式,探讨了如何使用 Wmvc 框架构建基于 Swing 的 GUI 应用程序。通过具体的温度计应用程序案例,解释了 MVC 各组件的作用和交互方式,以及如何通过代码实现模型更新和视图更新。 阅读详情

相关推荐

五子棋ai:极大极小搜索和α-β剪枝算法的思想和实现(qt和c++)(一)引言和界面设计

引言 alphaGo击败围棋冠军李世石的新闻让我对棋类博弈产生了浓厚的兴趣,无奈本人不会围棋,但算是一个五子棋业余爱好者,于是乎希望通过实现一个五子棋ai来了解相关算法和知识。 五子棋在英文中又称Gobang,five-in-row,还有两个称呼:gomoku和renju(连珠)。我来简要介绍一下区别。由于五子棋已经被机器严格证明了是一种**“不公平”的游戏,先手黑子是绝对占优的,并且先手有必胜*...

livingsu的博客 1万+

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类型以...

java_fight的博客 680

别再为3D抓取发愁了!Halcon手眼标定保姆级教程(Eye-to-Hand模式,含完整代码)

本文提供Halcon手眼标定的保姆级教程,详细讲解Eye-to-Hand模式下的3D抓取实现方法。从硬件配置、坐标系系统到标定流程和核心算法,涵盖完整代码和实战经验,帮助用户快速掌握工业自动化中的精准抓取技术。

weixin_42523711的博客 270

Jsp的el&jstl&mvc

EL01_EL表达式的概述 全称是Expression Language 主要作用 获取域对象中的数据并输出 执行运算并将结果输出 获取WEB开发中的常用对象 格式 ${} 02_EL表达式获取并输出其他类型的对象   el表达式作用: 替代jsp页面中的&lt;% 主要是用来展示数据的      1,从4个域对象中根据键的名字获取值 User u = new User("zhang...

qq_34118993的博客 378

Time-Interleaved Analog-to-Digital Converters

  这篇论文提供了时间交错模数转换器的教程回顾。在解释了偏置、增益、定时和其他不匹配对变换器性能的影响后,给出了目前解决不匹配问题的方法。论文最后总结了时间交错模数转换器的现状。 1.简介   时间交错模数转换器(ADC)将多个子ADC组合成一个ADC系统,可以实现比单独的子ADC[1]更快的采样速率。历史上,时间交错adc的主要缺点是需要紧密匹配子adc[2]的特性。近年来,由于应用需要非常宽带信号的数字化、功率高效子adc的可用性以及由深亚微米互补金属氧化物硅(CMOS)技术实现的微调技术,使得时间交错

weixin_44537056的博客 6732

汽车诊断之UDS入门-0x19 0x0A服务

0x19 0x0A解析

weixin_44842720的博客 3836

JSP&EL表达式&JSTL标签&MVC模式&三层架构

<head></head><body><%%></body>

m0_52863696的博客 199

论文阅读------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.

qq_25283239的博客 3397

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...

飞奔的嗨少 579

推荐系统[一]:超详细知识介绍,一份完整的入门指南,解答推荐系统相关算法流程、衡量指标和应用,以及如何使用jieba分词库进行相似推荐,业界广告推荐技术最新进展

推荐算法其实本质上是一种信息处理逻辑,当获取了用户与内容的信息之后,按照一定的逻辑处理信息后,产生推荐结果。热度排行榜就是最简单的一种推荐方法,它依赖的逻辑就是当一个内容被大多数用户喜欢,那大概率其他用户也会喜欢。但是基于粗放的推荐往往会不够精确,想要挖掘用户个性化的,小众化的兴趣,需要制定复杂的规则运算逻辑,并由机器完成。召回:当用户以及内容量比较大的时候,往往先通过召回策略,将百万量级的内容先缩小到百量级。

丨汀、的博客 7594

电子凸轮追剪算法深度解析:2500字图解+代码实战

工艺需求:在物料连续运动过程中完成精准切割核心矛盾:切割瞬间刀具与物料必须绝对同步传统方案:机械凸轮(结构复杂,调整困难)现代方案:电子凸轮(柔性可调,精度更高)

QQ_778132974的博客 1112

JavaWeb07(EL表达式、JSTL标签、三层架构和MVC设计模式)

Part01:EL表达式 1、EL表达式: 提供了在JSP中简化表达式的方法,让JSP代码更加简单 2、EL表达式的作用: 替换了<%= %> 3、语法: ${表达式} 4、功能: 获取域中的数据 获取简单的数据(String):${[pageScope|requestScope|sessionScope|applicationScope.]属性名} 获取复杂的数据: ...

么古的博客 303

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.

识物专栏 1800

java中mvc开发模式_MVC开发模式

1.1 MVC模式1.1.1 MVC模式简介MVC是一种架构型模式,它本身并不引入新的功能,只是用来指导我们改善应用程序的架构,使得应用的模型和视图相分离,从而得到更好的开发和维护效率。在MVC模式中,应用程序被划分成了模型(Model)、视图(View)和控制器(Controller)三个部分。其中,模型部分包含了应用程序的业务逻辑和业务数据;视图部分封装了应用程序的输出形式,也就是通常所说...

weixin_29631169的博客 716

汉书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则是

LittleYearYear的专栏 1452

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Java Web开发基础——Java Web项目中的MVC设计模式

本节将深入探讨MVC设计模式的概念、分层设计方法,以及如何在Java Web项目中通过Servlet和JSP实现MVC架构。通过分层设计和Servlet与JSP的配合,开发者可以构建出更高效、可维护的Web应用。15年互联网开发、带过10-20人的团队,多次帮助公司从0到1完成项目开发,在TX等大厂都工作过。控制器处理用户请求并调用相应的业务逻辑,同时将数据传递到视图。控制器使用Servlet实现,接收请求、调用业务逻辑并决定要返回的视图。接收用户请求并将其路由到相应的业务逻辑,同时决定要返回的视图。

好看资源网的博客 2107

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

17.MVC设计模式与Java Web应用开发实战

MVC(Model-View-Controller)是一种将程序分为模型、视图和控制器三个核心组件的设计模式。模型负责业务逻辑和数据交互,视图负责数据展示,控制器协调模型和视图,处理用户请求。MVC的核心优势包括关注点分离、可维护性、复用性和团队协作。在Java Web中,MVC可以通过Servlet、JSP和业务类等技术实现。控制器接收用户请求并调用模型处理业务逻辑,最终将数据传递给视图进行展示。MVC模式可以与前端技术结合,既支持传统的JSP渲染,也支持现代的RESTful API和AJAX调用。通过M

weixin_40593051的博客 1004

Java--MVC开发模式

Java--MVC开发模式 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! Jsp演变历史 早期只有servlet,只能使用response输出标签数据,非常麻烦 后来又jsp,简化了Servlet的开发,如果过度使用jsp,在jsp中即写大量的java代码,有写html表,造成难于维护,难于分工协作 再后来,java的web开发,借鉴mvc开发模式,使得程序的设计更加合理性 MVC开发模式 示意图 再来一张 M:Model

归子莫的博客 912

利用MVC模式开发Java应用程序

感谢原作者,把MVC的实现讲得这么清晰,原blog地址:点击打开链接 利用MVC模式开发Java应用程序 本文选自:开放系统世界 Java是一种面向对象的语言,是实现面向对象编程的强大工具。我们在实际编程中,应该运用并发挥其最大效能。但是,要利用面向对象编程思想,自己独立开发出好的Java应用程序,特别是大、中型程序,并

独行闹市无人问,青灯剑影响素琴 1352

java mvc 开发_传智播客java学习 mvc开发模式

传智播客java学习 mvc开发模式今天我学习了java 的mvc开发模式,我做了简单的笔记:1. ,id代表两层含义:a) Java代码里面的实例b) 共享作用域里面的变量c) Class要写全路径2. Param指定的是传递的参数,该参数的值是javabean属性的值,3. javabean的自...

weixin_29767975的博客 113

java web开发的mvc_Java Web开发之MVC设计模式简介

设计模式是一套被反复使用、成功的代码设计经验的总结。模式必须是典型问题(不是个别问题)的解决方案。在程序设计中,把采用模型(Model)、视图(View)、视图(Controller)的设计方式称为MVC设计模式。一、首先,给大家简述一下MVC设计模式的组成:(1) M(Model) 模型:处理业务逻辑,对应组件是JavaBean(Java类);(2) V(View)视图层:显示查询结果、收集...

weixin_42298128的博客 841

java中mvc开发模式,java之MVC开发模式

友情提醒:eclipse创建servlet不会帮你同步创建一个web.xml配置文件;所以建议使用MyEclipse!1.View层(jsp)用户名:密码:生日:爱好:看书画画玩电脑睡觉是否同意协议:同意不同意注册这是一个Jsp页面中的用户登录界面(表单)提交之后跳转到一个servlet文件(位于javaweb包下的Logservlet.java文件),用于处理表单传进来的数据。---------...

weixin_33746833的博客 360

【转】利用MVC模式开发Java应用程序[组图]

Java是一种面向对象的语言,是实现面向对象编程的强大工具。我们在实际编程中,应该运用并发挥其最大效能。但是,要利用面向对象编程思想,自己独立开 发出好的Java应用程序,非凡是大、中型程序,并不是一件简单的事情。正是基于面向对象编程思想,人们将实际中的各种应用程序,进行了大量的分析、总 结,从而归纳出许多标准的设计模式。将这些设计模式合理地运用到自己的实际项目中,可以最大限度地减少开发...

anshi5303的博客 192

Java基础教程(237)Web开发之MVC高级开发:解锁Java Web开发,MVC模式的高级精髓与实战

本文深度解析Java Web开发中MVC架构的高级应用,涵盖Spring MVC核心机制、拦截器与数据绑定优化、Restful API设计及前后端分离实践。通过一个完整的用户管理系统示例,展示如何利用注解驱动开发实现高效控制器编写、参数验证与全局异常处理,探讨Service层抽象策略和视图解析技巧,助力开发者构建可维护的高性能企业级应用。

jxf_jxfcsdn的博客 417

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...

weixin_33886150的博客 122
上一篇: 二进制转十进制的SQL函数
下一篇: 我使用的Log4j配置文件[xml版]
cheyo车油
博客等级 码龄24年 19粉丝 20原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值