JavaWEB开发中MVC的一点哲学思考

JavaWeb开发中JSP通用标签与迭代标签详解 JSP标准标签库(JSTL)通过声明式标签替代传统的<% %>脚本代码,有效解决了HTML与Java逻辑混杂的问题。其设计理念遵循“关注点分离”,将视图展示与业务处理解耦,提升代码可读性与维护性。JSTL基于EL表达式驱动,支持条件判断、循环遍历、格式化输出等常用功能,显著降低JSP页面开发复杂度。<c:set>是 JSTL 中用于设置变量值或 JavaBean 属性的核心标签,它提供了一种脱离脚本片段的方式来操作数据模型,增强了页面的可读性和安全性。 阅读详情

学习MVC设计模式有一段时间了,发现有些心得体会,现在写一下,作为一个时间的见证

Java软件开发,核心的思想就是MVC,因为我们每一步的编写,都围绕着这个设计思想来做,它指导我们不要将程序陷入毫无章法之中,我们可以从一个最简单的用户登录与注册的例子进行分析,看看MVC离我们有有多近。

拿到这个登录的例子,我们可以很快的分析出,我们的操作就是用户,根据分层的思想,我们的步骤如下:
1、设计数据库
2、写持久化对象以及与Hibernate映射文件
3、写数据库操作DAO
4、写Service层代码
5、写Action
6、写JSP页面

     基本上这个模式已经把程序员限制在了一个很小的范围内进行编程,他们不必担心自己的程序格式是否良好,代码是否优雅,因为按照这个模式来,无论从格式上,还是在代码上都给人一种清晰的感觉,不过为了更好的代码维护,我们需要对上面再一次进行细化

     对于第二步,我们知道后面的操作都是围绕着这个持久化对象进行的,所以我们可以将对持久化对象的操作的SQL语言全部写入到一个固定的配置文件xml中 ,这样便于我们的管理,也减少了Java文件中大量的SQL语句
对于第三步,我们可以写一个DAO接口,然后写一个Impl实现类,这样更加体现出面向接口编程,可以做到一定的可扩展性
     对于第四步,我们可以写一个Service接口,然后写一个Impl实现类。效果和第三步一样。
     对于第五步,有一点编程经验的人都知道使用struts2可以很好的实现属性的注入功能,但是我们为了进行再次的代码简化,我们的属性注入的全部是对象,这样不断可以体现出面向对象的程序设计,更能优化我们的代码
     对于第六步,我们为了使界面更加的清新,不至于出现java片段,可以使用一些标签库,特别是OGNL标签库,不断可以使用界面标签,更重要的是对于集合框架中的元素也可以进行迭代,不但减少了我们JSP中代码的数量,也让人一目了然。对于JavaScript代码,以及CSS代码也可以全部写入到指定的文件中,这样可以做到有条有理,给人一种清爽的感觉。

     这其中MVC的设计模式体现的淋淋尽致,我们可以看出,我们发现其实一个具体的业务功能就是对MVC的一个具体的流程化,MVC更多的是将我们平时可能要做的操作进行了流程的处理,使我们可以按照同样的一个思维进行程序设计,而不至于对于多个业务功能使用多种不同的设计风格。

     其实关于MVC配置文件成为了信息流动的核心。我们知道struts2中的配置文件是为了做到请求与响应的流程转发,Spring提供的bean的配置也体现了我们完成一个任务所需要使用的对象,他可以在我们操作之前就产生出来,为后面的操作做好准备,可谓是处处体现面向对象的思维方式,特别是在Hibernate文件的配置中,我们发现数据库与实体对象之间不能很好的过度,但是Hibernate却使用了ORM对象关系映射机制很好的解决了这个问题,将数据库的一条一条的记录,全部封装成了一个一个的对象,这时对对象的操作也就可以映射为对数据库的操作,这样面向对象的思维有进一步的体现了。

     别人都说MVC模式是为了更好的职责分散,我是很赞同的,通过MVC我们可以很好的将一个事情需要完成某项功能完全交给能够处理的对象身上,这不就是和现实生活中的处理一件事物一样吗,然而对象的产生确实重中之重,所以Spring使用IOC依赖注入的功能实现了对象的动态产生,Structs也同样使用IOC对请求参数进行了注入,同理,Hibernate也做了同样的事情,目的都是为了产生对象这也体现出了一切皆是对象的一般规律,其实对象不能平白无顾的产生,一定有一个最开始的诱因,这个就是Spring的监听器,是它在Tomcat启动时对对象进行了动态的产生。既然处理事件的关键对象在程序初始化都已经可以动态的产生了,那么对象的具体实施也就成了一个很总要的问题,所以struts2利用过滤器在具体的请求与相应过程中按照他规定的流程一步一步的执行,这之中,对象作为整个流程的守护对象,它保证了整个流程能够顺利的进行。对象为什么能够做到这点呢,其实这之中对象的行为被一个一个的交接棒传递下来进行了处理,就好比美国总统来中国访问一样,在这个访问的全程中,一定有保安24小时跟随,并且车辆以及路面一切都是最好的状态,其实处理这些事情的对象是在接到通知后自动的进行自己本分的工作,为后面的流程做好准备。

     其实MVC中还有一个很重要的东西,那就是数据流与控制流,刚才大概讲了下控制流的问题,现在来讲讲数据流,我们都知道WEB开发的本质就是请求与响应,这也是Http协议限定的结果,所以我们无论怎么样也逃脱不了这个最根本性的约束,那么我们看看MVC中数据的流动究竟是怎么样的,我们知道数据的流动可以分为好几种,特别是get post两种请求方式,那么我们对此进行分析,我们为了数据在整个任务中完美的流动,我们定义了
