当前位置: 首页 > news >正文

JSP实现数据传递与保存(一)

一、Web开发步骤

1.1两类模式

后端——————前端

先有前端,前端用的时候直接调用

后端已实现注册接口,接口名为doRegister.jsp

前端此时:

        前端的form表单中的action提交地址就只能填doRegister.jsp,即:

<form class="form-group" action="servlet/doRegister.jsp" method="post"></form>

前端——————后端

先有前端(需求),后端去实现前端指定的请求接口

现在前端是index.jsp,里面有一个注册的form表单,但当前action未指定地址

所以要先指定action地址,假如是servlet/doRegister.jsp

后端此时:

  1. 先要创建一个servlet文件夹
  2. 在servlet文件夹中写一个doRegister.jsp页面
  3. 在doRegister.jsp页面中写注册的实现逻辑

1.2Web请求流程的角色分工

三层架构

表示层——依赖于——业务层——依赖于——数据访问层

表示层————业务层————数据访问层

MVC模式

视图层(表示层)————请求层————模型层(业务层+数据访问层)

二合一结构

前端(表示层)————请求层————业务层————数据访问层

以注册功能为例:

  • 前端:form:只收集数据然后提交,此时数据提交给了请求API(servlet),比如request
  • 请求层:servlet,来解析API中保存的数据,然后发给业务层
  • 业务逻辑层:service,调用dao层,获取数据访问结果,并对数据进行逻辑处理加工
  • 数据访问层:dao,编写SQL语句并解析结果

二、JSP内置对象

JSP内置对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明。JSP所支持的九大内置对象:

2.1 JSP内置对象request

  • 主要用于处理客户端请求
  • request对象中保存了用户的请求数据和浏览器的相关信息,通过调用相关方法就可以实现请求数据的读取

2.2.1 request对象的常用方法

2.2.2 使用request对象获取注册信息代码演示

HTML部分代码:

            <!-- 注册窗口 --><div id="register" class="modal fade" tabindex="-1"><div class="modal-dialog"><div class="modal-content"><div class="modal-body"><button class="close" data-dismiss="modal"><span>&times;</span></button></div><div class="modal-title"><h1 class="text-center">注册</h1></div><div class="modal-body"><form class="form-group" action="servlet/doRegister.jsp" method="post"><div class="form-group"><label for="userName">用户名</label><input id="userName" name="userName" class="form-control" type="text" required placeholder="6-15位字母或数字"></div><div class="form-group"><label for="userPwd">密码</label><input id="userPwd" name="userPwd" class="form-control" type="password" required placeholder="至少6位字母或数字"></div><div class="form-group"><label for="repwd">再次输入密码</label><input id="repwd" class="form-control" type="password" placeholder="至少6位字母或数字"></div><div class="form-group"><label for="email">邮箱</label><input id="email" name="email" class="form-control" type="email" required placeholder="例如:123@123.com"></div><div class="text-right"><button class="btn btn-primary" type="submit">保存</button><button class="btn btn-danger" data-dismiss="modal">取消</button></div><a href="" data-toggle="modal" data-dismiss="modal" data-target="#login">已有账号?点我登录</a></form></div></div></div></div>

JSP代码:

<%@ page contentType="text/html;charset=UTF-8" language="java" %><%//小脚本,根据//修改request的字符集编码request.setCharacterEncoding("UTF-8");//获取注册的用户名String userName = request.getParameter("userName");//获取注册的密码String userPwd = request.getParameter("userPwd");//获取注册的邮箱String email = request.getParameter("email");System.out.print("用户名:" + userName + "\n" + "密码:" + userPwd + "\n" + "邮箱:" + email);
%>

2.2 get与post的区别

2.3 JSP内置对象response

  • response对象用于响应客户请求并向客户端输出信息

2.3.1 response对象的常用方法

2.3.2 使用response实现登录验证并跳转到后台代码演示

HTML部分代码:

            <!-- 登录窗口 --><div id="login" class="modal fade"><div class="modal-dialog"><div class="modal-content"><div class="modal-body"><button class="close" data-dismiss="modal"><span>&times;</span></button></div><div class="modal-title"><h1 class="text-center">登录</h1></div><div class="modal-body"><form class="form-group" action="servlet/doLogin.jsp"  method="post"><div class="form-group"><label for="userName">用户名</label><input name="userName" class="form-control" type="text" placeholder=""></div><div class="form-group"><label for="userPwd">密码</label><input name="userPwd" class="form-control" type="password" placeholder=""></div><div class="text-right"><button class="btn btn-primary" type="submit">登录</button><button class="btn btn-danger" data-dismiss="modal">取消</button></div><a href="" data-toggle="modal" data-dismiss="modal" data-target="#register">还没有账号?点我注册</a></form></div></div></div></div>

