JavaWeb笔记

六、MVC模式

Model(模型)

职责:处理数据和业务逻辑。

  • 负责数据的存储、读取和操作。

  • 包含业务规则和逻辑。


View(视图)

职责:展示界面和接收用户输入。

  • 把数据以可视化的形式呈现给用户。

  • 不处理业务逻辑,只负责显示。


Controller(控制器)

职责:协调模型与视图,处理请求。

  • 接收用户请求(如点击按钮、提交表单)。

  • 调用模型处理业务逻辑。

  • 控制流程并决定使用哪个视图展示结果。

七、页面提交方式

跳转方式触发方式是否能传值传递值的方式声明跳转的方法/示例
超链接点击URL参数(查询字符串)<a href="targetPage.jsp?param1=value1¶m2=value2">Link</a>
表单提交(自动或编程式)表单字段(GET方法:URL参数;POST方法:请求体)<form action="targetServlet" method="GET/POST">...</form>
Forward动作自动(服务器端)请求属性(仅在同一个请求内有效)request.getRequestDispatcher("target.jsp").forward(request, response);
SendRedirect自动(客户端重定向)URL参数 或 Session/sessionStorage等response.sendRedirect("targetPage.jsp")
RequestDispatcher自动(服务器端)请求属性(forward())或直接包含内容(include()getServletContext().getRequestDispatcher("/target").include(request, response);

八、JSP的标签

1. <%@ page %>:定义页面相关的属性
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"import="java.util.*, com.example.*"
%>
2. <%@ include %>:静态包含其他文件的内容
<%@ include file="path/to/file.jsp" %>
3. <jsp:include>:动态地包含另一个资源
<jsp:include page="path/to/file.jsp"><jsp:param name="paramName" value="paramValue"/>
</jsp:include>
4. <jsp:forward>:转发请求到另一个资源
<jsp:forward page="path/to/resource.jsp"><jsp:param name="paramName" value="paramValue"/>
</jsp:forward>
5. <jsp:param>:传递参数给<jsp:include><jsp:forward>
<jsp:param name="paramName" value="paramValue"/>
6. <jsp:useBean>:查找或实例化一个JavaBean
7. <jsp:setProperty>:设置JavaBean的属性值
8. <jsp:getProperty>:获取JavaBean的属性值
<body><jsp:useBean id="user" class="com.example.User" scope="request"/><jsp:setProperty name="user" property="name" value="John Doe"/><jsp:setProperty name="user" property="age" value="30"/>
​<h1>User Information</h1><p>Name: <jsp:getProperty name="user" property="name"/></p><p>Age: <jsp:getProperty name="user" property="age"/></p>
</body>

九、过滤器(Filter)

作用:用于对客户端请求和服务器响应进行预处理或后处理(比如可以省掉每个Servlet的字符编码设置)

XML配置:同Servlet

<filter>

<filter-name>myFilter</filter-name>

<filter-class>com.example.MyFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>myFilter</filter-name>

<url-pattern>/*</url-pattern>

使用通配符*,匹配所有的请求

</filter-mapping>

需要重写三个最重要的 方法

十、监听器(Listener)

作用:ServletContextListener监听容器启动和销毁,还可以监听会话或者请求只要实现不同接口

  • ServletContextListener:监听Web应用的启动(contextInitialized)和关闭(contextDestroyed)事件。

  • HttpSessionListener:监听HttpSession的创建(sessionCreated)和销毁(sessionDestroyed)事件。

  • ServletRequestListener:监听ServletRequest的创建(requestInitialized)和销毁(requestDestroyed)事件。

  • HttpSessionAttributeListener:监听HttpSession中属性的添加、移除或替换事件。

  • ServletContextAttributeListener:监听ServletContext中属性的添加、移除或替换事件。

实现相关接口:重写一些用到的方法

xml配置

<listener>

<listener-class>com.example.MyContextListener</listener-class>

</listener>

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

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

相关文章

解决启动SpringBoot是报错Command line is too long的问题

文章目录 错误全称原因解决方法&#xff08;一图到底&#xff09; 错误全称 在启动springBoot项目时&#xff0c;会报错&#xff1a; Error running Application. Command line is too long. Shorten the command line via JAR manifest 原因 命令行太长的原因导致SpringBoot和…

DAY47打卡

DAY 47 注意力热图可视化 昨天代码中注意力热图的部分顺移至今天 知识点回顾&#xff1a;热力图&#xff08;代码学习在day46天&#xff09; 作业&#xff1a;对比不同卷积层热图可视化的结果 通道注意力热图的代码整体结构与核心功能 数据处理&#xff1a;对 CIFAR-10 数据集进…

Java在word中指定位置插入图片。

Java使用&#xff08;Poi-tl&#xff09; 在word&#xff08;docx&#xff09;中指定位置插入图片 Poi-tl 简介Maven 依赖配置Poi-tl 实现原理与步骤1. 模板标签规范2.完整实现代码3.效果展示 Poi-tl 简介 Poi-tl 是基于 Apache POI 的 Java 开源文档处理库&#xff0c;专注于…

迁移科技:破解纸箱拆垛场景的自动化升级密码

一、当传统拆垛遇上智能视觉&#xff1a;一场效率革命的必然选择 在汽车制造基地的物流中转区&#xff0c;每天有超过2万件零部件纸箱需要完成拆垛分拣。传统人工拆垛面临三大挑战&#xff1a; 效率瓶颈&#xff1a;熟练工人每小时处理量不超过200箱安全隐患&#xff1a;重型…

redis和redission的区别

Redis 和 Redisson 是两个密切相关但又本质不同的技术&#xff0c;它们扮演着完全不同的角色&#xff1a; Redis: 内存数据库/数据结构存储 本质&#xff1a; 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能&#xff1a; 提供丰…

AIStarter 4.0 苹果版体验评测|轻松部署 ComfyUI 与 DeepSeek 的 AI 工具箱

最近在测试一款名为 AIStarter 4.0 的 AI 工具管理平台&#xff0c;主要用于在 Mac 系统上快速部署各类开源 AI 项目&#xff0c;如 ComfyUI 和 DeepSeek &#xff0c;非常适合开发者、设计师及 AI 入门者使用。 通过简单的拖拽操作即可完成安装&#xff0c;支持普通下载与网盘…

ArcGIS Pro 3.4 二次开发 - 图形图层

环境:ArcGIS Pro SDK 3.4 + .NET 8 文章目录 图形图层1.1 创建图形图层1.2 访问GraphicsLayer1.3 复制图形元素1.4 移除图形元素2 创建图形元素2.1 使用CIMGraphic创建点图形元素2.2 使用CIMGraphic创建线图元素2.3 使用 CIMGraphic 的多边形图形元素2.4 使用CIMGraphic创建多…

《广度优先搜索》题集

1、模板题集 聚合一块 2、课内题集 寻找图中是否存在路径 钥匙和房间 受限条件下可到达节点的数目 3、课后题集 最少操作数 社交网络新来的朋友 Ignatius and the Princess I Collect More Jewels Gap Nightmare Remainder Ferry Loading III 连连看 诡异的楼梯 Open the …

界面组件DevExpress WPF中文教程:Grid - 如何获取行句柄?

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

零跑汽车5月交付45067台车,同比增长超148%

零跑汽车在5月交付新车45,067辆&#xff0c;同比大增148%&#xff0c;连续5个月实现单月交付量增长&#xff0c;稳居新势力交付量第一位置。今年1-5月&#xff0c;零跑累计交付新车达173,658辆&#xff0c;展现出强劲的市场竞争力和产品实力。 根据Q1财报&#xff0c;零跑不仅营…

netty中的粘包问题详解

一起来学netty 一、粘包问题的本质二、粘包问题的成因三、Netty中的解决方案1. 固定长度解码器(FixedLengthFrameDecoder)2. 行分隔符解码器(LineBasedFrameDecoder)3. 分隔符解码器(DelimiterBasedFrameDecoder)4. 长度字段解码器(LengthFieldBasedFrameDecoder)四、解…

【基础算法】枚举(普通枚举、二进制枚举)

文章目录 一、普通枚举1. 铺地毯(1) 解题思路(2) 代码实现 2. 回文日期(1) 解题思路思路一&#xff1a;暴力枚举思路二&#xff1a;枚举年份思路三&#xff1a;枚举月日 (2) 代码实现 3. 扫雷(2) 解题思路(2) 代码实现 二、二进制枚举1. 子集(1) 解题思路(2) 代码实现 2. 费解的…

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…

学习日记-day24-6.8

完成内容&#xff1a; 知识点&#xff1a; 1.网络编程_TCP编程 ### 编写客户端1.创建Socket对象,指明服务端的ip以及端口号 2.调用socket中的getOutputStream,往服务端发送请求 3.调用socket中的getInputStream,读取服务端响应回来的数据 4.关流public class Client {public…

JavaScript 核心对象深度解析:Math、Date 与 String

JavaScript 作为 Web 开发的核心语言&#xff0c;提供了丰富的内置对象来简化编程工作。本文将深入探讨三个重要的内置对象&#xff1a;Math、Date 和 String&#xff0c;通过详细的代码示例和综合案例帮助你全面掌握它们的用法。 一、Math 对象 Math 对象提供了一系列静态属…

HarmonyOS开发:设备管理使用详解

目录 前言 设备管理概述 设备管理组成 1、电量信息 &#xff08;1&#xff09;导入模块 &#xff08;2&#xff09;属性信息 &#xff08;3&#xff09;常用属性 &#xff08;4&#xff09;使用示例 2、设备信息 &#xff08;1&#xff09;导入模块 &#xff08;2&a…

el-select下拉框 添加 el-checkbox 多选框

效果 vue <el-select v-model"value" multiple style"width: 100%" popper-class"select-popover-class" placeholder"请选择试验项目"><el-option v-for"item in options" :key"item.value" :value&qu…

Memory Repair (三)

Top-Level Verification and Pattern Generation 本节涵盖 fuse box 编程、顶层 BISR&#xff08;内置自修复&#xff09;验证以及生产测试 pattern 的生成 Fuse Box Programming 通过 BISR controller 对 fuse box 进行编程的两种方法如下&#xff1a; • 采用 Autonomous mod…

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…