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改变),从客户端出发,重定向后数据会丢失

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ESD管理应用中的浪涌电阻?

静电放电 &#xff08;ESD&#xff09; 会对敏感的电子元件和电路造成严重破坏。为了保护电子设备免受ESD的影响&#xff0c;系统设计人员采用了许多保护措施&#xff0c;包括浪涌电阻器。本文探讨了浪涌电阻器在ESD管理应用中的作用。 首先是一个定义&#xff0c;术语脉冲通常…

Rider 2023:打造高效.NET项目的智能IDE,让开发更简单mac/win版

JetBrains Rider 2023激活版下载是一款专为.NET开发者打造的强大集成开发环境&#xff08;IDE&#xff09;。这款IDE提供了丰富的功能&#xff0c;旨在帮助开发者更快速、更高效地编写、调试和测试.NET应用程序。 Rider 2023 软件获取 Rider 2023在保持了其一贯的智能代码补全…

jmeter 数据库断言

当前版本&#xff1a; jmeter 5.6.3mysql 5.7.39 简介 本篇文章主要通过获取结果集断言&#xff0c;流程&#xff1a;先通过查看结果树获取正确结果&#xff0c;再将正确的结果放入文本断言中&#xff0c;直接启动即可。测试数据库的详细方法见另一篇文章&#xff1a; https:/…

设计模式(八)外观模式

相关文章设计模式系列 1.外观模式简介 外观模式介绍 当我们开发Android的时候&#xff0c;无论是做SDK还是封装API&#xff0c;我们大多都会用到外观模式&#xff0c;它通过一个外观类使得整个系统的结构只有一个统一的高层接口&#xff0c;这样能降低用户的使用成本。 外观…

【c++leetcode】1382. Balance a Binary Search Tree