JSP部分代码:

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html>
<head><title></title>
</head>
<body>
<%//修改request和response的字符集编码request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");//获取注册的用户名和密码String userName = request.getParameter("userName");String userPwd = request.getParameter("userPwd");if ("admin".equals(userName) && "123456".equals(userPwd)) {//登录成功,使用绝对定位跳转到后台主页//重定向跳转://response.sendRedirect(request.getContextPath() + "/manage/index.jsp");//转发跳转:request.getRequestDispatcher("/manage/index.jsp").forward(request,response);} else {//登录失败,调回系统登录首页//这种写法也属于重定向跳转:out.print("<script>alert('登录失败');location.href=" + request.getContextPath() + "/index.jsp");out.flush();}
%>
</body>
</html>

2.4 转发与重定向

张——冯——李

张找冯借500元,

        冯没有,于是冯找李借500元

        冯把500元返回给张

张找冯借500元,

        冯说我没有,你找李

        张找李借500元

        李把500元返回给周

  • 转发:一次请求(URL不变),是服务端内部的资源交互,转发过程中数据不会丢失
  • 重定向:两次请求(URL改变),从客户端出发,重定向后数据会丢失

相关文章:

JSP实现数据传递与保存(一)

一、Web开发步骤 1.1两类模式 后端——————前端 先有前端&#xff0c;前端用的时候直接调用 后端已实现注册接口&#xff0c;接口名为doRegister.jsp 前端此时&#xff1a; 前端的form表单中的action提交地址就只能填doRegister.jsp&#xff0c;即&#xff1a; <f…...

【论文笔记之 YIN】YIN, a fundamental frequency estimator for speech and music

本文对 Alain de Cheveigne 等人于 2002 年在 The Journal of the Acoustical Society of America 上发表的论文进行简单地翻译。如有表述不当之处欢迎批评指正。欢迎任何形式的转载&#xff0c;但请务必注明出处。 论文链接&#xff1a;http://audition.ens.fr/adc/pdf/2002_…...

水印相机小程序源码

水印相机前端源码&#xff0c;本程序无需后端&#xff0c;前端直接导入即可&#xff0c;没有添加流量主功能&#xff0c;大家开通后自行添加 源码搜索&#xff1a;源码软件库 注意小程序后台的隐私权限设置&#xff0c;前端需要授权才可使用 真实时间地址拍照记录&#xff0c…...

NXP实战笔记(八):S32K3xx基于RTD-SDK在S32DS上配置LCU实现ABZ解码

目录 1、概述 2、SDK配置 2.1、IO配置 2.2、TRGMUX配置 2.3、LCU配置 2.4、Trgmux配置 2.5、Emios配置 2.6、代码实现 1、概述 碰到光电编码器、磁编码器等,有时候传出来的位置信息为ABZ的方式,在S32K3里面通过TRGMUX、LCU、Emios结合的方式可以实现ABZ解码。 官方…...

【深度好文】simhash文本去重流程

对于类似于头条客户端而言,推荐的每一刷的新闻都必须是不同的新闻,这就需要对新闻文本进行排重。传统的去重一般是对文章的url链接进行排重,但是对于抓取的网页来说,各大平台的新闻可能存在重复,对于只通过文章url进行排重是不靠谱的,为了解决这个痛点于是就提出了用simh…...

主流的开发语言和开发环境介绍

个人浅见&#xff0c;不喜勿喷&#xff0c;谢谢 软件开发是一个涉及多个方面的复杂过程&#xff0c;其中包括选择合适的编程语言和开发环境。编程语言是软件开发的核心&#xff0c;它定义了程序员用来编写指令的语法和规则。而开发环境则提供了编写、测试和调试代码的工具和平台…...

List去重有几种方式

