JSP WEB开发(四) MVC模式

MVC模式介绍

MVC(Model-View-Controller)是一种软件设计模式,最早出现在Smalltalk语言中,后来在Java中得到广泛应用,并被Sun公司推荐为Java EE平台的设计模式。它把应用程序分成了三个核心模块:模型层、视图层和控制层。

数据模型层

表示数据封装功能,负责处理业务逻辑和数据存储。例如,在一个Web应用中,模型层可能包含数据库访问类,用来读写数据库中的数据。一个或多个JavaBean对象,用于存储数据,JavaBean主要提供简单的setXXX()方法和getXXX()方法,在这些方法中不涉及对数据的具体处理细节

public class EmployeeDAO {public List<Employee> getAllEmployees() { ... }public void addEmployee(Employee employee) { ... }public void updateEmployee(Employee employee) { ... }public void deleteEmployee(int id) { ... }
}

 视图层

表示数据显示功能,负责显示数据给用户看。例如,在一个Web应用中,视图层可能是HTML页面或者JSP文件,用来展示数据。一个或多个JSP页面,为模型提供数据显示,JSP页面主要使用 HTML标记和JavaBean标记来显示数据。

<html>
<body><table><tr><th>ID</th><th>Name</th><th>Salary</th></tr><% for (Employee e : employees) { %><tr><td><%= e.getId() %></td><td><%= e.getName() %></td><td><%= e.getSalary() %></td></tr><% } %></table>
</body>
</html>

 控制器层

表示流程控制功能,负责接收用户的请求,调用模型层的方法,然后决定如何显示数据。例如,在一个Web应用中,控制器可能是Servlet或者Action类,用来处理HTTP请求。一个或多个Servlet对象,根据视图提交的要求进行数据处理操作,并将有关的结果存储到JavaBean中,然后Servlet使用重定向或请求转发方式请求视图中的某个JSP页面更新显示 JSP中实现MVC模式

以用户注册模块来介绍在JSP中如何实现MVC模式

程序结构

bean.User:模型层,实现用户注册的业务模型及数据库操作;

public class User {private String username;private String password;public String getUsername() { return this.username; }public void setUsername(String username) { this.username = username; }public String getPassword() { return this.password; }public void setPassword(String password) { this.password = password; }public boolean register() {// 这里省略了数据库操作return true;}
}

servlet.UserServlet:控制器层的角色,用于流程控制,调度模型和选择视图展示运行结果;

public class UserServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String username = request.getParameter("username");String password = request.getParameter("password");User user = new User();user.setUsername(username);user.setPassword(password);if (user.register()) {request.setAttribute("result", "注册成功");} else {request.setAttribute("result", "注册失败");}RequestDispatcher dispatcher = request.getRequestDispatcher("result.jsp");dispatcher.forward(request, response);}
}

regist.jsp和result.jsp等页面为视图层,负责交互与结果展现
 

编程思想:

用户通过JSP页面的表单输入注册信息,表单提交后由Servlet获取表单中的数据并交由JavaBean对象储存用户数据,然后将JavaBean对象的数据保存至数据库中,最后再由Servlet通知相应的视图显示用户注册的结果。

<!-- 注册页面 -->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>用户注册</title>
</head>
<body>
<form action="UserServlet">用户名:<input type="text" name="username"><br>密码:<input type="password" name="password"><br><input type="submit" value="注册">
</form>
</body>
</html><!-- 结果页面 -->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>注册结果</title>
</head>
<body>
<%String result = (String) request.getAttribute("result");
%>
<%= result %>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/43394.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年有多少程序员转行了?

疫情后大环境下行&#xff0c;各行各业的就业情况都是一言难尽。互联网行业更是极不稳定&#xff0c;频频爆出裁员的消息。大家都说2024年程序员的就业很难&#xff0c;都很焦虑。 在许多人眼里&#xff0c;程序员可能是一群背着电脑、进入高大上写字楼的职业&#xff0c;他们…

