JSP两种经典设计模式
Model1设计模式:JSP+JavaBean
架构图

什么是JavaBean
- JavaBean是一种JAVA语言写成的可重用组件,它遵循特定的编程规范,如类必须是公共的、具有无参构造函数,并提供getter/setter方法等。
- 这里的JavaBean不单单指的是实体类,实际上包括除了JSP的所有Java编写的代码,如果是实体类,则表示实体模型;如果是Service则表示业务模型
- 也就是说,JavaBean实际上是一种模型思想
这里的JSP设计模式指的是,由JSP完成前端页面+Servlet处理请求并响应的操作;由JavaBean(剩余的java代码)完成业务和数据库数据处理等操作
为什么需要分层
- JSP开发的弊端
-
业务处理的代码与JSP代码混在一起.不易于阅读,不易于代码维护,降低了程序的可维护性,可扩展性,同时不利于分工合作
<form method="post" action="doLogin.jsp"> ... <% String uname=request.getParameter("user"); String upwd=request.getParameter("pwd"); ... %>用户名称: Model2模式:(采用MVC设计模式)
- Servlet:控制程序流程
- JavaBean:实现业务逻辑层
- JSP:负责数据显示
优点:
- 层次关系更加清晰
- 各组件分工更加明确
缺点:
- 增加了编写的复杂度
MVC: 模型-视图-控制器: (Model-View-Controller)
MVC
- 模型:
- 对应的组件是JavaBean.代表应用程序的数据以及用于访问,控制和修改这些数据的业务规则.
- 视图:
- 对应的组件是JSP或HTML.视图是用户看到并与之交互的界面.(它从模型中获取数据并指定这些数据应该如何表现)
- 控制器:
- 用的组件是Servlet.控制器负责转发请求,对请求进行处理.
MVC架构图

MVC执行流程:
1.客户端向服务器发送请求
2.服务器把请求分发给Servlet控制器
3.Servlet控制器获取用户输入的数据,并调用JavaBean进行
4.Servlet根据处理的结果选择一个JSP视图来响应用户.
5.JSP视图显示处理的数据(如果存在数据)
三层开发遵循的原则
- 上层依赖其下层,依赖关系不跨层
- 表示层不能直接访问数据访问层
- 上层调用下层的结果,取决于下层的实现
- 下一层不能调用上一层
- 下一层不依赖上一层
- 上层的改变不会影响下一层
- 下层的改变会影响上一层得到的结果
- 在上一层中不能出现下一层的概念
- 分工明确,各司其职
分层开发的特点
- 下层不知道上层的存在
- 仅完成自身的功能
- 不关心结果如何使用
- 每一层仅知道其下层的存在,忽略其他层的存在
- 只关心结果的取得
- 不关心结果的实现过程
- JSTL通常会与EL表达式合作实现JSP页面的编码
分层开发的优势
- 职责划分清晰
- 无损替换
- 复用代码
- 降低了系统内部的依赖程度
总结
- JSP两种经典设计模式:
- model1:JSP+JavaBean
- model2:Jsp+Servlet+JavaBean
- MVC设计模式:
- M(JavaBean)+V(JSP)+C(Servlet)
- 使用MVC的优点与缺点:
- 优点:职责划分清晰,无损替换,复用代码,降低了系统内部的依赖程度
- 缺点:增加编写的复杂度,不适合中小型系统
相关推荐七月丶2 小时前别再手动凑 PR 了:这个 AI Skill 会按仓库习惯自动建分支、拆提交、提 PR刀法如飞2 小时前从程序员到架构师:6大编程范式全解析与实践对比九狼2 小时前Flutter + Riverpod +MVI 架构下的现代状态管理SimonKing3 小时前OpenCode AI辅助编程,不一样的编程思路,不写一行代码FastBean3 小时前Jackson View Extension Spring Boot StarterSeven974 小时前剑指offer-79、最⻓不含重复字符的⼦字符串皮皮林55113 小时前Java性能调优黑科技!1行代码实现毫秒级耗时追踪,效率飙升300%!冰_河14 小时前QPS从300到3100:我靠一行代码让接口性能暴涨10倍,系统性能原地起飞!!桦说编程16 小时前从 ForkJoinPool 的 Compensate 看并发框架的线程补偿思想热门推荐01GitHub 镜像站点02OpenClaw 使用和管理 MCP 完全指南03OpenClaw + 飞书(Feishu)环境搭建指南04【OpenClaw 本地实战 Ep.3】突破瓶颈:强制修改 openclaw.json 解锁 32k 上下文记忆05Claude Code + GLM4.7 避坑指南:解决 Unable to connect to Anthropic services06OpenClaw优化飞书API 额度已耗尽问题07Window 10部署openclaw报错node.exe : npm error code 12808Clawdbot部署教程:解决‘gateway token missing’授权问题的完整步骤09OpenClaw大龙虾机器人完整安装教程10小黑课堂计算机二级WPSoffice题库软件下载安装教程(2026年3月最新版)
-