JSP的MVC设计模式

article/2025/8/23 8:50:16

文章目录

  • 一. MVC模式概念
    • 1. M:Model(模型)
    • 2. V:View(视图)
    • 3. C:Controller(控制器):
    • 4. 图示理解
  • 二. MVC案例
    • 1. WebContent内容
    • 2. servlet包内容
    • 3. entity包内容
    • 4. dao包内容
  • 三. 三层架构
    • 1. 概述
    • 2. 组成
      • 2.1 表示层(USL,User Show Layer)
      • 2.2 业务逻辑层(BLL,Business Logic Layer)
      • 2.3 数据访问层(DAL,Data Access Layer)
      • 2.4 三层架构理解
      • 2.5 三层架构与MVC进行对比
    • 3. 案例:学生管理系统

一. MVC模式概念

1. M:Model(模型)

功能:

一个功能

实现:

使用Javabean来实现

2. V:View(视图)

功能:

用于展示、以及与用户交互

实现:

使用HTML、js、css、jsp、jQuery等前端技术实现

3. C:Controller(控制器):

功能:

接受请求,将请求跳转到模型进行处理;
模型处理完毕后,再将处理的结果返回给请求处

实现:

可以使用jsp实现,但是不推荐
一般建议使用Servlet实现控制器

4. 图示理解

实用角度理解:
在这里插入图片描述
流程控制角度理解:
在这里插入图片描述

二. MVC案例

MVC思想进行登录验证

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1. WebContent内容

login.jsp<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录</title>
</head>
<body><form action="LoginServlet" method="post">用户名:<input type="text" name="uname"><br>密码:<input type="password" name="upwd"><br><input type="submit" value="登录"></form>
</body>
</html>

2. servlet包内容

LoginServlet.javapackage servlet;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import dao.LoginDao;
import entity.Login;//控制器层:接受view层的请求,并分发给Model处理
public class LoginServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//处理登录请求request.setCharacterEncoding("utf-8");//统一编码//接受用户名和密码String name = request.getParameter("uname");String pwd = request.getParameter("upwd");//将名字和密码封装为一个JavabeanLogin login = new Login(name,pwd);	//存放用户名和密码//将封装的login传递到登录功能LoginDao里面//调用模型层的登录功能int result = LoginDao.login(login);//对返回值进行处理if(result>0) {	//登录成功response.sendRedirect("welcome.jsp");}else {	//登录失败,重新登录response.sendRedirect("login.jsp");}}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

3. entity包内容

Login.javapackage entity;public class Login {private int fd_number;private String fd_name;private String fd_password;public Login() {}public Login(String fd_name, String fd_password) {this.fd_name = fd_name;this.fd_password = fd_password;}public Login(int fd_number, String fd_name, String fd_password) {this.fd_number = fd_number;this.fd_name = fd_name;this.fd_password = fd_password;}public int getFd_number() {return fd_number;}public void setFd_number(int fd_number) {this.fd_number = fd_number;}public String getFd_name() {return fd_name;}public void setFd_name(String fd_name) {this.fd_name = fd_name;}public String getFd_password() {return fd_password;}public void setFd_password(String fd_password) {this.fd_password = fd_password;}}

4. dao包内容