请求响应方式get与post,他们都是可以携带数据的,数据就因为可以被他们携带所以可以在前台与后台之间进行交互。特别是我们将信息保存为对象之后在进行流动这是最好的方式,体现了面向了对象。在struts2中我们可以使用OGNL表达式使用值栈来进行数据的保存,然后在前台与后台之间进行共享,这种方式显然是最好的,现在我们能够把数据在前台与后台之间进行交互,其实还不能做到多个页面之间进行数据的共享,为此我们可以使用页面技术隐藏域来做到数据的保存与转发,这样就算不是一个请求也能做到数据的传递,当然对于session等也可以在一次会话中共享数据的。

     其实说到底,WEB开发核心价值就是面向对象的思想体现,如果我们不具备这种思维方式,当然是可以很熟练的胜任现在大部分公司的业务的,因为前人已经将最好的实践方式告诉我们了,我们只要照着做就不会出现太大的问题,但是我们作为软件开发人员,我们要知道我们究竟在做什么,为什么要这么做,这才是我们闲暇之余应该想的问题。

     有时候我们需要研究开源框架来更好的理解自己所使用的技术,同时也能够让我们更加了解什么是面向对象。这样我们才能面对新鲜的技术而不至于束手无策
最后希望大家在编程之余多想想为什么编出来的程序会是这样的,那么我们才有可能进行改进,做出适合自己的框架。

     以上只为个人学习后的一点见解,有错误之处请多多包涵。

JavaWeb全栈开发工具包整合实战 标签代表一条路由规则,其主要属性如下:<action 阅读详情

相关推荐

基于Redis+JSP+MySQL的JavaWeb问答系统实战项目

你看,哪怕是一个基于JSP+Servlet的老派架构,只要设计得当,照样能撑起一个高性能、高可用的问答系统。关键不是用了多少新技术,而是你是否理解背后的原理,能否因地制宜做出最优选择。正如一位老工程师所说:“真正厉害的人,不是会用最新框架的人,而是能在任何条件下造出可靠系统的人。愿你在技术路上越走越远,既能仰望星空,也能脚踏实地。🌟本文还有配套的精品资源,点击获取。

weixin_33814090的博客 1092

JavaWEB分层设计思想模式

一、JavaWeb开发模式C/S:客户端 / 服务器 B/S:浏览器 / 服务器 JavaBean: 就是一个普通类(实体bean),包含三样标准:一个无参构造、私有属性、公共的getter和setter方法。 通常需要这么一个作为信息的传递载体,我觉得载体还是很符合它的定义的啊。 1、Model1模式 JSP + JavaBean 2、Model2模式 JSP +

小疯子的博客 4121

基于JavaWeb的寝室管理系统课程设计项目实战

