MVC 模式及对象持久化

news2024/12/23 22:47:07

MVC 模式及对象持久化

    • 开发框架简介
    • 对象关系映射ORM 技术
  • Struts2 框架的使用
    • Struts2 框架的下载及部署
    • Struts2 配置

开发框架简介

在了解MVC 之前,首先来了解框架的概念。要理解框架的含义得从开发的实际需求说起。在软件开发过程中总有很多基础的功能是相同或者相近的,所以在实际开发中再花费时间重复基础工作显然是人们不愿意做的事情,所以开发者们将一些可重用的、易扩展的,井且经过良好测试的组件独立出来抽象成一个框架,当开发新的项目时便可以直接基于框架开发,可以有更多的精力放在分析和构建业务逻辑上,从而避免繁琐的底层事务和代码工程,这就是框架的由来。

MVC 的层结构
MVC 是Mod e l View Controller 的缩写,是一种开发模式,因为其合理的设计,诞生了很多以MVC 开发模式为主导的框架,称为MVC 框架,如图所示。
在这里插入图片描述

(1) Model (模型):表示程序的核心,处理一些底层的业务逻辑。
(2) View (视图):显示页面数据。
(3) Controller (控制器):控制输入/ 输出,协调各个层的关系。

对象关系映射ORM 技术

虽然关系型数据库已经大大地方便了程序员进行程序开发,但在一些大型的项目中数据关系比较复杂,业务逻辑要求可能更多,此时再从底层进行数据库的操作显得比较费事,于是人们提出了ORMCObject Relational Mapping )技术,它是一种将关系型数据映射到类的技术。使用ORM 技术进行开发,程序员不需要去处理繁琐的底层数据,而是通过映射类进行数据操作,更加符合软件工程面向对象的思想。使用O RM 技术,开发者可以访问到底层的数据,但完全不用去关心底层数据的结构,这个过程也可以称为持久化的过程。

SSH 集成开发框架
SSH 为Struts+Spring+ Hibernate 的一个集成框架,是目前较流行的一种Web 应用
程序开源框架。Struts2 是一个Java 的MVCWeb 开发框架, Struts2 以Web Work 为核心,
采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与
ServletAPI 完全脱离开。Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而
创建的。Hibernate 是一个开放源代码的对象关系映射框架,它对JDBC 进行了轻量级的对
象封装,使得Java 程序员可以随心所欲地使用对象编程思维来操作数据库。Hibernate 可
以应用在任何使用JDBC 的场合,既可以在Java 的客户端使用,也可以在Servlet /JSP 的
Web 应用中使用。

Struts2 框架的使用

Struts2 框架的下载及部署

在使用Struts2 前需要去官网下载最新的框架包,地址为http: // struts. apache. org/
release/ 2. 0. x/ 。可以选择下载完整包,里面除了包含必需的文件外还包含了文档和案例,也
可以选择只下载运行包。这里选择下载完整的压缩包,解压后会看到目录结构
在这里插入图片描述
需要用到的是lib 文件夹下的jar 文件,现在复制这些文件到之前新建的工程中的WebContent/ WEB-INF / lib 文件夹下,以便在工程中使用这些文件。lib 文件夹中通常会放置工程需要用到的jar 文件,引用相关的Java 类时会自动加载该文件夹下的资源,可以理解为一个资源库,需要什么取什么。在Eclipse 中刷新之前的工程可以看到在WebAppLibraries 节点下复制过来的jar 文件,说明已经成功将Struts2 的文件部署到了工程中,如果不能看到文件请重新检查复制的路径是否正确。Struts2 框架的部署本质上就是将文件添加到我们的工程中以便调用而已。

Struts2 配置

在部署好了相关的Struts2 文件后只是做好了预备工作,只有框架是不能够运行出什
么效果的,现在需要进一步对框架进行配置才能使其工作。

