Javaweb mvc设计模式与三层架构

[知了堂学习笔记]_MVC设计模式(model1、model2)与JavaWEB三层架构 一、MVC设计模式 MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。 控制器(Controller):Servlet,控制器主要处理用户的请求 l 视图(View):HTML, JSP, 前端框架 l 模型(Model):逻辑业务程序(后台的功能程序 阅读详情

MVC设计模式与三层架构

什么是Web MVC设计模式?

mvc指的是m(model 模型) v(view 视图) c(controller 控制器)三个模块组成的代码项目。它规定了一种Javaweb的编程规范。
mvc过程描述
在Web MVC模式下,模型无法主动推数据给视图,如果用户想要视图更新,需要再发送一次请求(即请求-响应模 型)。

  • M(Model) 模型 : 应用程序的核心功能,管理这个模块中用的数据和值(bean,dao);
  • V(View )视图: 视图提供模型的展示,管理模型如何显示给用户,它是应用程序的外观;(jsp/html)
  • C(Controller)控制器: 对用户的输入做出反应,管理用户和视图的交互,是连接模型和视图的枢纽。(servlet/service)

MVC想做到代码之间的耦合度降低,能够各司其职。

什么是三层架构?

三层架构 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层 (DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。

1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。 jsp/html
2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。 servlet,service
3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。dao

表现层实现的代表作品是Struts,springmvc框架,
业务层实现的代表作品是Spring,
持久层实现的代表作品是Hibernate,mybatis。

层就相当于一个黑盒子,我们不用知道它内部怎么实现,只需要知道如何去调用它就行了。每层只与上下相邻的两层打交道。当一层内部由于技术变迁发生变化时,只要接口不变,其他层不用做任何改变。分层之后灵活性提高, 也便于团队分工开发。

三层架构与MVC之间的区别与联系

联系:

  • MVC是 Model-View-Controller,严格说这三个加起来以后才是三层架构中的UI层,也就是说,MVC把三层架构中 的UI层再度进行了分化,分成了控制器、视图、实体三个部分,控制器完成页面逻辑,通过实体来与界面层完成通话;而C层直接与三层中的BLL进行对话。
  • MVC可以是三层中的一个表现层框架,属于表现层。三层和mvc可以共存。

区别:

  • 三层是基于业务逻辑来分的,而MVC是基于页面来分的。
  • MVC主要用于表现层,3层主要用于体系架构,3层一般是表现层、中间层、数据层,其中表现层又可以分成M、 V、C,(Model View Controller)模型-视图-控制器
  • MVC是表现模式(Presentation Pattern) 三层架构是典型的架构模式(Architecture Pattern)
  • 三层架构的分层模式是典型的上下关系,上层依赖于下层。但MVC作为表现模式是不存在上下关系的,而是相互协作关系。即使将MVC当作架构模式,也不是分层模式。MVC和三层架构基本没有可比性,是应用于不同领域的技术。

三层架构与MVC

结合实例讲解

项目文件图例 与 执行顺序
javaweb简单示例介绍
JavaBean student类

package com.java.bean;

//实体类(javabean)
//类名=表名 列名=属性名
public class Student {
    private int studentId;
    private String studentNum;
    private String stuName;
    private int stuAge;

    public Student() {
    }

    public Student(int studentId, String studentNum, String stuName, int stuAge) {
        this.studentId = studentId;
        this.studentNum = studentNum;
        this.stuName = stuName;
        this.stuAge = stuAge;
    }

    public int getStudentId() {
        return studentId;
    }

    public void setStudentId(int studentId) {
        this.studentId = studentId;
    }

    public String getStudentNum() {
        return studentNum;
    }

    public void setStudentNum(String studentNum) {
        this.studentNum = studentNum;
    }

    public String getStuName() {
        return stuName;
    }

    public void setStuName(String stuName) {
        this.stuName = stuName;
    }

    public int getStuAge() {
        return stuAge;
    }

    public void setStuAge(int stuAge) {
        this.stuAge = stuAge;
    }
}

dao接口:

public interface StudentDao {
    public List<Student> getall();
}

dao实现类:

package com.java.dao.impl;

import com.java.bean.Student;
import com.java.dao.StudentDao;
import com.java.util.DruidUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class StudentDaoImpl extends DruidUtil implements StudentDao {
    @Override
    public List<Student> getall() {
        List list = new ArrayList();
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {

            connection = getConnection();
            String sql = "select * from student";
            preparedStatement = connection.prepareStatement(sql);
            resultSet = preparedStatement.executeQuery();
            while(resultSet.next()){
                Student student = new Student();
                student.setStudentId(resultSet.getInt("studentid"));
                student.setStudentNum(resultSet.getString("studentnum"));
                student.setStuName(resultSet.getString("stuname"));
                student.setStuAge(resultSet.getInt("stuage"));
                list.add(student);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            close(connection,preparedStatement,resultSet);
        }

        return list;
    }
}

service接口:

package com.java.service;

import com.java.bean.Student;
import java.util.List;

//定义操作数据库的方法
public interface StudentService {
    public List<Student> getall();
}

service实现类:

package com.java.service.impl;

import com.java.bean.Student;
import com.java.dao.StudentDao;
import com.java.dao.impl.StudentDaoImpl;
import com.java.service.StudentService;

import java.util.List;

public class StudentServiceImpl implements StudentService {

    private StudentDao dao = new StudentDaoImpl();

    @Override
    public List<Student> getall() {
        return dao.getall();
    }
}

druid工具:

package com.java.util;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import javax.xml.transform.Result;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class DruidUtil {

    private static DataSource ds;
    static{
        try {
            Properties ppt = new Properties();
            ppt.load(DruidUtil.class.getClassLoader().getResourceAsStream("druid.properties"));
            ds = DruidDataSourceFactory.createDataSource(ppt);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    /**
     * 从连接池中取出一个连接给用户
     * @return
     */
    public static Connection getConnection(){
        try {
            return ds.getConnection();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return null;
    }


    public static void close(Connection conn, Statement state, ResultSet rs){
        try {
            rs.close();
        } catch (Exception throwables) {
            throwables.printStackTrace();
        }
        try {
            state.close();
        } catch (Exception throwables) {
            throwables.printStackTrace();
        }
        try {
            conn.close();
        } catch (Exception throwables) {
            throwables.printStackTrace();
        }
    }
}

studentServlet:

package com.java.web;

import com.java.bean.Student;
import com.java.service.StudentService;
import com.java.service.impl.StudentServiceImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

//@WebServlet(value = "/getallstudent")
public class StudentServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.接受参数

        //2.调取service方法
        StudentService studentService = new StudentServiceImpl();
        List<Student> students = studentService.getall();

        //3.跳转页面
        req.setAttribute("students",students);
        System.out.println("servlet完成");
        req.getRequestDispatcher("show.jsp").forward(req,resp);

    }
}

Win7蓝屏报错开启指南:关闭自动重启与配置内存转储 蓝屏崩溃是Windows系统最典型的故障表现之一,其背后的停机代码与转储文件往往直接指向问题驱动或硬件异常。在系统运维与硬件诊断中,掌握如何保留蓝屏现场、配置内存转储、以及用WinDbg分析.dmp文件,是提升故障排查效率的关键技能。理解系统失败后的自动重启策略、页面文件依赖及CrashControl注册表键值,能让技术人从被动应对蓝屏转向主动取证。对于仍运行Win7的老机器,开启蓝屏报错并生成小内存转储,既能为驱动冲突、内存故障提供量化依据,也能为后续升级迭代积累经验。本文围绕“开启蓝屏报错”这一实操需求 阅读详情

相关推荐

【生成C01/C10材料常数excel表】

计算橡胶件的邵尔硬度和C01/C10材料常数

weixin_46153372的博客 1935

javaweb:常用的web设计模式(Model1,Model2,javaweb三层架构和mvc)和三层结构案例展示

Jsp模式介绍: SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式。 JSP+JavaBean模式适合开发业务逻辑不太复杂的web应用程序,这种模式下,JavaBean用于封装业务数据,JSP即负责处理用户请求,又显示数据。 Servlet+JSP+JavaBean(MVC)模式适合开...

青红造了个大白之成长记 2137

避坑指南:LAMMPS做GCMC模拟时,化学势mu和压力p到底怎么设?

本文详细解析了LAMMPS中巨正则蒙特卡洛(GCMC)模拟的关键参数设置,特别是化学势(mu)与压力(p)的正确计算方法。通过理论分析、实用公式和黄金法则,帮助用户避免常见误区,提升模拟精度和效率,适用于各类复杂体系的分子模拟研究。

weixin_42525289的博客 432

JavaWeb(MVC模式)

又见面了,今天带来是mvc模式的知识分享

m0_62604616的博客 2212

手把手教你为Multisim 14.0创建自定义元件:以SPICE模型导入为例

本文详细介绍了如何在Multisim 14.0中创建自定义元件,重点讲解了SPICE模型的导入与应用。通过系统性的步骤指南,包括元件符号设计、引脚定义、SPICE模型关联及验证测试,帮助工程师高效扩展元件库,满足特定设计需求。文章还提供了故障排除和性能优化的实用技巧,确保自定义元件在实际仿真中的可靠性。

weixin_42531163的博客 284

电阻抗成像肺功能测试数据分析与直方图生成

本文介绍了基于MATLAB的电阻抗成像(EIT)肺功能测试数据分析方法。研究针对32×32像素的EIT图像序列,通过三步算法处理:首先计算特定时间点与谷值图像的差值,然后分析1秒后峰值与1秒值的差值,最终计算比值矩阵并处理异常值。系统展示了数据预处理、关键时间点检测、比值计算及统计分析的全流程,包括生成概率分布直方图和空间分布图等可视化方法。该分析为无创肺功能评估提供量化指标,可应用于临床呼吸监测和疾病诊断。

huanghm88的专栏 197

JavaWeb MVC和三层架构

MVC和三层架构、Servlet MVC和三层架构的区别与联系

weixin_50556778的博客 2190

如何对TBSS的结果进行统计学的分析,已完成置换检验,如何在最终的TBSS输出结果提取除具体值及如何做进一步相关性分析??

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1439

JavaWeb中MVC和三层架构详解

JavaWeb中MVC和三层架构详解

M_emory_的博客 2154

全国区块链职业技能大赛国赛考题前端功能开发

全国区块链职业技能大赛国赛考题区块链应用前端功能开发

本郡主是喵 1335

16、保障Azure应用安全:密钥管理与身份认证

本文深入探讨了保障Azure应用安全的关键措施,包括使用网络安全工具(如Application Gateway和Azure Front Door)防范攻击,解决传统密钥和机密存储方式的安全隐患,以及通过Azure Key Vault实现敏感信息的安全管理。同时,介绍了使用托管标识实现Azure资源间安全访问的方法,并结合实际操作步骤展示了如何配置Key Vault、设置访问策略、存储机密以及授予Web应用对SQL Server的访问权限。最后,对不同安全措施进行了比较,并提出了在开发、测试及生产环境中的综合

rock5的博客 72

JavaWeb JavaBean,MVC三层架构

JavaWeb JavaBean,MVC三层架构,Filter,监听器,过滤器,JDBC

weixin_44405182的博客 1347

基于Simulink的永磁同步电机三闭环(位置/速度/电流)控制仿真

本文详细介绍了基于Simulink的永磁同步电机三闭环控制系统设计与实现方法。系统采用位置环、速度环、电流环的三层嵌套结构,通过坐标变换(Clark/Park)实现解耦控制,达到精密定位目的。文章包含完整的建模步骤:从主电路搭建、三环PID设计到坐标变换与SVPWM调制实现,并提供了核心控制算法的MATLAB代码。通过工业机械臂关节场景验证,系统在阶跃响应(稳态误差0.002°)、正弦跟踪(误差0.008°)和抗扰动性能(恢复时间0.05s)方面表现优异。最后还提出了前馈补偿、扰动观测器等优化方向。该方案适

xiaoheshang_123的博客 280

JavaWeb的MVC(三层架构)

JavaWeb的MVC(三层架构) 文章目录JavaWeb的MVC(三层架构)MVC概述概念作用实现方式JavaBean MVC概述 概念 什么是MVC? MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和

cx9977的博客 738

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

MVC设计模式与JavaWeb的三层架构

MVC设计模式将软件程序分为3个核心模块:模型(Model)、视图(View)和控制器(Controller),这3个模块的作用如下所示。M:模型V:视图C:控制器View(表现层):Service(业务逻辑)层:DAO(Data Access Object,数据访问对象)层:view层所在包一般命名如下Service层所在包一般命名如下Dao层所在包一般 JavaWeb包的命名controller、service、dao、entity.........

baiqi123456的博客 1813

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

区分MVC设计模式与JavaWeb三层架构

区分MVC设计模式与JavaWeb三层架构 MVC的理解   所谓的mvc设计模式就是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计思想, 强制性的把应用程序的输入、处理和输出分开。 MVC中的模型、视图、控制器它们分别担负着不同的任务。   1.视图(view): 视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并接受用户的输入。例如大家熟悉的...

Web小笨猪的博客 1613

MVC设计模式与JavaWEB三层架构

一、MVC设计模式 MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。 控制器(Controller):Servlet,控制器主要处理用户的请求 l 视图(View):HTML, JSP, 前端框架 l 模型(Model):逻辑业务程序(后台的功能程序), Ser...

qq_43170213的博客 501

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

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

么古的博客 303

Javaweb MVC设计模式、Modle发展史、项目分层和三层架构

文章目录项目分层三层架构 项目分层 DAO —— Data Access Object数据访问对象(接口) DAOImpl —— DAO的实现类 entity ——数据对象的实体(有些地方叫model层) Service(不是Server)——就是中间层、业务逻辑层(接口) ServiceImpl —Service的实现类 Util —— 自定义工具类 Servlet——JAVA WEB小应用(有时叫Controller层) 1、Utils:主要用于存放连接工具如java数据库连接工具,在这里提供连接和

qq_43573663的博客 2961

javaweb MVC设计模式(三层架构)

浅谈javaweb三大框架和MVC设计模式 小序:博主以前在学javaweb的时候开始总不理解javaweb三大框架和MVC框架模式,虽然没有把两者混为一谈,但是也是很晕菜。作为一个Java开发程序员的话,特别是B/S架构的开发来说,MVC框架模式是我们必须要掌握的!!! 一、MVC设计模式 1.MVC的概念 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)

technologyleader的专栏 682

对JAVA中MVC设计模式、JAVAWEB的三层架构、AOP面向切面编程的总结

最近在学习JavaWeb的内容,做练习的同时xu

sbsbjs的专栏 1453

java三层架构是哪三层_浅谈Javaweb经典三层架构和MVC框架模式

一、MVC设计模式1.MVC的概念首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),即为MVC。它是一种软件设计的典范,最早为Trygve Reenskaug提出,为施乐帕罗奥多研究中心(Xerox PARC)的Smalltalk语言发明的一种软件设...

weixin_39606638的博客 1889

聊一聊耳熟能详的MVC设计模式与三层架构

简述MVC设计模式和三层架构的组成,建议一种项目分层的解决方案。

丹丹的后花园 6762

使用前端、数据库、JavaWeb 等技术并采用 MVC 设计模式,基于三层架构实现学生信息管理系统

要求 使用前端、数据库、JavaWeb 等技术并采用 MVC 设计模式,基于三层架构实现学生信息管理系统 其中学生信息有: 学号、姓名、性别、出生日期 要求: a. 完成用户登陆功能 (判断用户输入的用户名密码和数据库存储的用户名密码是否相同) 当登陆成功 跳转到首页显示登陆成功(页面、数据库表自行设计实现) b.完成用户添加功能(首先跳转到添加页面,将页面表单中填写的内容保存到数据库中) c.使用过滤器对添加用户的请求进行拦截,判断是否是未...

weixin_40351820的博客 1430

java mvc设计模式框架_javaweb三大框架和MVC设计模式

javaweb三大框架和MVC设计模式转载,原文请见https://blog.youkuaiyun.com/sunpeng19960715/article/details/50890705一、MVC设计模式1.MVC的概念首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Control...

weixin_30781567的博客 555

的mvc_浅谈Javaweb经典三层架构和MVC框架模式

一、MVC设计模式1.MVC的概念首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),即为MVC。它是一种软件设计的典范,最早为Trygve Reenskaug提出,为施乐帕罗奥多研究中心(Xerox PARC)的Smalltalk语言发明的一种软件设...

weixin_31809171的博客 305
上一篇: Java集合部分面试题解答
下一篇: jsp、servlet项目部分错误总结
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值