当你完成这个项目后,收获的绝不仅仅是一个能跑起来的Web应用。你会明白:🔧 为什么要有分层架构?🧠 为什么要遵循设计原则?🛠️ 为什么小细节决定大成败?编程的本质,是对复杂世界的抽象与控制。每一次合理的封装、每一处严谨的校验、每一个清晰的日志,都是你对秩序的追求。而这,也正是工程师精神的核心所在 ❤️所以,别再说“JavaWeb过时了”。只要你还在思考如何写出更优雅的代码,技术就不会老去。🚀本文还有配套的精品资源,点击获取。

weixin_35899324的博客 972

Java 25年演进之路:从“即将被取代”到“不可替代”的技术哲学

Java的持久生命力与技术哲学 摘要:尽管面临多次"被取代"危机,Java凭借持续进化、兼容承诺和平衡设计,始终稳居编程语言前列。本文通过版本演进对比,展现Java从Lambda到虚拟线程的技术革新;分析其"中庸之道"的设计理念与社区驱动的生态建设;为开发者提供从CRUD到架构思维的成长路径建议。在AI时代,Java凭借稳定性和企业级优势找到新定位,证明其仍是需要长期运行系统的可靠选择。文章包含技术演进实例和职业发展思考,适合中高级开发者参考。(149字)

weixin_73330164的博客 964

基于JavaWeb的城市管理项目源码实战

简介:【城市管理项目源码】是一个采用MVC设计模式的JavaWeb应用,涵盖城市信息管理、行政区划与公共服务等功能。项目以Java为后端语言,结合MySQL数据库、JSP动态页面和DAO设计模式,实现了完整的前后端交互流程。通过本项目,开发者可系统掌握JavaWeb开发核心技术,包括MVC架构搭建、数据库设计、SQL操作、控制层逻辑实现、异常处理与基础安全机制,全面提升Web应用开发能力。

weixin_26805451的博客 331

基于JavaWeb的学生信息管理系统实战项目(MySQL版)

学生管理系统作为典型的JavaWeb应用,广泛应用于教育信息化建设中。本章从系统业务背景出发,深入剖析核心功能模块与用户角色划分,明确教师、管理员和学生三类用户的操作权限与交互逻辑。通过调研实际教学管理场景,梳理出学生信息管理、课程分配、成绩录入、班级维护等关键需求,并采用用例图与流程图进行可视化建模。同时,结合软件工程方法定义系统的安全性、可扩展性与响应性能等非功能性需求,为后续MVC架构设计与数据库建模提供坚实支撑,构建完整的开发认知框架。我们先对每个实体进行抽象定义,并列出其关键属性:实体。

weixin_35578748的博客 850

Java哲学

它不追求语法的新潮或极致的性能,而是通过严格的类型系统、自动内存管理和庞大的工具链,确保复杂系统的长期可维护性。这种哲学使 Java 在金融、电信、政府等领域占据不可替代的地位,成为企业软件开发的“慢而稳”的基石。早期更新周期长(如 Java 5 到 Java 8 间隔 8 年),导致特性落后于 C#、Kotlin 等竞品。与 Python 的“快速原型”和 Go 的“云原生极简主义”不同,Java 代表了。“Java 是为持久性而设计的——无论是运行数年的服务器,还是维护十年的代码库。

qq_39580065的博客 968

JavaWeb期末实战试卷与核心知识点解析

尽管 Java 提供了丰富的内置异常类型,但在企业级开发中,往往需要定义更具语义意义的异常类,以便于日志追踪、监控告警和前端友好提示。继承Exception(checked)或提供构造方法,支持消息传递与异常链;(可选)添加业务字段,如错误码、上下文信息。// 自定义 Checked Exception// 自定义 Unchecked Exception参数说明:userIdorderId:附加业务上下文,便于日志关联;

weixin_34725745的博客 649

JAVA哲学 -- 前言

        你是谁?世界从何而来?        这是在《苏菲的世界》一书中,开篇即提出的哲学问题。(《苏菲的世界》是通过小说体的形式,通俗的讲解哲学史的文学作品,作者乔斯坦。贾德)要成为一个优秀的哲学家,只需要一个条件:要有好奇心。我们还有好奇心吗?我们是不是已经习惯了身边的一切,习惯于使用JAVA,习惯于使用各种流行的技术,每天将自己陷于无休止的忙碌中,却忘了停下来,想一下为什么?    