从前面讲述JSP 显示简单页面的内容已经知道,我们不需要任何配置文件,只需要在
应用的根目录下建立新的JSP 文件,然后通过网址/文件名就可以访问动态页面了,这是最
基本的Web 开发形式,因为和本地浏览文档的逻辑几乎一样。但复杂的Web 程序通常不
会以文件为地址单位进行开发,这不利于项目的开发和维护,并且会暴露工程的目录结构。

通常会统一使用一个路口来管理应用的访问,这好比进入一幢楼的某个房间必须先经过大门
一样,而不是直接就能进入某个房间。在Java Web 开发中,扮演人口角色的通常是web. xml
文件,在里面可以进行工程的各种配置工作,所以想要让Struts2 的框架正常工作起来,首
先要配置web. xml 这张地图,只有通过web. xml 程序才能找到Struts2 的人口。在WEB- INF 文件夹新建一个web. xml 文件。编辑该文件如下:

〈?xml version =” 1. 。” encoding =”UTF- 8?>
<web- app id= "WebApp_9 ” version =气4 ” xrnlns =” http://java. sun.com/xrnl/ns/j2ee” xrnlns:xsi
=” http://w 阳. w3. org/2001/XMLSchema inst ” xsi: schemaLocation =” http://java.sun.com/
xml/ns/j2ee http: //java. sun. com/xml/ns/j2ee/web - app_2_ 4 . xsd">
< display - name> Struts Blank</ display - name>
<filter>
<filter - name> struts2 </filter - name>
<filter - class>
erg . apache. struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter - class>
</filter>
< filter - mapping>
<filter - name> struts2 </filter- name>
< url - pattern >/铃</ url - pattern>
</filter - mapping>
<welcome - file - list>
<welcome - file> index. html </welcome - file>
</welcor盹- file - list>
</web- app>

这里要提醒的是,不同版本的Struts2 可能文件的配置会略有不同,所以在下载完新版
本的Struts2 后使用本书或者其他资料中的文件未必正确,最好的方法是参考查看下载文
件中的webapp 范例中的配置文件。

