web前后台数据交互的四种方式(转)

2023-11-07

1.利用cookie对象 

Cookie是服务器保存在客户端中的一小段数据信息。使用Cookie有一个前提,就是客户端浏览器允许使用Cookie并对此做出相应的设置。一般不赞成使用Cookie。

(1)后台代码

1.利用cookie对象 

Cookie是服务器保存在客户端中的一小段数据信息。使用Cookie有一个前提,就是客户端浏览器允许使用Cookie并对此做出相应的设置。一般不赞成使用Cookie。

(1)后台代码

1

2

Cookie cookie=new Cookie("name""hello"); 

response.addCookie(cookie);

 

(2)前台代码

 

1

2

3

4

5

6

Cookie[] cookies=request.getCookies(); 

for(int i=0;i<cookies.length;i++){ 

        if(cookies[i].getName().toString().equals("name")){ 

            out.print(cookies[i].getValue()); 

        

}

2.利用session对象

session对象表示特定会话session的用户数据。客户第一次访问支持session的JSP网页,服务器会创建一个session对象记录客户的信息。当客户访问同一网站的不同网页时,仍处于同一个session中。

 

(1)后台代码

 

1

2

3

request.getSession().setAttribute("name", name); 

request.getSession().setMaxInactiveInterval(2); 

response.sendRedirect("welcome.jsp"); 

  

(2)前台代码(jsp页面)

1

Object user=request.getSession().getAttribute("name");

  

3.利用request重定向,设置setAttribute

 

(1)后台代码

 

1

2

request.setAttribute("name""cute"); 

request.getRequestDispatcher("welcome.jsp").forward(request, response);  //网址不会改变

 

PS:如果后台使用的转发代码为 response.sendRedirect("welcome.jsp");  //网址变为welcome.jsp

则request设置的参数无效,因为已经切换到另一个请求了,request参数的有效期为本次请求。

(2)前台代码

 

1

String name=request.getAttribute("name").toString(); 

 

4.利用Ajax进行异步数据请求(得到的数据可以以json或xml格式返回,便于处理)

(1)后台代码案例(运用servlet传输数据)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

public class TestServlet extends HttpServlet { 

   

    /**

     * Constructor of the object.

     */ 

    public TestServlet() { 

        super(); 

    

   

    public void doGet(HttpServletRequest request, HttpServletResponse response) 

            throws ServletException, IOException { 

        doPost(request, response); 

    

   

    public void doPost(HttpServletRequest request, HttpServletResponse response) 

            throws ServletException, IOException { 

   

        response.setContentType("text/html"); 

        PrintWriter out = response.getWriter(); 

        String data="[{\"name\":\"apple\",\"price\":23},{\"name\":\"banana\",\"price\":12},{\"name\":\"orange\",\"price\":8}]"

        out.write(data); 

        out.flush(); 

        out.close(); 

    

   

    /**

     * Initialization of the servlet. <br>

     *

     * @throws ServletException if an error occurs

     */ 

    public void init() throws ServletException { 

        // Put your code here 

    

   

  


2.前台js请求处理数据代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

function createXMLHttpRequest(){ 

    var xmlrequest; 

    if(window.XMLHttpRequest){ 

        xmlrequest=new XMLHttpRequest(); 

    }else if(window.ActiveXObject){ 

        try

            xmlrequest=new ActiveXObject("Msxm12.XMLHTTP"); 

        }catch(e){ 

            try

                xmlrequest=new ActiveXObject("Microsoft.XMLHTTP"); 

            }catch(e){ 

                xmlrequest=""

            

        

    

    return xmlrequest; 

//获取数据的函数 

function change(){ 

    var xmlrequest=createXMLHttpRequest(); 

    xmlrequest.open("POST","TestServlet",true); 

    xmlrequest.onreadystatechange=function(){ 

        if(xmlrequest.readyState==4&&xmlrequest.status==200){ 

            var data=JSON.parse(xmlrequest.responseText); 

            var content="<table border=1>"

            for(var i=0;i<data.length;i++){ 

                content+="<tr>"

                for(o in data[i]){ 

                    content+="<td>"+data[i][o]+"</td>"

                

                content+="</tr>"

            

            content+="</table>"

            document.getElementById("test").innerHTML=content; 

        

    }; 

    xmlrequest.send(); 

  

 

总结:在用户访问网站整个生命周期中都会用到的数据用session来存储,例如用户名,登录状态,购物车信息

           显示在网页上的信息数据大多通过 request或Ajax方式获取

 

 

(2)前台代码

 

1

2

3

4

5

6

Cookie[] cookies=request.getCookies(); 

for(int i=0;i<cookies.length;i++){ 

        if(cookies[i].getName().toString().equals("name")){ 

            out.print(cookies[i].getValue()); 

        

}

2.利用session对象

session对象表示特定会话session的用户数据。客户第一次访问支持session的JSP网页,服务器会创建一个session对象记录客户的信息。当客户访问同一网站的不同网页时,仍处于同一个session中。

 

(1)后台代码

 

1

2

3

request.getSession().setAttribute("name", name); 

request.getSession().setMaxInactiveInterval(2); 

response.sendRedirect("welcome.jsp"); 

  

(2)前台代码(jsp页面)

1

Object user=request.getSession().getAttribute("name");

  

3.利用request重定向,设置setAttribute

 

(1)后台代码

 

1

2

request.setAttribute("name""cute"); 

request.getRequestDispatcher("welcome.jsp").forward(request, response);  //网址不会改变

 

PS:如果后台使用的转发代码为 response.sendRedirect("welcome.jsp");  //网址变为welcome.jsp

则request设置的参数无效,因为已经切换到另一个请求了,request参数的有效期为本次请求。

(2)前台代码

 

1

String name=request.getAttribute("name").toString(); 

 

4.利用Ajax进行异步数据请求(得到的数据可以以json或xml格式返回,便于处理)

(1)后台代码案例(运用servlet传输数据)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

public class TestServlet extends HttpServlet { 

   

    /**

     * Constructor of the object.

     */ 

    public TestServlet() { 

        super(); 

    

   

    public void doGet(HttpServletRequest request, HttpServletResponse response) 

            throws ServletException, IOException { 

        doPost(request, response); 

    

   

    public void doPost(HttpServletRequest request, HttpServletResponse response) 

            throws ServletException, IOException { 

   

        response.setContentType("text/html"); 

        PrintWriter out = response.getWriter(); 

        String data="[{\"name\":\"apple\",\"price\":23},{\"name\":\"banana\",\"price\":12},{\"name\":\"orange\",\"price\":8}]"

        out.write(data); 

        out.flush(); 

        out.close(); 

    

   

    /**

     * Initialization of the servlet. <br>

     *

     * @throws ServletException if an error occurs

     */ 

    public void init() throws ServletException { 

        // Put your code here 

    

   

  


2.前台js请求处理数据代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

function createXMLHttpRequest(){ 

    var xmlrequest; 

    if(window.XMLHttpRequest){ 

        xmlrequest=new XMLHttpRequest(); 

    }else if(window.ActiveXObject){ 

        try

            xmlrequest=new ActiveXObject("Msxm12.XMLHTTP"); 

        }catch(e){ 

            try

                xmlrequest=new ActiveXObject("Microsoft.XMLHTTP"); 

            }catch(e){ 

                xmlrequest=""

            

        

    

    return xmlrequest; 

//获取数据的函数 

function change(){ 

    var xmlrequest=createXMLHttpRequest(); 

    xmlrequest.open("POST","TestServlet",true); 

    xmlrequest.onreadystatechange=function(){ 

        if(xmlrequest.readyState==4&&xmlrequest.status==200){ 

            var data=JSON.parse(xmlrequest.responseText); 

            var content="<table border=1>"

            for(var i=0;i<data.length;i++){ 

                content+="<tr>"

                for(o in data[i]){ 

                    content+="<td>"+data[i][o]+"</td>"

                

                content+="</tr>"

            

            content+="</table>"

            document.getElementById("test").innerHTML=content; 

        

    }; 

    xmlrequest.send(); 

  

 

总结:在用户访问网站整个生命周期中都会用到的数据用session来存储,例如用户名,登录状态,购物车信息

           显示在网页上的信息数据大多通过 request或Ajax方式获取

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

web前后台数据交互的四种方式(转) 的相关文章

  • npm、yarn 与 pnpm 的逻辑区别

    目录 npm2的依赖管理 npm3 yarn的依赖管理 pnpm的依赖管理 npm2的依赖管理 npm2 安装依赖的时候比较简单直接 直接按照包依赖的树形结构下载填充本地目录结构 比如在项目中A和 C 都依赖 B 无论被依赖的 B 是否是同
  • Dapper入门

    Dapper 一 dapper是什么 dapper是一款轻量级的ORM Object Relationship Mapper 它负责 数据库和编程语言之间的映射 SqlConnection MysqlConnection OracleCon
  • Jmeter之Android脚本录制

    在进行测试的时候 可能有好多脚本或者界面需要操作测试 并且有些测试链接需要重复多线程高并发进行测试 我们一般会针对这一些操作 进行一个脚本录制 录制好之后 之后测试就可以在这个基础上进行测试 使用Jmeter自带的代理服务器进行脚本录制 注
  • 阿里云服务器linux选centos哪个版本好?

    如果要我推荐一般就推荐首选阿里云centos 8 2 64位或者是最新版本的centos系统 当天centos 7 9也可以的 其实具体哪个版本真的没啥区别的 一般用户不和系统打交道的话 完全是感受不到什么差异的 不过关于阿里云ecs服务器
  • Unity动画系统常用知识总结

    Unity动画系统常用知识总结 资源导入需要注意的地方 常用的组件 Animator 组件 Avatar Mask 骨骼遮罩 Animator Controller 动画切换 Any State Has Exit Time 是否有退出时间
  • windows11 - 快速实现局域网内传文件

    一条命令就可以实现局域网内共享传输文件 windows 简单共享目录 打开cmd 先cd进一个要共享的目录 这个步骤可以简化一步到达 参考这个链接 然后执行 python m http server 8010 其他设备 手机或者电脑 用浏览
  • dcmtk源码编译 (windows和 linux)

    说一下我们的项目是Java的dicom影像 但是有些医院的胶片打印机用的国产化的 dcm4che的通信模块不能使用 需要用 dcmtk的 dcmpsprt exe 和 dcmprscu exe的命令行服务 下面跟着我一起开始编译 1 dcm
  • 阿里云ECS服务器 2核4G/2核8G/4核8g配置的区别及如何选择【 可供新手小白参考】

    简介 阿里云服务器2核4G 2核8G 4核8g是企业级服务器中的热门选择 而且阿里云官方也一直在力推这三款配置作为企业级应用的首选 在阿里云的各种活动页面都能够看到这三款配置 基于这几款配置在活动中能见到的机型是计算型sn1ne实例 计算型
  • Linux下虚拟机终端背景颜色更改

    下载安装完虚拟机 发现背景颜色是白色的 总结了更改背景颜色的方法 基于CentOS 7演示 方法 1 进入终端2 选择 编辑 gt 首选项 3 更改主题类型 亮色 白底 暗色 黑底 4 若更改其他更多颜色 进入终端 选择 编辑 gt 配置文
  • 耕地单目标语义分割实践——Pytorch网络过程实现理解

    一 卷积操作 一 普通卷积 Convolution 二 空洞卷积 Atrous Convolution 根据空洞卷积的定义 显然可以意识到空洞卷积可以提取到同一输入的不同尺度下的特征图 具有构建特征金字塔的基础 三 深度可分离卷积 Dept
  • Qt 读取多行文本框中的内容

    本文介绍将plainTextEdit中的多行文本内容按行读取为字符串的方法 QTextDocument doc ui gt plainTextEdit gt document 将plainTextEdit中的内容读取到doc中 int co
  • 【Kubernetes系列】Container(容器)

    文章目录 Container Container Image 容器镜像 镜像名称 更新镜像 镜像拉取策略 默认镜像拉取策略 强制拉去镜像 ImagePullBackOff 使用私有仓库 容器环境 容器信息 集群信息 Runtime Clas
  • pycharm如何安装pythoncard_pycharm的各种设置,配置

    本博客一直在同步更新中 内容包含 pycharm学习技巧 Learning tips PyCharm3 0默认快捷键 翻译的 pycharm常用设置 pycharm环境和路径配置 Pycharm实用拓展功能 pycharm中清除已编译 py
  • 有关数据结构上机实验的问题

    1 收到学弟提醒 http chuantu xyz t6 741 1605524547x 1566660945 png 本实验不允许公开实验代码 2 原专栏设置付费 本意是希望大家不要再看了 但是有同学订阅了 特此表示歉意 考虑不周 3 原
  • Python爬虫怎么挣钱?6个Python爬虫赚钱方式,搞搞副业不是问题

    1 最典型的就是找爬虫外包活儿 网络爬虫最通常的的挣钱方式通过外包网站 做中小规模的爬虫项目 向甲方提供数据抓取 数据结构化 数据清洗等服务 新入行的程序员大多都会先尝试这个方向 直接靠技术手段挣钱 这是我们技术人最擅长的方式 因项目竞价的
  • redis监控命令monitor(监控内容写入文件)

    redis有一个monitor命令 使用该命令可以实时监控redis正在执行的命令 先登录redis集群 redis app 3 2 12 bin redis cli h 192 168 177 122 p 6379 a abcdef c
  • USB数据线串联电阻知识总结

    一 为什么USB的特性阻抗为90欧姆 USB设备具有简单易用 支持热插拔 速度快等特点 很快被广泛应用于个人电脑和移动设备等信息通讯产品 并扩展至摄影器材 数字电视 机顶盒 游戏机等其它相关领域 可以说USB是目前最为成功的I O技术 而且
  • DDOS高防IP的用途

    DDOS高防IP是为了应对互联网的DDOS攻击而产生的一款付费增值产品 那么该怎么使用呢 DDOS高防IP根据不同的业务接入的方法也不同 在开通这款DDOS高防IP时服务商会给到对应的高防IP作为对外IP和业务IP使用 游戏业务就需要将之前
  • 带你看懂CTC算法

    转自 https zhuanlan zhihu com p 161186907 在文本识别模型CRNN中 涉及到了CTC算法的使用 由于算法的原理涉及内容较多 所以特另开一篇文章对其原理进行叙述 自己在学习CTC过程中也是看了诸多资料才大概
  • 【AI面试】损失函数(Loss),定义、考虑因素,和怎么来的

    神经网络学习的方式 就是不断的试错 知道了错误 然后沿着错误的反方向 梯度方向 不断的优化 就能够不断的缩小与真实世界的差异 此时 如何评价正确答案与错误答案 错误的有多么的离谱 就需要一个评价指标 这时候 损失和损失函数就运用而生 开始之

随机推荐

  • 终端软件MobaXterm新建会话与本地虚拟机连接失败原因分析:Network error: connection refused

    一 首先第一步 检查虚拟机与本机的连通性 在本机powershell终端执行ping 虚拟机ip 虚拟机ip的获取实在虚拟机中执行ifconfig 第一个四位数字就是ip地址 二 ping过之后 发现很正常 那就检查ssh ps e gre
  • Java中的基础----序列化与反序列化的作用

    Java提供两种对象持久化的方式 分别序列化和外部序列化 1 序列化 Serialization 在分布式环境下 无论是何种数据 都会以二进制序列的形式在网络上传输 序列化是一种将对象以一连串的字节描述的过程 用于解决在对对象流进行读写操作
  • Unicode 编码表下载

    概述 很多项目都使用了Unicode 编码表 在此 做个笔录 官网 1 第一入口 https home unicode org 2 第二入口 Unicode 14 0 Character Code Charts 3 第三入口 http ww
  • 如何获得ISO测试版软件,苹果发布iOS11.4 beta2公测版 如何申请iOS11公测资格

    在对应开发者版本推送一天之后 苹果今天凌晨又向公测用户推送了 iOS 11 4 和 tvOS 11 4 的第二个测试版系统更新 iOS 11 4 的 beta 版系统主要用来测试隔空播放 2 以及 iCloud 信息等新功能 tvOS 11
  • 流畅交互体验:实现Vue中el-dialog拖动效果的完美指南

    在使用elementUI中的Dialog组件时 总有无理的产品提需求 在右上角增加可点击全屏的功能 给我实现弹出框可任意拖拽的功能 这种情况下 组件就不能很好的使用了 那么 只能由我们前端攻城狮进行代码攻克了 接下来就实现其中的可拖拽功能
  • UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 2: illegal multibyte sequence

    最近在搞人工智能的东东 玩了玩词云的东西 在编写代码时 出现了一个问题 目的 统计西游记里出现的词的内容 读取西游记整本小说的内容 然后进行统计分析 代码如下 text open 西游记 txt read 但是在执行的时候一直报错 Unic
  • 方舟生存进化秘籍大全

    代码大全 addexperience 10000 0 0 1 给角色加1W经验 可以修改数值 修改人物每升级一次 各种属性的增长倍率 修改文件 common ARK ShooterGame Saved Config WindowsNoEdi
  • adb刷入第三方recovery_【玩机必会技能】小米手机通用刷TWRP RECOVERY

    点击上方 蓝字 关注我们 想让自己的手机获取更多的功能和体验不同的安卓系统 掌握下面这些是必不可少的 此教程也适用于其他品牌的安卓手机 步骤都是一样的 刷入TWRP RECOVERY 这是手机刷入ROOT和第三方ROM的必备工具 而解Boo
  • hualinux2.21 环境搭建:Centos8安装 LVS+keepalived高可用负载均衡

    在前面讲了 hualinux2 19 环境搭建 Centos8 nginx负载均衡 反代 和 hualinux2 20 环境搭建 centos8源安装haproxy 两个常用的负载均衡 基本上都是推荐做七层负载 虽然也有四层负载的能力 现在
  • ViewPager2一页展示多个Item且两边滑动

    ViewPager2一页展示多个Item且两边滑动 研究背景 在项目中有一个滚轮选择器的需求 对于小组件的研发 我一直倾向于自研 一方面功能不复杂 另一方面也锻炼自己的思维能力 不只是局限于上次研发 传统Viewpager解决方法 对于传统
  • C#类型推测

    代码 using System using System Collections Generic using System Linq using System Text using System Threading Tasks namesp
  • IT项目管理 — 作业8

    题目 二选一 教材练习题作业1 3 教材操作案例 Running Case 作业1 3 解答 选择教材练习题作业1 3 练习题1 假设你的组织想聘用新教师来教授项目管理课程 制定一个质量标准的清单 可用于做出此次聘用决定 质量标准清单 教师
  • 判断数组或对象里是否有值

    function checkArray arr for let i 0 i lt arr length i const obj arr i for const key in obj if Object prototype hasOwnPro
  • Windows微信可以上网但是浏览器却用不了网络如何解决

    1 清除DNS缓存 这个主要用于某些网站打不开的情形 首先同时按WINDOWS R键 在弹出窗口输入CMD 然后回车 在弹出的命令提示符中输入ipconfig flushdns 然后回车 2 重置winsock目录 在命令提示符中输入net
  • Git配置用户名和邮箱

    设备 Windows10 git MINGW64 一般刚安装Git都要配置用户名和邮箱 因为你提交代码到本地仓库 上传代码到远程仓库 时会用到 如果没有没有配置 在你提交时它会提醒你的 那么接下来我们讲一下怎么配置 目录 1 查看git的配
  • 基于Python的情感分析案例——知网情感词典

    1 情感分析含义 情感分析指的是对新闻报道 商品评论 电影影评等文本信息进行观点提取 主题分析 情感挖掘 情感分析常用于对某一篇新闻报道积极消极分析 淘宝商品评论情感打分 股评情感分析 电影评论情感挖掘 情感分析的内容包括 情感的持有者分析
  • Linux:apache配置与应用

    Linux apache配置与应用 一 虚拟 Web 主机 1 1 虚拟Web主机 1 2 httpd服务支持的虚拟主机类型 二 基于域名的虚拟主机 2 1 为虚拟主机提供域名解析 2 2 为虚拟主机准备网页文档 2 3 添加虚拟主机配置
  • ezpolt和plot区别_《qqplot2: 数据分析与图形艺术》第4章学习笔记

    第4章 用图层构建图像 每个图层孝可以有自己的数据集和图形属性映射 附加的数据元素可以通过图层添加到图形中 4 2 创建绘图对象 ggplot 函数 有两个主要参数 数据和图形属性映射 这两个参数被设定为绘图的默认参数 只有在新添加的图层里
  • 南桥和北桥-主板芯片组发展史

    转自https baijiahao baidu com s id 1636848759349227507 wfr spider for pc 芯片组无疑是主板重要的组成部分 在我们今天能够看到的主板上芯片组只不过是一个散热片底下的小芯片而已
  • web前后台数据交互的四种方式(转)

    1 利用cookie对象 Cookie是服务器保存在客户端中的一小段数据信息 使用Cookie有一个前提 就是客户端浏览器允许使用Cookie并对此做出相应的设置 一般不赞成使用Cookie 1 后台代码 1 利用cookie对象 Cook