问题入口 DSW (DAY, STOUT & WARREN) ALGORITHM 时间复杂度O(n) class Solution { public:int makeVine(TreeNode* grand, int cnt 0){auto n grand->right;while (n ! nullptr){if(n->left ! nullptr){auto old_n n;n n->left;old_n->left n->righ…

基于Java SSM框架实现高考填报信息系统项目【项目源码】计算机毕业设计

基于java的SSM框架实现高考填报信息系统演示 JAVA简介 Java主要采用CORBA技术和安全模型&#xff0c;可以在互联网应用的数据保护。它还提供了对EJB&#xff08;Enterprise JavaBeans&#xff09;的全面支持&#xff0c;java servlet API&#xff0c;JSP&#xff08;java serv…

消息中间件篇之Kafka-数据清理机制

一、Kafka文件存储机制 Kafka文件存储结构&#xff1a;一个Topic有多个分区。每一个分区都有多个段&#xff0c;每个段都有三个文件。 为什么要分段&#xff1f;1. 删除无用文件方便&#xff0c;提高磁盘利用率。 2. 查找数据便捷。 二、数据清理机制 1.日志的清理策略方案1 根…

关于python的数据可视化与可视化:数据读取

带着问题寻找答案可以使自己不再迷茫或者不知所措&#xff01; 了解什么python的数据可视化&#xff1f; 数据的读取&#xff08;一般伴随着课程文件中会进行提供和利用&#xff09; 数据可视化是将Python应用于大气海洋科学中数据处理及分析过程的重要环节&#xff0c;它可以…

Flutter SDK 常见问题

镜像配置 配置pub服务的镜像地址&#xff1a; export PUB_HOSTED_URLhttps://pub.flutter-io.cn export FLUTTER_STORAGE_BASE_URLhttps://storage.flutter-io.cn 第一次运行项目很慢&#xff0c;搜索整个Flutter SDK项目&#xff0c;使用以下内容替换google和mavenCentral仓…

进行模型测量这种量出来坡面的是平面面积还是真实面积?

斜面面积&#xff0c;不是表面积。 DasViewer是由大势智慧自主研发的免费的实景三维模型浏览器,采用多细节层次模型逐步自适应加载技术,让用户在极低的电脑配置下,也能流畅的加载较大规模实景三维模型,提供方便快捷的数据浏览操作。 #DasViewer##实景三维##三维重建##三维模型…

CKA认证,开启您的云原生之旅!

在当今数字化时代&#xff0c;云计算已经成为企业和个人发展的关键技术。而获得CKA&#xff08;Certified Kubernetes Administrator&#xff09;认证&#xff0c;将是您在云原生领域迈出的重要一步。 CKA认证是由Kubernetes官方推出的权威认证&#xff0c;它旨在验证您在Kuber…

嵌入式学习day25 Linux

进程基本概念: 1.进程: 程序&#xff1a;存放在外存中的一段数据组成的文件 进程&#xff1a;是一个程序动态执行的过程,包括进程的创建、进程的调度、进程的消亡 2.进程相关命令: 1.top 动态查看当前系统中的所有进程信息&#xff08;根据CPU占用率排序&a…

网站三合一缩略图片介绍展示源码

网站三合一缩略图片介绍展示源码&#xff0c;PHP源码&#xff0c;运行需要php环境支持&#xff0c;效果截图如下 蓝奏云下载&#xff1a;https://wfr.lanzout.com/ihY8y1pgim6j

php脚本输出中文在浏览器中显示乱码

问题说明 这个问题一般出现在较低版本的php中&#xff0c;原因是php和浏览器的字符解析方式不对应 &#xff0c;导致中文字符被错误解析成乱码 &#xff08;注&#xff0c;此处的php版本任意切换是依赖于小皮面板&#xff08;phpstudy&#xff09;实现的&#xff0c;感兴趣可以…

政安晨:【机器学习基础】(三)—— 提高泛化能力

根据我这个系列的前两篇文章&#xff0c;您会发现您的模型已经表现出了一定的泛化能力&#xff0c;并且能够过拟合&#xff0c;接下来应该专注于将泛化能力最大化。 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: 政安晨的机器学习笔记 希…

CSS 入门手册(一)

目录 什么是 CSS? 1-CSS语法规则 2-样式表 外部样式表 内部样式表 行内样式表 3-选择器 4-背景 4.1 颜色定义方式 4.2 背景图像 5-文本 5.1 文本颜色 5.2 文本对齐方式 5.3 文本装饰 5.4 文本转换 5.5 文本首行缩进/间距 6-字体 6.1 字体系列 6.2 字体样式…

常见集合框架底层原理

常见集合框架底层原理 常见的集合有哪些 Java集合类主要由两个接口Collection和Map派生出来的&#xff0c;Collection有三个子接口: List、 Set、Queue List代表了有序可重复集合&#xff0c;可直接根据元素的索引来访问Set代表了无序集合&#xff0c;只能根据元素本身来访问…

“智能语音指令解析“ 基于NLP与语音识别的工单关键信息提取

“智能语音指令解析“ 基于NLP与语音识别的工单关键信息提取 1. 背景介绍1.1 场景痛点1.2 方案选型 2. 准备开发环境3. PaddleSpeech 语音识别快速使用4. PaddleNLP 信息抽取快速使用5. 语音工单信息抽取核心功能实现6. 语音工单信息抽取网页应用6.1 网页前端6.2 网页后端6.3 a…

SpringCache缓存专题

SpringCache缓存专题 学习目标 1、理解缓存存在的意义 2、掌握redis与SpringCache的集成方式 3、掌握SpringCache注解的使用 4、掌握项目集成SpringCache流程 第一章 基于SpringCache缓存方案 1.为什么需要缓存 ​ 前台请求&#xff0c;后台先从缓存中取数据&#xff0…

ARM 版银河麒麟桌面系统下 Qt 开发环境搭建指南

目录 前言安装Linux ARM 版 QtCreator配置 Qt Creator配置构建套件 第一个麒麟 Qt 应用程序小结 前言 在上一篇文章信创ARM架构QT应用开发环境搭建中建议大家使用 Ubuntu X86 系统作为信创 ARM 架构 QT 应用的开发环境&#xff0c;里面使用了交叉编译的方式。这对于自己的 Qt …