SVN 80道面试题及参考答案(2万字长文)

目录 解释SVN的全称和主要功能。 SVN与CVS相比,有哪些主要改进? 描述SVN的工作流程。 什么是版本库(repository)?它存储了什么? 解释工作副本(working copy)的概念。 SVN如何处理文件的版本控制? SVN中的“commit”是什么意思? 解释“update”操作的作用。 如何…

Datawhale AI 夏令营 机器学习挑战赛

一、赛事背景 在当今科技日新月异的时代&#xff0c;人工智能&#xff08;AI&#xff09;技术正以前所未有的深度和广度渗透到科研领域&#xff0c;特别是在化学及药物研发中展现出了巨大潜力。精准预测分子性质有助于高效筛选出具有优异性能的候选药物。以PROTACs为例&#x…

Hi3861 OpenHarmony嵌入式应用入门--MQTT

MQTT 是机器对机器(M2M)/物联网(IoT)连接协议。它被设计为一个极其轻量级的发布/订阅消息传输 协议。对于需要较小代码占用空间和/或网络带宽非常宝贵的远程连接非常有用&#xff0c;是专为受限设备和低带宽、 高延迟或不可靠的网络而设计。这些原则也使该协议成为新兴的“机器…

AutoMQ 生态集成 Kafdrop-ui

Kafdrop [1] 是一个为 Kafka 设计的简洁、直观且功能强大的Web UI 工具。它允许开发者和管理员轻松地查看和管理 Kafka 集群的关键元数据&#xff0c;包括主题、分区、消费者组以及他们的偏移量等。通过提供一个用户友好的界面&#xff0c;Kafdrop 大大简化了 Kafka 集群的监控…

量产工具一一UI系统(四)

目录 前言 一、按钮数据结构抽象 1.ui.h 二、按键处理 1.button.c 2.disp_manager.c 3.disp_manager.h 三、单元测试 1.ui_test.c 2.上机测试 前言 前面我们实现了显示系统框架&#xff0c;输入系统框架和文字系统框架&#xff0c;链接&#xff1a; 量产工具一一显…

Redis 底层数据结构

• 简单动态字符串 • 链表 • 字典 • 跳跃表 • 整数集合 • 压缩列表 • 对象 SDS 增加了len和free属性&#xff0c;记录buf数组的使用空间和剩余空间。好处:strken函数直接读取len值&#xff0c;时间复杂度是O(1)&#xff1b;预分配buf长度&#xf…

集控中心操作台材质选择如何选择

作为集控中心的核心组成部分&#xff0c;操作台不仅承载着各种设备和工具&#xff0c;更是工作人员进行监控、操作和管理的重要平台。因此&#xff0c;选择适合的集控中心操作台材质显得尤为重要。 一、材质选择的考量因素 在选择集控中心操作台材质时&#xff0c;我们需要综合…

SpringCloud跨微服务的远程调用,如何发起网络请求,RestTemplate

在我们的业务流程之中不一定都会是自己模块查询自己模块的信息&#xff0c;有些时候就需要去结合其他模块的信息来进行一些查询完成相应的业务流程&#xff0c;但是在SpringCloud每个模块都相对独立&#xff0c;数据库也有数据隔离。所以当我们需要其他微服务模块的信息的时候&…

什么是SpringCloud Stream?

Spring Cloud Stream 是一个构建消息驱动微服务的框架&#xff0c;其基于Spring Boot来开发&#xff0c;并使用Spring Integration来连接消息代理中间件。该项目的目标是提供一套用于开发消息驱动应用的通用模型&#xff0c;并定义了用于发送和接收消息的绑定器&#xff08;Bin…

前端javascript中的排序算法之选择排序

选择排序&#xff08;Selection Sort&#xff09;基本思想&#xff1a; 是一种原址排序法&#xff1b; 将数组分为两个区间&#xff1a;左侧为已排序区间&#xff0c;右侧为未排序区间。每趟从未排序区间中选择一个值最小的元素&#xff0c;放到已排序区间的末尾&#xff0c;从…

