JSP基础1:客户端请求端,前端和后端的联系(半成品)

JSP虽然是20年前的老框架,它的存在是为了讲解前后端不分离,在前端html,css中可以嵌入兼容java后端代码,类似的有vue3

下面的看不懂先跳过

问题如下:request对象 = 后端创建,封装前端发送的数据或请求. 还有哪些对象可以对前后端互相发送的请求做处理.哪些对象可以进行前后端交互

在Java Web开发中,主要使用以下对象处理前后端交互:(JSP很老的框架没必要都学把下面能让你理解前后端交互的学了就行)

对象创建位置主要作用数据流向
request服务器端封装请求信息前端→后端
response服务器端封装响应信息后端→前端
session服务器端维护用户会话双向
application服务器端全局共享数据双向
Cookie服务器端创建,前端存储小数据持久化双向
选择建议:临时数据传递 → request用户状态保持 → session小数据持久化 → Cookie全局数据共享 → application

以上内容看不懂先跳过

1. "客户端"的含义

在 request 对象的上下文中,"客户端"指的是:

  • 浏览器(Chrome、Firefox、Edge等): 用户在浏览器中访问网站
  • 发起HTTP请求的设备(用户的电脑、手机等)
  • 不是指JSP页面本身
请求流程分析

浏览器(客户端) → JSP登录页面.jsp → 响应登录.jsp
        ↓                            ↓                            ↓
  发起请求                显示表单             处理登录逻辑

客户端 = 浏览器(用户操作的界面)
服务器端 = Tomcat服务器 + Servlet/JSP代码(处理请求的后端)

 用以下2个jsp文件代码讲解:

JSP登录页面.jsp:

tomcat服务器运行后会通过 form标记 跳转到响应登录.jsp响应登录.jsp:

tomcat服务器运行响应登录.jsp后会跳转到浏览器端显示用户名和密码



2. 实际请求过程大致为:

  1. 客户端(浏览器)                                             服务器端(Tomcat+JSP)
         |  0.tomcat服务器在后端编译JSP代码 将JSP转换为servlet       |
         | ① (发送请求到服务器端)访问JSP登录页面.jsp (
    对应整个登录页面.jsp的代码)                        
         |------------------------------------------------------------------------------- >  | 
         |                                                                                                     |
         | ② 返回登录表单(
    对应以下代码)                                                 |
         |<----------------------------------------------------------------------------------
  2.      |                                                                                                     |
         | ③ 填写表单,点击登录                                                               |
         |                                                                                                     |
         | ④ 发送POST请求(响应登录.jsp)                                                |
  3.      |                                                  | ⑤ 创建request对象(请求处理阶段:5,6,7)
         |                                                  | ⑥ 执行响应登录.jsp
         |                                                  | ⑦ 生成HTML响应
         | ⑧ 接收HTML响应                                                                      |
         |<---------------------------------------------------------------------------------|
         |                                                                                                     |
         | ⑨ 渲染显示页面                                                                         |
         |                                                                                                     |

      

<form action="响应登录.jsp" method="post">


     |---------------------------------------------------------------------------------->|

<%--jsp登录页面.jsp--%> <form action="响应登录.jsp" method="post"> 用户名:<input type="text" name="username"> 密码:<input type="text" name="password"> <input type="submit" name="登录"> </form>
  • 编译阶段:JSP→Servlet(首次访问)
  • 运行时阶段:处理请求(每次请求)
客户端(前端/移动端):步骤①②③④⑧⑨(浏览器操作)服务器端(后端):步骤④⑤⑥⑦(Tomcat处理)以上代码的关键点:request对象在服务器端(后端)创建,用于封装客户端(前端)发送的数据或1. 客户端(前端/移动端)

包括但不限于Web前端:浏览器(Chrome、Firefox等)移动端:iOS App、Android App桌面应用:Windows/Mac客户端程序其他客户端:小程序、物联网设备等服务器端(后端)

包括但不限于Web服务器:Tomcat、Nginx、Apache应用服务器:Spring Boot应用、Java EE应用数据库服务器:MySQL、Oracle等微服务:各种后端服务

阶段1:首次访问JSP登录页面(步骤①-②)

① 发送请求到服务器端

  • 浏览器请求JSP登录页面.jsp
  • 对应文件位置:web/JSP登录页面.jsp

② 返回登录表单

  • 服务器返回的HTML内容对应第13-16行的表单代码
  • 代码位置:web/JSP登录页面.jsp

阶段2:表单提交处理(步骤③-⑨)

③ 填写表单,点击登录

  • 用户在第14行输入用户名,第15行输入密码
  • 点击第16行的提交按钮