oliversong的专栏 1629

JavaWeb毕业设计实战——网上书城系统(含源码+文档+数据库+答辩材料)

JavaWeb开发以Servlet、JSP和JSTL为核心组件,构建动态网站的基础技术栈。Servlet作为请求处理中枢,负责接收HTTP请求、调用业务逻辑并转发响应;JSP(JavaServer Pages)则专注于视图层展示,通过嵌入Java表达式实现数据动态渲染;而JSTL(JSP Standard Tag Library)通过标签化语法替代脚本代码,提升页面可读性与维护性。

weixin_42608299的博客 782

基于Spring Boot的JavaWeb个人博客系统大作业完整实现

简介:本项目是一个基于Spring Boot框架开发的Java Web个人博客系统,结合MySQL数据库与主流Web技术,构建了一个功能完整、易于扩展的博客平台。系统支持用户注册登录、博客文章的增删改查、评论管理、搜索分页、权限控制等核心功能,采用MVC架构模式,集成JPA或MyBatis进行数据持久化,并通过Thymeleaf等模板引擎实现前后端交互。项目还引入Redis缓存、Spring Security安全认证、日志管理和异常处理机制,全面提升性能与安全性。

weixin_35728286的博客 430

JavaWeb后端 JSP实战小训练 JSP的一些思考

JSP技术作为JavaEE核心动态网页技术,经历了MVC融合、标签库爆发和现代化转型三个阶段。其优势在于开发便捷、生态完整和性能优越,但面临前端工程化不足和安全隐患等挑战。与现代技术相比,JSP在SEO支持和学习曲线上仍有优势。实践表明,渐进式重构和混合渲染是可行的演进路径。尽管被新兴技术冲击,JSP在特定领域仍具价值,其设计思想对现代Web开发仍有启示。研究表明,技术迭代应尊重客观规律,平衡创新与实用主义。JSP的演进历程体现了工程思维的持久价值。

Xmcrazy的博客 1906

软件接口的哲学思考

软件接口:(1)接口是一种特殊的物质,是“精气神”中的气 (2)接口在管理类中呈阴性(聚合),在执行类中呈阳性(继承) (3)接口有多种类型,但本质上都是作用的抽象; (4)接口在静态时呈现其标签说明的作用; (5)接口在动态时呈现其行为传递的作用; (6)接口的继承是说明继承体有这样的行为,不表达其它的含义 (7)接口使得管理类面向逻辑(角色)的管理成立; (8)接口的定义者和归属共倾向于管理者或控制者; (9)接口中方法定义的参数,应该是空接口的(静态),运行时传递的是空接口的继承实现类; (10)接口是行为域的抽象,而类是主客体域的抽象,它们是两类不同的物质;

Java实习模拟面试之JavaWeb发展史:从JSP到微服务的演进之路

你是否具备“技术演进思维”——能否从历史中看到问题,从问题中理解方案,从方案中提炼思想。技术阶段核心问题解决方案设计思想动态网页生成Java替代CGI跨平台MVC框架代码耦合分层+框架职责分离配置繁琐自动配置约定优于配置微服务单体臃肿服务拆分高内聚低耦合给所有Java学习者的建议不要只学“怎么用”,更要问“为什么这样设计”。每一次技术变革,都是前人用血泪教训换来的最佳实践。站在历史的肩膀上,你才能看清未来的方向。

吾为热爱计科,致力于知识分享的践行者,此博客是我在这条道路上留下的足迹。 981

TwinCAT 3 实战:手把手教你用PLC和C++读写第三方伺服驱动器的CoE参数

本文详细介绍了在TwinCAT 3环境中通过PLC和C++两种技术路线实现对第三方伺服驱动器CoE参数的精准操控。从环境准备到具体实现,包括硬件配置、核心函数使用及性能优化策略,为工程师提供了全面的实战指南。特别针对CoE参数访问的效率和稳定性问题,给出了实用的调试技巧和异常处理方案。

weixin_33743248的博客 446

Acer宏碁暗影骑士擎AN515-58原厂系统恢复指南:从ISO镜像到完整出厂设置