玩转springboot之为什么springboot可以直接执行

为什么springboot可以直接执行 先看一下springboot打包生成的MANIFEST.MF内容是什么 Manifest-Version: 1.0Implementation-Title: exam-adminImplementation-Version: 1.0-SNAPSHOTStart-Class: com.zhanghe.exam.ApplicationSpring-Boot-Classes: BOOT-INF/classes/Spring-Bo…

小米采取措施禁止国行版设备安装国际版系统 刷机后将报错无法进入系统

据知名官改版系统 Xiaomi.EU 测试者 Kacper Skrzypek 发布的消息&#xff0c;小米目前已经在开机引导中新增区域检测机制&#xff0c;该机制将识别硬件所属的市场版本&#xff0c;例如中国大陆市场销售的小米即将在安装国际版系统后将无法正常启动。 测试显示该检测机制是在开…

1.DDR3 SO-DIMM 内存条硬件总结

最近在使用fpga读写DDR3&#xff0c;板子上的DDR3有两种形式与fpga相连&#xff0c;一种是直接用ddr3内存颗粒&#xff0c;另一种是通过内存条的形式与fpga相连。这里我们正好记录下和ddr3相关的知识&#xff0c;先从DDR3 SO-DIMM 内存条开始。 1.先看内存条的版本 从JEDEC下载…

四步带你实现【Open3d】--边缘检测

Open3D边缘检测技术从3D数据中精准识别并提取边界&#xff0c;对于场景解析、物体轮廓提取等任务至关重要。Open3D提供多种算法&#xff0c;帮助用户高效实现边缘检测&#xff0c;促进3D数据的深度分析和应用。 一、安装 pip install open3d # 即可 二、使用 首先&#…

《算法笔记》总结No.5——递归

一.分而治之 将原问题划分为若干个规模较小而结构与原问题相同或相似的子问题&#xff0c;然后分别解决这些子问题&#xff0c;最后合并子问题的解&#xff0c;即可得到原问题的解&#xff0c;步骤抽象如下&#xff1a; 分解&#xff1a;将原问题分解为若干子问题解决&#x…

用VLM训练实时计算机视觉模型

经过数十亿个参数训练的 AI 模型非常强大&#xff0c;但并不总是适合实时使用。但是&#xff0c;它们可以通过自动监督快速专用模型的标注来减少人力投入。 ‍ 如果你曾经构建过计算机视觉模型&#xff0c;就就会知道监督需要大量工作——人类花时间&#xff08;数小时或数天&a…

自动化测试全攻略:从入门到精通!

1、自动化测试专栏 随着技术的发展和工作需求的增长&#xff0c;自动化测试已成为软件质量保障体系中不可或缺的一环。 为了帮助广大测试工程师、开发者和对自动化测试感兴趣的读者们更好地掌握这一技能&#xff0c;今年特别推出了全新的《自动化测试全攻略&#xff1a;从入门…

scratch绘制四个三角形 2024年6月中国电子学会 图形化编程 scratch编程等级考试二级真题和答案解析

scratch绘制四个三角形 一、题目要求 2024年6月电子学会图形化编程Scratch等级考试二级真题 1、准备工作 1.保留默认角色小猫; 2.添加背景Stars。 2、功能实现 1 .隐藏角色小猫&#xff0c;设置画笔裙始位置为(0,0)&#xff0c;画笔颜色为黄色&#xff0c;画笔的粗细为5…

Scala Trait(特征)

Scala Trait(特征) Scala中的Trait是一种特殊的概念,它类似于Java中的接口,但提供了更多的功能。Trait允许我们定义一组方法,这些方法可以被子类实现,同时还可以包含方法的实现。这使得Trait既具有接口的灵活性,又具有抽象类的实用性。在本文中,我们将深入探讨Scala Tra…