④ 发送POST请求

  • 表单提交到响应登录.jsp
  • 对应第13行的action="响应登录.jsp"method="post"

⑤-⑦ 服务器处理阶段

  • 这3步属于运行时请求处理阶段,不是编译阶段
  • 编译阶段只在JSP首次访问时执行一次
  • 请求处理阶段在每次表单提交时都会执行

⑧-⑨ 响应处理

  • 浏览器接收并渲染服务器返回的HTML

Read more

大力学习台灯T6/T6Pro 救砖实战:macOS/Windows 用 mtkclient 从 Fastboot 无限重启完整恢复(含固件下载地址)

大力学习台灯T6/T6Pro 救砖实战:macOS/Windows 用 mtkclient 从 Fastboot 无限重启完整恢复(含固件下载地址)

大力学习台灯T6/T6Pro(MTK)救砖实战(小白可用):macOS/Windows 用 mtkclient 从 Fastboot/Logo 无限重启完整恢复(含恢复原机 SN/proinfo) 本文记录一次 Dali T6 学习机(联发科 MTK 平台,示例识别为 MT6771/0x788 系列)从“卡 Fastboot / Logo 无限重启”到 成功进入系统,并最终 恢复原机 SN/设备身份(proinfo) 的完整过程。 如果你是小白:你只需要按本文顺序复制粘贴命令即可。每一步我都写了: TL;DR(傻瓜式总流程:照抄就能修) 下面这套是“最短路径”修复流程:

By Ne0inhk
Flutter 三方库 galileo_mysql 的鸿蒙化适配指南 - 支持 MySQL 8.0 协议、高性能长连接与异步事务处理

Flutter 三方库 galileo_mysql 的鸿蒙化适配指南 - 支持 MySQL 8.0 协议、高性能长连接与异步事务处理

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 galileo_mysql 的鸿蒙化适配指南 - 支持 MySQL 8.0 协议、高性能长连接与异步事务处理 前言 在 Flutter for OpenHarmony 的应用开发中,直接在端侧进行数据库操作虽然不是主流(通常通过 API),但在某些边缘计算或内网工具类场景下,直接连接 MySQL 数据库依然是刚需。galileo_mysql 作为一个纯 Dart 实现的 MySQL 驱动,其天然的跨平台属性使其成为鸿蒙端直接操作 MySQL 的首选。本文将详细介绍如何在 OpenHarmony 环境下适配并使用该库。 一、原理解析 / 概念介绍 1.1 基础原理 galileo_

By Ne0inhk

Flutter 三方库 sync_http 的鸿蒙化适配指南 - 掌控同步网络请求、底层脚本通讯实战、鸿蒙级工具开发专家

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 sync_http 的鸿蒙化适配指南 - 掌控同步网络请求、底层脚本通讯实战、鸿蒙级工具开发专家 在鸿蒙跨平台应用开发中,虽然绝大多数场景都提倡异步处理,但在某些特定的底层工具开发、初始化脚本或极其简易的命令行工具(CLI)中,我们需要一种简单、直接的同步(Synchronous)HTTP 请求能力。如果你追求的是那种“发请求、等结果、再继续”的线性逻辑。今天我们要深度解析的 sync_http——一个专门为同步阻塞式网络交互设计的 Dart 库,正是帮你实现“确定性通讯”的差异化神器。 前言 sync_http 是 Dart 标准库中被广泛引用的同步 HTTP 实现。它不使用 Future 或

By Ne0inhk
Flutter 三方库 jao 的鸿蒙化适配指南 - 实现极简的对象映射(Object Mapping)逻辑、支持数据传输对象(DTO)与领域实体的高效转换

Flutter 三方库 jao 的鸿蒙化适配指南 - 实现极简的对象映射(Object Mapping)逻辑、支持数据传输对象(DTO)与领域实体的高效转换

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 jao 的鸿蒙化适配指南 - 实现极简的对象映射(Object Mapping)逻辑、支持数据传输对象(DTO)与领域实体的高效转换 前言 在进行 Flutter for OpenHarmony 的分层架构开发时,我们经常需要在 API 响应模型(DTO)与业务领域实体(Domain Entity)之间进行数据转换。虽然手动编写转换逻辑可以胜任,但随着业务复杂度增加,代码中会充斥大量重复的赋值语句。jao 是一个主打极简风格的对象映射库。本文将探讨如何在鸿蒙端利用该库提升模型转换的效率。 一、原理解析 / 概念介绍 1.1 基础原理 jao 的核心思想是通过定义声明式的映射规则,利用 Dart 的扩展方法(Extension Methods)

By Ne0inhk