LoginDao.javapackage dao;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;import entity.Login;//模型层:用于处理登录操作(查询数据库)
public class LoginDao {public static int login(Login login) {	//登录
//		boolean flag = false; 	//登录标识:默认登录失败int flag = -1;	//-1:表示系统异常,0:用户名或密码有误,1:登录成功int result = -1;Connection connection = null;PreparedStatement pstmt = null;ResultSet rs = null;try {Class.forName("com.mysql.cj.jdbc.Driver");connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/studentdb?serverTimezone=GMT%2B8","root","root");String sql = "select count(*) from fd_students where fd_name =? and fd_password=?";pstmt = connection.prepareStatement(sql);pstmt.setString(1, login.getFd_name());pstmt.setString(2, login.getFd_password());rs = pstmt.executeQuery();if(rs.next()) {result = rs.getInt(1);}if(result>0){return 1;}else {return 0;	//登录失败(用户名或密码有误)}} catch (ClassNotFoundException e) {e.printStackTrace();return -1;	//登录失败,系统异常} catch (SQLException e) {e.printStackTrace();return -1;	//登录失败,系统异常} catch(Exception e) {e.printStackTrace();return -1;	//登录失败,系统异常}finally {try {if(rs!=null) rs.close();if(pstmt!=null) pstmt.close();if(connection!=null) connection.close();} catch (SQLException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}}
}

三. 三层架构

1. 概述

与MVC设计模式的目标一致:都是为了解耦合,提高代码复用,
区别:二者对项目理解的角度不同

2. 组成

2.1 表示层(USL,User Show Layer)

又叫View视图层

前台代码:对应于MVC中的View:用于和用户交互,界面的显示

实现技术:jsp、js、html、css、jquery等web前端技术
代码位置:webcontent

后代代码:对应于MVC中的Controller,用于控制跳转、调用业务逻辑层

实现技术:Servlet(SpringMVC、Structs2)
代码位置:位于xxx.servlet包中

2.2 业务逻辑层(BLL,Business Logic Layer)

又叫Service层

接收表示层的请求,调用
组装数据访问层,带逻辑性的操作,(增删改查,删除:先查+删除)

代码位置:xxx.service包

2.3 数据访问层(DAL,Data Access Layer)

又叫Dao层

直接访问数据库操作,原子性的操作(增删改查)

代码位置:xxx.dao包

2.4 三层架构理解

在这里插入图片描述
三层间关系:

上层将请求传递给下层,下层处理后,返回给上层。
上层依赖于下层,依赖:代码的理解,就是持有成员变量,或者理解为:有A的前提 是必须先有B(先有数据库,才可能有DAO层,DAO依赖于数据库)
在这里插入图片描述
建议:
Servlet:一个servlet对应于一个功能,因此 如果有增删改查4个功能,则需要创建4个Servlet

2.5 三层架构与MVC进行对比

在这里插入图片描述

3. 案例:学生管理系统

增加学生信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://chatgpt.dhexx.cn/article/Nk0Aa7XB.shtml

相关文章

MVC设计模式学习(一)

笔者对于MVC也是初学&#xff0c;写这篇文章的主要目的是方便自己去理解MVC的相关内容&#xff0c;所以有些描述并不是那么专业和全面&#xff0c;请多多包涵。 一、MVC设计模式概述 MVC全名是Model View Controller&#xff0c;是模型(model)&#xff0d;视图(view)&#xff…

MVC设计模式含义和优点

MVC模式&#xff08;Model-View-Controller&#xff09;是 软件工程 中的一种 软件架构 模式&#xff0c;把软件系统分为三个基本部分&#xff1a;模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和控制器&#xff08;Controller&#xff09;。 MVC模…

什么是MVC设计模式

直接上图&#xff0c;其中model 和view大家经常写&#xff0c;就不说了 有人可能并不清楚controller 到底是啥&#xff0c;其实就是经常写的 data source ,delegate,outlet什么的 先撇开那些乱七八糟的箭头单看他们之间的分界线&#xff0c;view与controller、model与controll…

MVC设计模式详解

MVC(Model View Controller)模型(model)&#xff0d;视图(view)&#xff0d;控制器(controller)&#xff1a; MVC本来是存在于Desktop程序中的&#xff0c;M是指数据模型&#xff0c;V是指用户界面&#xff0c;C则是控制器。使用MVC是将M和V的实现代码分离&#xff0c;从而使同…

MVC 设计模式概述

(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53292312) 1、MVC设计模式: 如图所示,MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型 (Model)、视图(View)和控制器(Contr…

mvc设计模式与三层架构

mvc与三层架构 1.什么是mvc设计模式 写 Java Web 项⽬时会发现&#xff0c;一个中型或者大型项目随着代码的增多&#xff0c;会发现&#xff1a;代码既可以写在 src目 录下&#xff0c;也可以写在WebContent目 录下。 src 下可以建很多包&#xff0c; WebContent 下可以建很多…

随机游走模型

6.2.1 随机游走模型&#xff08;Random Surfer Model&#xff09; 《这就是搜索引擎&#xff1a;核心技术详解》第6章链接分析&#xff0c;本章主要介绍一些著名的链接分析方法。本节为大家介绍随机游走模型&#xff08;Random Surfer Model&#xff09;。 6.2 两个概念模型及算…

图嵌入表示学习—Node Embeddings随机游走

Random Walk Approaches for Node Embeddings 一、随机游走基本概念 想象一个醉汉在图中随机的行走&#xff0c;其中走过的节点路径就是一个随机游走序列。 随机行走可以采取不同的策略&#xff0c;如行走的方向、每次行走的长度等。 二、图机器学习与NLP的关系 从图与NLP的…

图机器学习——2.1 节点嵌入:基于随机游走

嵌入&#xff08;embedding&#xff09;方法是目前文本分析&#xff0c;知识图谱相关中非常常见的一种算法。其为表示学习的一类方法&#xff0c;可以自动地从数据中学习“有用”的特征&#xff0c;并可以直接用于后续的具体任务。后面学习的相关嵌入学习均为表示学习中的内容。…

Python模拟随机游走

随机游走模型由首先由爱因斯坦在1926年以数学方式描述。由于自然界中的许多实体会以不可预知的方式移动&#xff0c;因此随机游走模型用来描述这种不稳定的移动。在这种移动模型中&#xff0c;移动节点随机选择一个方向和速度来从当前位置移动到新的位置。下面展示一维和多维情…

Python基于随机游走模型的PageRank算法及应用

资源下载地址&#xff1a;https://download.csdn.net/download/sheziqiong/86812933 资源下载地址&#xff1a;https://download.csdn.net/download/sheziqiong/86812933 基于随机游走模型的 PageRank 算法及应用 一、课题背景介绍 1.1 随机游走模型 随机游走也称随机漫步&…

图——随机游走算法

文章目录 推荐基本概念PageRankPersonalRankTextRankSimRank 推荐基本概念 其中用户user[A,B,C],物品item[a,b,c,d]&#xff0c;用户和物品有以下的关系 上述便是一个典型的二分图&#xff0c;我们用G(V,E)来表示&#xff0c;其中V为用户user和物品item组成的顶点集即[A,B,C,…

python二维随机游走_Python模拟随机游走图形效果示例

本文实例讲述了Python模拟随机游走图形效果。分享给大家供大家参考,具体如下: 在python中,可以利用数组操作来模拟随机游走。 下面是一个单一的200步随机游走的例子,从0开始,步长为1和-1,且以相等的概率出现。纯Python方式实现,使用了内建的 random 模块: # 随机游走 i…

随机游走 推荐系统论文阅读

emmmm本篇博客主要写了&#xff0c;自己阅读的一些论文&#xff0c;做了一些笔记&#xff0c;主要是记录。 基于深度随机游走的协同过滤推荐算法_刘靖凯 推荐算法&#xff1a;召回和排序 召回步骤常用的算法有协同过滤算法、隐语义算法 常用的协同过滤算法有基于用户的协同过…

理解随机游走

随机游走 基本思想 从一个或一系列顶点开始遍历一张图。在任意一个顶点&#xff0c;遍历者将以概率1-a游走到这个顶点的邻居顶点&#xff0c;以概率a随机跳跃到图中的任何一个顶点&#xff0c;称a为跳转发生概率&#xff0c;每次游走后得出一个概率分布&#xff0c;该概率分布…

随机游走问题

随机游走指的是在一个点以等可能的概率走向下一个点。 问题1&#xff1a; Link:https://www.luogu.com.cn/problem/P3232 题意&#xff1a;这道题其实相当于求每条边经过的期望次数。 思路&#xff1a;每条边经过的期望次数不好算&#xff0c;我们想到点经过的期望次数。于…

随机游走 Random Walk

随机游走&#xff08;英语&#xff1a;Random Walk&#xff0c;缩写为 RW&#xff09;&#xff0c;是一种数学统计模型&#xff0c;它是一连串的轨迹所组成&#xff0c;其中每一次都是随机的。[1][2]它能用来表示不规则的变动形式&#xff0c;如同一个人酒后乱步&#xff0c;所…

时间序列:时间序列模型---随机游走过程(The Random Walk Process)

本文是Quantitative Methods and Analysis: Pairs Trading此书的读书笔记。 随机游走过程是一种特殊的ARMA序列。从分子运动到股价波动等现象都被建模为随机游走。 随机游走过程是AR(1)序列&#xff0c;而且,时间序列在时刻的值为&#xff1a; 随机游走过程本质上是到当前时间…

随机游走(Random Walk)算法

随机游走 英文&#xff1a;random walk 定义&#xff1a;随机游走&#xff0c;概念接近于布朗运动&#xff0c;是布朗运动的理想数学状态。 核心概念&#xff1a;任何无规则行走者所带的守恒量都各自对应着一个扩散运输定律。 随机游走算法的基本思想是: 从一个或一系列顶点…

ArrayList分页Lists.partition遇到的坑

一、问题的发现 最近在用分布式任务powerjob的时候&#xff0c;发现了一个关于数组分页之后的序列化问题。事情是这样的&#xff0c;在我执行MapReduce模式的时候&#xff0c;发现了在生成子任务时报了com.esotericsoftware.kryo.kryo5.KryoException: Class cannot be created…