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

动态规划 路径类 DP 入门:3 道经典例题(最小路径和 + 迷雾森林 + 过河卒)全解析

动态规划 路径类 DP 入门:3 道经典例题(最小路径和 + 迷雾森林 + 过河卒)全解析

文章目录 * 矩阵的最小路径和 * 迷雾森林 * 过河卒 路径类 dp 是线性 dp 的⼀种,它是在⼀个 n × m 的矩阵中设置⼀个⾏⾛规则,研究从起点⾛到终点的 ⽅案数、最⼩路径和或者最⼤路径和等等的问题。 ⼊⻔阶段的《数字三⻆形》其实就是路径类 dp。 矩阵的最小路径和 题目描述 题目解析 1、状态表示 dp[i][j]表示从[1 1]格子走到[i j]格子时,所有方案下的最小路径和。 2、状态转移方程 我们还是以最后一步来推导状态转移方程,走到最后一个格子dp[n][m]

By Ne0inhk
数据结构—顺序表超经典算法

数据结构—顺序表超经典算法

数据结构—顺序表链表经常用到的算法 * 所有题目链接 * 顺序表算法题(双指针法) * 移除元素 * 删除有序数组中的重复项 * 合并两个有序数组 * 链表算法题(快慢指针,三指针法,创建新链表法) * 移除链表元素 * 反转链表 * 链表的中间节点 * 合并两个有序链表 * 链表分割 * 链表的回文结构 * 相交链表 * 环形链表(快慢指针) * 环形链表I * 环形链表II * 代码仓库 所有题目链接 移除元素 删除有序数组中的重复项 合并两个有序数组 移除链表元素 反转链表 链表的中间节点 合并两个有序链表 链表分割 链表的回文结构 相交链表 环形链表I 环形链表II 顺序表算法题(双指针法) 移除元素 题目链接↓ 移除元素 题目讲解↓ 思路:双指针法,创建两个变量dst,src如果src指向的数据是val,src++如果src指向的数据不是val,赋值(

By Ne0inhk

深度优先搜索(DFS)详解及C++实现

深度优先搜索(DFS)详解及C++实现 一、什么是深度优先搜索(DFS)? 深度优先搜索(Depth-First Search,简称DFS)是一种用于遍历或搜索树或图的算法。其核心思想是:尽可能深地搜索图的分支,当某条分支搜索到尽头无法继续前进时,回溯到上一个节点,再选择另一条未探索的分支继续搜索,直到所有节点都被访问完毕。 可以用一个生动的比喻理解DFS:想象你走进一个迷宫,每次遇到岔路时,随机选择一条路一直走,直到走到死胡同(无法继续前进),然后沿原路返回上一个岔路,选择另一条未走过的路继续探索,直到找到出口或遍历完整个迷宫。 DFS的实现通常依赖栈(Stack)这种数据结构(手动实现时),或者直接利用递归函数调用栈(更简洁,也是最常用的方式)。递归实现的本质是将每次的节点访问和回溯过程交给函数栈来管理,无需手动维护栈结构。 二、DFS的核心特性与适用场景 1. 核心特性 * 不撞南墙不回头:优先深入探索当前分支,而非横向遍历同级节点; * 回溯思想:探索到尽头后,返回上一节点继续探索其他分支,需要记录节点访问状态(避免重复访问); * 空间复杂度:取决于

By Ne0inhk
《算法题讲解指南:优选算法-滑动窗口》--13 水果成篮

《算法题讲解指南:优选算法-滑动窗口》--13 水果成篮

🔥小叶-duck:个人主页 ❄️个人专栏:《Data-Structure-Learning》 《C++入门到进阶&自我学习过程记录》《算法题讲解指南》--从优选到贪心 ✨未择之路,不须回头 已择之路,纵是荆棘遍野,亦作花海遨游 目录 13 水果成篮 题目链接: 编辑 题目示例: 解法(滑动窗口): 算法思路: 算法流程: C++代码演示:方法一(使用容器) C++代码演示:方法二(用数组模拟哈希表) 算法总结及流程解析: 结束语 13 水果成篮 题目链接: 题目示例: 解法(滑动窗口): 算法思路:       研究的对象是一段连续的区间,可以使用【滑动窗口】思想来解决问题。       让滑动窗口满足:窗口内水果的种类只有两种。       做法:右端水果进入窗口的时候,

By Ne0inhk