目录 1、for循环添加去重 2、for 双循环去重 3、for 双循环重复坐标去重 4、Set去重 5、stream流去重 1、for循环添加去重 List<String> oldList new ArrayList<>();oldList.add("张三");oldList.add("张三");oldList.add("李四&q…...

使用C#+NPOI进行Excel处理,实现多个Excel文件的求和统计

一个简易的控制台程序&#xff0c;使用C#NPOI进行Excel处理&#xff0c;实现多个Excel文件的求和统计。 前提&#xff1a; 待统计的Excel格式相同统计结果表与待统计的表格格式一致 引入如下四个动态库&#xff1a; 1. NPOI.dll 2. NPOI.OOXML.dll 3. NPOI.OpenXml4Net.dll …...

华清远见嵌入式学习——驱动开发——day9

目录 作业要求&#xff1a; 作业答案&#xff1a; 代码效果&#xff1a; ​编辑 Platform总线驱动代码&#xff1a; 应用程序代码&#xff1a; 设备树配置&#xff1a; 作业要求&#xff1a; 通过platform总线驱动框架编写LED灯的驱动&#xff0c;编写应用程序测试&…...

formality:set_constant应用

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 往期文章链接: formality:形式验证流程 scan mode func的功能检查需要把scan mode设置成0。...

sqllabs的order by注入

当我们在打开sqli-labs的46关发现其实是个表格&#xff0c;当测试sort等于123时&#xff0c;会根据列数的不同来进行排序 我们需要利用这个点来判断是否存在注入漏洞&#xff0c;通过加入asc 和desc判断页面有注入点 1、基于使用if语句盲注 如果我们配合if函数&#xff0c;表达…...

《The Art of InnoDB》第二部分|第4章:深入结构-磁盘结构-redo log

4.3 redo log 目录 4.3 redo log 4.3.1 redo log 介绍 4.3.2 redo log 的作用 4.3.3 redo log file 结构 4.3.4 redo log 提交逻辑 4.3.5 redo log 持久化逻辑 4.3.6 redo log 检查点 4.3.7 小结...

大模型安全相关论文

LLM对于安全的优势 “Generating secure hardware using chatgpt resistant to cwes,” Cryptology ePrint Archive, Paper 2023/212, 2023评估了ChatGPT平台上代码生成过程的安全性&#xff0c;特别是在硬件领域。探索了设计者可以采用的策略&#xff0c;使ChatGPT能够提供安…...

回归预测 | Matlab实现PSO-BiLSTM-Attention粒子群算法优化双向长短期记忆神经网络融合注意力机制多变量回归预测

回归预测 | Matlab实现PSO-BiLSTM-Attention粒子群算法优化双向长短期记忆神经网络融合注意力机制多变量回归预测 目录 回归预测 | Matlab实现PSO-BiLSTM-Attention粒子群算法优化双向长短期记忆神经网络融合注意力机制多变量回归预测预测效果基本描述程序设计参考资料 预测效果…...

[算法沉淀记录] 排序算法 —— 堆排序

排序算法 —— 堆排序 算法基础介绍 堆排序&#xff08;Heap Sort&#xff09;是一种基于比较的排序算法&#xff0c;它利用堆这种数据结构来实现排序。堆是一种特殊的完全二叉树&#xff0c;其中每个节点的值都必须大于或等于&#xff08;最大堆&#xff09;或小于或等于&am…...

C++ //练习 9.33 在本节最后一个例子中,如果不将insert的结果赋予begin,将会发生什么?编写程序,去掉此赋值语句,验证你的答案。

C Primer&#xff08;第5版&#xff09; 练习 9.33 练习 9.33 在本节最后一个例子中&#xff0c;如果不将insert的结果赋予begin&#xff0c;将会发生什么&#xff1f;编写程序&#xff0c;去掉此赋值语句&#xff0c;验证你的答案。 环境&#xff1a;Linux Ubuntu&#xff0…...

[corCTF 2022] CoRJail: From Null Byte Overflow To Docker Escape

前言 题目来源&#xff1a;竞赛官网 – 建议这里下载&#xff0c;文件系统/带符号的 vmlinux 给了 参考 [corCTF 2022] CoRJail: From Null Byte Overflow To Docker Escape Exploiting poll_list Objects In The Linux Kernel – 原作者文章&#xff0c;poll_list 利用方式…...

thinkphp6定时任务

这里主要是教没有用过定时任务没有头绪的朋友, 定时任务可以处理一些定时备份数据库等一系列操作, 具体根据自己的业务逻辑进行更改 直接上代码 首先, 是先在 tp 中的 command 方法中声明, 如果没有就自己新建一个, 代码如下 然后就是写你的业务逻辑 执行定时任务 方法写好了…...

支持国密ssl的curl编译和测试验证(上)

目录 1. 编译铜锁ssl库2. 编译nghttp2库3. 编译curl4. 验证4.1 查看版本信息4.2 验证国密ssl握手功能4.3 验证http2协议功能 以下以ubuntu 22.04环境为例进行编译 本次编译采用铜锁sslnghttp2curl&#xff0c;使得编译出来的curl可以支持国密ssl&#xff0c;并且可以支持http2…...

包装类详解

概述 Java提供了两个类型系统&#xff0c;基本类型与引用类型&#xff0c;使用基本类型在于效率&#xff0c;然而很多情况&#xff0c;会创建对象使用&#xff0c;因为对象可以做更多的功能&#xff0c;如果想要我们的基本类型像对象一样操作&#xff0c;就可以使用基本类型对…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!

目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...