可以看到,该文件中添加了一个过滤器,将过滤所有访问请求, < filter- name > struts2
</ filter-name >声明了该过滤器的名字为struts2 ,而< url- pattern >/*</ url- pattern >
指明了过滤的路径为工程下的所有访问路径,这里用到的正则表达,/表示为根目录,而铃用
于匹配所有字符。

在filter 标签中声明了该过滤器用到的类为org. apache. struts2 . dispatcher. ng. filter .
StrutsPrepareAndExecuteFilter ,这个类就在之前添加到lib 文件夹中的jar 文件中。现在
来总结web. xml 将如何工作,当用户访问我们的应用时会先经过预定好的Struts2 过滤器,
org. apache. struts2. dispatcher. ng. filter . StrutsPrepareAndExecuteFilter 过滤器类会将所
有的访问请求全部转交给Struts2 处理。

同样, Struts2 本身也有自己的xml 配置文件,担当着类似web. xml 的作用,在src 文件
夹下再新建一个名为struts . xml 的文件。编辑该文件内容如下:

〈?xml version =” 1. 。” encoding =” UTF- 8?>
<! DOCTYPE struts PUBLIC
”- //Apache Software Foundation//DTD Struts Configuration 3. 3//EN”
” http: I I struts. apache . org/ dtd s/ struts - 3. 3 . dtd ”>
<struts>
< constant name =struts.enable.DynamicMeth odinvocation” value =false" />
< constant name =” struts.devMode” value =true" />
< package name =default” namespace =/extends =” struts - default>
</package>
</struts>

在该文件中添加了一个package ,命名为helloworld ,在struts. xml 文件中, package 起
着分类管理Actio n 的作用,对于大型的项目,将所有的action 放置在一起显然会让人眼花
缭乱,不利于开发和维护,有了Action 便可以对它们进行分类管理。

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

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

相关文章

荣耀MagicBook如何重装系统?荣耀MagicBook重装Win10系统教程

荣耀MagicBook如何重装系统&#xff1f;荣耀MagicBook是一款12小时长续航独显轻薄本&#xff0c;深受用户的喜欢&#xff0c;有些用户想知道如何给荣耀MagicBook重装Win10系统&#xff0c;操作难度不会很大&#xff0c;用户们可以根据小编给大家分享的荣耀MagicBook重装Win10系…

【FPGA零基础学习之旅#8】阻塞赋值与非阻塞赋值讲解

&#x1f389;欢迎来到FPGA专栏~阻塞赋值与非阻塞赋值 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒&#x1f379; ✨博客主页&#xff1a;小夏与酒的博客 &#x1f388;该系列文章专栏&#xff1a;FPGA学习之旅 文章作者技术和水平有限&#xff0c;如果文中出现错误&#xff0c;希望大家…

Redis从入门到精通【高阶篇】之底层数据结构跳表(SkipList)

文章目录 0.前言1.跳表(SkipList)基本详解2. 源码解析3.总结4.思考题5. Redis从入门到精通系列文章 0.前言 上个篇章回顾&#xff0c;我们上个章节我们学习了《Redis从入门到精通【高阶篇】之底层数据结构整数集(IntSet)详解》&#xff0c;我们从源码层了解整数集由一个头部和…

Day08 Python数据结构(数据容器)详解

文章目录 第五章 Python数据容器5.1. 容器类型介绍5.2. 数据容器运算符5.2.1. 成员运算符5.2.2. 身份运算符 5.3. 字符串str5.3.1. 字符串的定义5.3.2. 运算符的相关操作5.3.3. 索引和切片5.3.3.1. 索引5.3.3.2. 切片 5.3.4. 字符串遍历5.3.5. 字符串的相关操作5.3.5.1. 获取的…

git安装以及git小乌龟使用

一、下载git 打开git官网地址&#xff1a;https://git-scm.com/进行下载 下载完安装&#xff0c;一直next就好&#xff0c;如果愿意就可以改下安装路径&#xff0c;改在d盘。 具体可以参考&#xff1a;git安装教程 二、安装完下载小乌龟以及语言包 下载地址&#xff1a;小乌龟…

【OpenMMLab AI实战营二期笔记】第六天 目标检测和MMDetection

1.什么是目标检测&#xff1f; 目标检测 vs 图像分类 目标检测的应用 &#xff08;1&#xff09;人脸识别 &#xff08;2&#xff09;智慧城市 &#xff08;3&#xff09;自动驾驶 &#xff08;4&#xff09;下游视觉任务&#xff1a;场景文字识别、人体姿态估计 目标检测技术…

微服务 springcloud 08.zuul框架,API网关,整合ribbon和hystrix框架

01.zuul是作为springcloud中的一个网关框架来使用的。 zuul API 网关&#xff0c;为微服务应用提供统一的对外访问接口。 zuul 还提供过滤器&#xff0c;对所有微服务提供统一的请求校验。 在项目中的位置&#xff1a; 02.新建 sp11-zuul 项目 03.pom.xml 需要添加 sp01-com…

【雕爷学编程】Arduino动手做(111)---震动提醒模块

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

纺织工厂运营神技,不会你就OUT了!

在纺织工业中&#xff0c;保持适宜的生产环境是至关重要的。温湿度、能耗、设备运行状态以及空气质量等因素对纺织品的质量和生产效率都有着重要影响。 为了实现对生产环境的全面监控和管理&#xff0c;纺织企业越来越多地采用动环监控系统。 客户案例 湖州市某纺织工厂监控项目…

USART2实现Motbus485通信

本文用的单片机是原子的战舰V4 1. 先来驱动一下usart2 USART驱动配置一般步骤: STEP1&#xff1a;使能相关时钟&#xff0c;这块板子usart2用到了A2、A3分别为TX脚、RX脚&#xff0c;D7的作用是发送接收模式控制。下面开启GPIO与USART2时钟&#xff1a; RCC_APB1PeriphClockCm…

SpringBoot中打印 sql 语句

系列文章目录 文章目录 系列文章目录前言一、在配置文件中 application.yml 配置即可二、#Log4g打印SqL语句三、配置Logback总结 前言 在SpringBoot中&#xff0c;我们可以使用日志框架来打印SQL语句&#xff0c;常用的日志框架有Logback和Log4j2。下面以Logback为例&#xff…

35:考虑virtual函数以外的其他选择

假设你正在写一个视频游戏软件&#xff0c;你打算为游戏内的人物设计一个继承体系&#xff0c;剧中人物被伤害或因其他因素而降低健康状态的情况并不罕见。你因此决定提供一个成员函数healthValue&#xff0c;它会返回一个整数&#xff0c;表示人物的健康程度。 由于不同的人物…

Linux x86_64平台同时编译x86_64和arm64两个架构的Qt应用程序出现XRes库无法找到

一 背景 在ubuntu x86_64平台上需要同时编译x86_64和arm64两个架构的Qt应用程序。在实践过程中&#xff0c;发现XRes库只能安装在其中一个平台。 二 根因 安装amd64版本的XRes库会删除arm64版本的库&#xff0c;反之亦然。 在安装amd64版本时&#xff0c;会删除arm64版本&a…

内部员工有没有在线帮助文档可以使用呢

当今企业中&#xff0c;内部员工的工作内容变得越来越复杂&#xff0c;需要不断学习新的知识和技能。在这种情况下&#xff0c;企业需要给员工提供一种便捷的在线帮助文档&#xff0c;使员工能够更加高效地完成工作任务。本文将介绍企业内部员工在线帮助文档的重要性以及如何建…

区块链如何助力价值互联网?这些专家有话说

6月13日&#xff0c;由开放原子开源基金会主办&#xff0c;XuperCore开源项目承办的2023开放原子全球开源峰会区块链分论坛在北京举办。来自区块链领域内的专家、行业代表汇聚一堂&#xff0c;分别以主题演讲、圆桌论坛等形式&#xff0c;阐述了全球区块链行业的新理念、新发展…

Opencv仿射函数getAffineTransform底层实现原理

推导 三角形ABC仿射成为三角形DEF的变换矩阵M 猜测矩阵M [ [a1,b1,c1], [a2,b2,c2] ] 仿射变换的数学联系 对于A点和D点 AX*a1AY*b1c1DX AX*a2AY*b2c1DY 对于B点和E点 BX*a1BY*b1c1EX BX*a2BY*b2c2EY 对于C点和F点 CX*a1CY*b1c1FX CX*a2CY*b2c2FY 求解 对以上数…

seqkit 两种拆分方法的比较

seqkit拆分fastq&#xff0c;fasta等文件有两种方式&#xff1a;split和split2&#xff0c; 二者的逻辑并不一样。 split 是将原文件拆分&#xff0c;写满第一个文件&#xff0c;再写第二个文件 split2是将原文件的内容&#xff0c;挨个写到各个拆分文件里面去&#xff1f; 比…

拓尔微技术干货 | get 5个知识点,了解细分驱动技术

本期我们对步进电机驱动原理、五线的步进电机和四线的步进电机、2-2相励磁和1-2相励磁、步进电机驱动的优化方案、拓尔微TMI8150B细分驱动技术的原理进行详细的介绍&#xff0c;共分为5个知识点&#xff0c;全是技术干货&#xff0c;赶紧get下来~ ✔get 1&#xff1a;步进电机…

datax安装部署使用 windows

Datax在win10中的安装_windows安装datax_JMzz的博客-CSDN博客 DataX/userGuid.md at master alibaba/DataX GitHub 环境准备&#xff1a; 1.JDK(1.8以上&#xff0c;推荐1.8) 2.①Python(推荐Python2.7.X) ②Python(Python3.X.X的可以下载下面的安装包替换) python3.0需…

Docker安装——CentOS7.6(详细版)

ps:docker官网 在 CentOS 上安装 Docker 引擎 |官方文档 &#xff08;&#xff09; 一、确定版本&#xff08;必须是7以上版本&#xff09; cat /etc/redhat-release 二、卸载旧版本&#xff08;或者之前装过&#xff0c;没有安装过就不用管了&#xff09; &#xff08;root用…