本文详细介绍了为Acer宏碁暗影骑士擎AN515-58游戏本恢复原厂系统的完整指南。从准备工作、数据备份到下载官方镜像、制作恢复U盘,再到BIOS设置与恢复流程,一步步教你如何将系统完整还原至出厂状态,确保所有硬件驱动、NITROSENSE控制中心等专属优化功能恢复正常,解决系统卡顿、功能异常等问题。

weixin_29271263的博客 1103

Java Web演化史:从Servlet到SpringBoot的技术进程及未来趋势

探究Java Web开发从Servlet与JSP起步至Spring框架革新,再到SpringBoot简化流程的历程,深入示例与分析展现技术演进与未来方向。

码农小郑有话说的博客 3097

飞腾Ubantu22.04.3安装OpenNebula测试

因OpenneBula官方镜像源只有AMD架构的镜像包不存在ARM的镜像包,借此用源码编译进行测试。

坚持就是胜利的博客 1011

Spring MVC核心解析

开发者可以自定义处理器映射规则,以满足特定的需求。

JavaCodePro的博客 754

超声波法检测局部放电的原理与实现

摘要:超声波法通过捕捉局部放电产生的声波信号进行检测,系统由超声波传感器、信号调理单元和数据采集系统组成。其核心应用是局放源定位,主要采用时差定位法和声-电联合定位法。该方法具有抗电磁干扰强、定位精确等优点,但也存在信号衰减大、传播路径复杂等缺点,典型应用于变压器、GIS等设备的在线监测与故障诊断。

start_up_go的博客 375

PCL 三次均匀B样条曲线拟合

PCL 三次均匀B样条曲线拟合

dayuhaitang1的博客 402

Spring MVC与Struts2区别?思维导图 代码示例(java 架构)

Spring MVC 和 Struts2 各有特点,适用于不同的应用场景。Spring MVC 更加现代化,强调松耦合和依赖注入,拥有更好的扩展性和灵活性;而 Struts2 则更适合那些已经采用其架构的老项目或者特定需求下对命令模式有偏好的开发者。选择哪个框架取决于项目的具体要求和技术栈的选择。

qq_33240556的博客 1555

基于SVD矩阵分解的用户购物篮预测分析实战

基于SVD矩阵分解的用户购物篮预测分析实战

360

从零开始学习JavaWeb-8

本文是JavaWeb学习第8天的笔记,重点介绍了SpringBoot自动化开发与高级特性。主要内容包括:1) SpringBoot核心价值与自动化原理,对比传统Spring痛点并展示解决方案;2) 快速构建SpringBoot应用的初始化流程和配置文件管理;3) 高级特性实战如SpringDataJPA数据持久化和RESTful API开发;4) SpringSecurity安全控制与OAuth2授权流程;5) 生产环境性能优化与Docker部署;6) 电商订单系统综合实战案例。

m0_73803300的博客 991

晶闸管选型参数,结构原理,工艺与注意问题总结

闸管(Thyristor)是一种半导体开关器件,也被称为可控硅整流器(SCR, Silicon Controlled Rectifier)。它可以在高电压和大电流条件下工作,常被用于交流电的控制和整流。本文对晶闸管的工作原理,结构特点,工艺流程,选型参数及设计注意事项进行总结。

fydar的博客 1286

YOLOv11的元学习(MAML)few-shot适配-(5样本内快速适应新类别)

本文提出了一种基于元学习和YOLOv11的少样本目标检测方法。首先介绍了元学习的核心概念和MAML算法原理,分析了YOLOv11的架构改进及其在少样本检测中的适用性。针对少样本检测面临的过拟合、特征混淆和定位困难等挑战,提出了基于MAML的解决方案。在实现方面,详细阐述了环境配置、数据预处理和任务采样策略,构建了支持N-way K-shot任务的数据加载器。实验表明,该方法相比传统微调策略可显著提升小样本场景下的检测性能。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 602
上一篇: 八皇后问题各种解法分析
下一篇: CentOS7-基础环境命令集锦(防火墙、SELinux、yum源、内核升级、网络主机配置、docker、K8S环境基础、kubesphere)
class_c
博客等级 码龄17年 37粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

class_c

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值