Servlet之间传递数据

2023-11-06

转自:http://jallay.iteye.com/blog/256004

1:如何让用户的请求数据从一个Servlet传递给另一个Servlet 


    第一种方式:通过超链接传递数据 
    第二种方式:通过表传递取参数。 
    第三种方式:通过setAttribute("name",value)与getAttribute(name value)传递参数 

  1)通过超链接获得参数: 
    需要在超链接后面给定要传递参数的值。但长度有限制 

Java代码   收藏代码
  1. package testParameter;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.PrintWriter;  
  5. import javax.servlet.ServletException;  
  6. import javax.servlet.http.HttpServlet;  
  7. import javax.servlet.http.HttpServletRequest;  
  8. import javax.servlet.http.HttpServletResponse;  
  9.   
  10. public class TestA extends HttpServlet{  
  11.   
  12.     @Override  
  13.     protected void service(HttpServletRequest request, HttpServletResponse response)  
  14.             throws ServletException, IOException {  
  15.       
  16.         response.setContentType("text/html");  
  17.         PrintWriter out=response.getWriter();  
  18.         String name="hello,everyone";  
  19.         out.println("<html>");  
  20.         out.println("<body>");  
  21.         out.println("<a href='/JSP/test?id="+name+"'>this is a test</a>");  
  22.         out.println("<body>");  
  23.         out.println("</html>");  
  24.                 out.flush();  
  25.           
  26.     }  
  27. }  


通过request.getParameter("id")获得参数的值: 

Java代码   收藏代码
  1. package testParameter;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.PrintWriter;  
  5.   
  6. import javax.servlet.ServletException;  
  7. import javax.servlet.http.HttpServlet;  
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10.   
  11. public class Test extends HttpServlet {  
  12.   
  13.     @Override  
  14.     protected void service(HttpServletRequest request, HttpServletResponse response)  
  15.             throws ServletException, IOException {  
  16.           
  17.         String name=request.getParameter("id");  
  18.         response.setContentType("text/html;charset=gb2312");  
  19.         PrintWriter out=response.getWriter();  
  20.           
  21.         out.println("<html>");  
  22.         out.println("<body>");  
  23.         out.println(name);  
  24.         out.println("</body>");  
  25.         out.println("</html>");  
  26.                 out.flush();  
  27.     }  
  28. }  

通过表单获得参数: 
Java代码   收藏代码
  1. package testParameter;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.PrintWriter;  
  5.   
  6. import javax.servlet.ServletException;  
  7. import javax.servlet.http.HttpServlet;  
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10.   
  11. public class TableP extends HttpServlet{  
  12.   
  13.     @Override  
  14.     protected void service(HttpServletRequest request, HttpServletResponse response)  
  15.             throws ServletException, IOException {  
  16.         response.setContentType("text/html;charset=gb2312");  
  17.         PrintWriter out=response.getWriter();  
  18.         out.println("<html>");  
  19.         out.println("<body>");  
  20.         out.println("<form action='/JSP/tabletest' method='post'>");  
  21.         out.println("<table align='center'>");  
  22.           
  23.         out.println("<tr>");  
  24.         out.println("<td>");  
  25.         out.println("username:");  
  26.         out.println("</td>");  
  27.         out.println("<td>");  
  28.         out.println("<input type='text' name='name'>");  
  29.         out.println("</td>");  
  30.         out.println("</tr>");  
  31.           
  32.         out.println("<tr>");  
  33.         out.println("<td>");  
  34.         out.println("password:");  
  35.         out.println("</td>");  
  36.         out.println("<td>");  
  37.         out.println("<input type='text' name='pwd'>");  
  38.         out.println("</td>");  
  39.         out.println("</tr>");  
  40.           
  41.         out.println("<tr >");  
  42.         out.println("<td colspan='2'>");  
  43.         out.println("<input type='submit' value='提交'>");  
  44.         out.println("</td>");  
  45.         out.println("</tr>");  
  46.           
  47.         out.println("</table>");  
  48.         out.println("</form>");  
  49.         out.println("</body>");  
  50.         out.println("</html>");     
  51.                 out.flush();  
  52.     }  
  53. }  
  54.   
  55. package testParameter;  
  56.   
  57. import java.io.IOException;  
  58. import java.io.PrintWriter;  
  59.   
  60. import javax.servlet.ServletException;  
  61. import javax.servlet.http.HttpServlet;  
  62. import javax.servlet.http.HttpServletRequest;  
  63. import javax.servlet.http.HttpServletResponse;  
  64.   
  65. public class GetTableP extends HttpServlet{  
  66.   
  67.     @Override  
  68.     protected void service(HttpServletRequest req, HttpServletResponse resp)  
  69.             throws ServletException, IOException {  
  70.           
  71.         resp.setContentType("text/html;charset=gb2312");  
  72.         PrintWriter out=resp.getWriter();  
  73.           
  74.         String name=req.getParameter("name");  
  75.         String pwd=req.getParameter("pwd");  
  76.           
  77.         out.println("<html>");  
  78.         out.println("<body>");  
  79.         out.println(name);  
  80.         out.println("<hr>");  
  81.         out.println(pwd);  
  82.         out.println("</body>");  
  83.         out.println("</html>");  
  84.                 out.flush();  
  85.           
  86.     }  
  87.       
  88.       
  89.   
  90. }  

3:通过setAttribute("name",data)和getAttribute("name"); 
其中data可以是任何数据类型,另一个servlet通过名字获取该对象getAttribute("name"); 
注:setAttriute可以被request,session,ServletContext等对象使用。以下以request为例: 
Java代码   收藏代码
  1. package testParameter;  
  2.   
  3. import java.io.IOException;  
  4.   
  5. import javax.servlet.ServletException;  
  6. import javax.servlet.http.HttpServlet;  
  7. import javax.servlet.http.HttpServletRequest;  
  8. import javax.servlet.http.HttpServletResponse;  
  9.   
  10. public class AttributeA extends  HttpServlet{  
  11.   
  12.     @Override  
  13.     protected void service(HttpServletRequest req, HttpServletResponse resp)  
  14.             throws ServletException, IOException {  
  15.           
  16.         String data="this is just a test,wo need more test for this";  
  17.         req.setAttribute("name", data);  
  18.         req.getRequestDispatcher("/attributeb").forward(req, resp);  
  19.     }  
  20.   
  21. }  
  22. package testParameter;  
  23.   
  24. import java.io.IOException;  
  25. import java.io.PrintWriter;  
  26.   
  27. import javax.servlet.ServletException;  
  28. import javax.servlet.http.HttpServlet;  
  29. import javax.servlet.http.HttpServletRequest;  
  30. import javax.servlet.http.HttpServletResponse;  
  31.   
  32. public class AttributeB extends HttpServlet{  
  33.   
  34.     @Override  
  35.     protected void service(HttpServletRequest req, HttpServletResponse resp)  
  36.             throws ServletException, IOException {  
  37.        
  38.          String name=(String)req.getAttribute("name");  
  39.            
  40.          resp.setContentType("text/html;charset=gb2312");  
  41.          PrintWriter out=resp.getWriter();  
  42.            
  43.          out.println("<html>");  
  44.          out.println("<body>");  
  45.          out.println(name);  
  46.          out.println("</body>");  
  47.          out.println("</html>");  
  48.                  out.flush();  
  49.     }  
  50.       
  51.       
  52.   
  53. }  

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

Servlet之间传递数据 的相关文章

  • Android 中的列表视图分页

    我有一个列表视图 其中显示了 50 个元素 我决定对视图进行分页 以便视图的每个部分都有 10 个元素 然后单击 下一个 按钮以获取下一个 10 个元素 如何设置10个数据 我关注这篇文章http rakhi577 wordpress co
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • Intellij 中的 Google OR-Tools:UnsatisfiedLinkError

    我正在建立一个应该使用 Google OR Tools 的 java 框架 下面的代码编译成功 但在运行时抛出异常 Exception in thread main java lang UnsatisfiedLinkError com go
  • 如何将 Observable>> 转换为 Observable>

    我陷入了如何将以下可观察类型转换 转换为我的目标类型的困境 我有以下类型的可观察值 Observable
  • 当您在数组列表上调用remove(object o)时,它如何比较对象?

    当您在 java 中的数组列表上调用remove object o 时 它如何比较对象以找到要删除的正确对象 它使用指针吗 或者它使用 Comparable 接口来比较对象吗 ArrayList remove 依赖于对象的实现Equal方法
  • 检索 css3 缩放元素的宽度/高度

    我正在与 offsetWidth 属性的奇怪之处 我认为 作斗争 这是场景 比方说 我有一个span标签 在我的js中 在某个时刻我执行css3转换 对于这个元素 例如 el set styles transform scale scale
  • Java:java.util.ConcurrentModificationException

    我正在制作 2D 目前正在研究用子弹射击 子弹是一个单独的类 所有项目符号都存储在称为项目符号的数组列表中 当它超出屏幕一侧 Exception in thread main java util ConcurrentModification
  • 未解决的包含:“cocos2d.h” - Cocos2dx

    当我在 Eclipse 中导入 cocos2dx android 项目时 我的头文件上收到此警告 Unresolved inclusion cocos2d h 为什么是这样 它实际上困扰着我 该项目可以正确编译并运行 但我希望这种情况消失
  • 如何在 Android 上将动态 alpha 遮罩应用于文本

    I want to make a dynamic alpha mask with drawable shapes as circles or whatever and apply it to a drawed text on Android
  • 了解 Spark 中的 DAG

    问题是我有以下 DAG 我认为当需要洗牌时 火花将工作划分为不同的阶段 考虑阶段 0 和阶段 1 有些操作不需要洗牌 那么为什么 Spark 将它们分成不同的阶段呢 我认为跨分区的实际数据移动应该发生在第 2 阶段 因为这里我们需要cogr
  • 在 Nougat 7.1.1 中点击应用程序快捷方式时出现应用程序未安装错误

    我在向现有应用程序添加静态应用程序快捷方式时遇到一些问题 我按照以下步骤操作https developer android com guide topics ui shortcuts html https developer android
  • 使用 JAD 反编译 java - 限制

    我正在尝试使用 Java 中的 JAD 反编译几个 jar 文件 我也尝试过 JD GUI 但运气更差 但出现了很多错误 一种类型 易于修复 似乎是内部类 但我也发现了这段代码 static int SWITCH TABLE atp com
  • 警告:无法更改每个人的权限:

    当运行 Java 快速入门示例时https developers google com drive web quickstart java hl hu https developers google com drive web quicks
  • Service Worker 与 Shared Worker

    Service Worker 和 Shared Worker 有什么区别 我什么时候应该使用 Service Worker 而不是 Shared Worker 反之亦然 Service Worker 具有共享 Worker 之外的附加功能
  • 为什么应该首选 Java 类的接口?

    PMD https pmd github io 将举报以下违规行为 ArrayList list new ArrayList 违规行为是 避免使用 ArrayList 等实现类型 而是使用接口 以下行将纠正违规行为 List list ne
  • 为什么带处理程序的连续自动对焦相机不允许切换相机闪光灯?

    到目前为止我所做的 我已经实现了用于读取二维码的自定义相机 需要继续聚焦相机以获得更好的二维码读取 我的问题当我使用处理程序每 秒聚焦一次时 相机闪光灯开 关按钮不起作用 或者打开和关闭相机闪光灯需要太多时间 当我删除每秒自动对焦相机的代码
  • 为什么范围为“provided”的依赖项会隐藏 Maven 中的传递依赖项?

    我的 Maven 项目中有三个模块 这稍微简化了 model包含JPA注释的实体类 坚持实例化一个实体管理器并调用它的方法 应用创建类的实例model 设置一些值并将它们传递给坚持 model and 坚持显然取决于javax persis
  • ng-include 和 ng-view 不同时加载

    下面是我的应用程序的结构 很简单 页眉和页脚是非常小的文件 而主页上的 ng view 要大得多 当我进入该页面时 我注意到了这一点 首先加载两个 ng include 然后 ng view 出现 页脚被推到底部 页脚闪烁大约 0 1 秒
  • 如何在不同版本的Google App Engine中使用自定义域名?

    我使用谷歌应用程序引擎作为我的 Android 和 Web 应用程序的服务器 我使用 Android Studio 开发了 Android 应用程序 并使用 Eclipse 开发了 Web 应用程序 我在应用程序引擎中部署了两个版本 第一个
  • 我应该如何在 Android 上使用 Retrofit 处理“无互联网连接”

    我想处理没有互联网连接的情况 通常我会运行 ConnectivityManager cm ConnectivityManager context getSystemService Context CONNECTIVITY SERVICE N

随机推荐

  • 我的机器学习--线性回归

    1 最小二乘法 上述方法可以直接得到线性回归方程 import numpy as np import matplotlib pyplot as plt x 2 np random rand 100 1 y 4 3 x np random r
  • C语言指针转换为intptr_t类型

    随笔 155 文章 2 评论 342 C语言指针转换为intptr t类型 1 前言 今天在看代码时 发现将之一个指针赋值给一个intptr t类型的变量 由于之前没有见过intptr t这样数据类型 凭感觉认为intptr t是int类型
  • 一个五位数判断他是否为回文数。

    一个五位数判断他是否是回文数 代码 num int input munber n flag True while True if 10000 lt num lt 100000 print input number num break els
  • 腾讯三面被问到有没有参加过CTF?我反手就是一套军体拳打得面试官哑口无言!

    目录 前言 正文 什么是CTF 什么是PWN 为什么要学CTF CTF竞赛模式 CTF各大题型简介 学之前的思考 分析赛题情况 常规做法 CTF比赛需要的知识储备 CTF比赛的神器 恶补基础知识 信息安全专业知识推荐图书 前言 这是一场紧张
  • Typora字体颜色修改

    Typora字体颜色修改 typora中不能直接修改字体颜色 但有三种方法可以实现修改Typora中颜色 第一种 安装AutoHotKey 较简单 安装AutoHotKey windows系统快捷键设置软件 从而通过设置快捷键来达到修改字体
  • macbook brew install 经常遇见 No such file or directory @ rb_sysopen

    安装php brew install php 在执行过程中经常报错 比如以下 gt Installing php dependency openldap gt Pouring openldap 2 5 8 arm64 monterey bo
  • Docker介绍

    目录 docker定义 docker解决了什么问题 docker技术边界 docker给我们带来了哪些改变 docker和虚拟机的区别 docker基本架构 基本架构图 RootFs Linux Namespace 进程命名空间 查看元祖进
  • 动态规划快速入门

    更多内容 欢迎关注微信公众号 全菜工程师小辉 公众号回复关键词 领取免费学习资料 动态规划算法一直是面试手撕算法中比较有挑战的一种类型 很多的分配问题或者调度问题实际上都可能用动态规划进行解决 当然 如果问题的规模较大 有时候会抽象模型使用
  • 【CV】第 14 章:用最少的数据点训练

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 情人节-动态爱心背景(html5+css+js)

    一 效果图 二 源代码
  • GDAL对TIF创建内建金字塔一个问题

    gdalwarp输出tif图像的时候 默认如果没有使用BIGTIFF YES选项 则会根据输出影像的大小进行判断 低于4G则不适用bigtiff格式 对于非bigtiff图像 如果这时候使用gdaladdo创建金字塔 内建模式 如果出现了文
  • SQL——游标

    非原创 东拼西凑来的 游标 cursor 是一个存储在MySQL服务器上的数据库查询 它不是一条SELECT语句 而是被该语句检索出来的结果集 在存储了游标之后 应用程序可以根据需要滚动或浏览其中的数据 游标主要用于交互式应用 其中用户需要
  • 业务安全及实战案例

    业务安全 关于漏洞 注入 业务逻辑 信息泄露 A04 2021 Insecure Design 在线靶场PortSwigger 1 概述 1 1 业务安全现状 1 1 1 业务逻辑漏洞 近年来 随着信息化技术的迅速发展和全球一体化进程的不断
  • php读写excel文件

    1 引入包 有不少提供读写excel文件的包 这里选择比较常用的一个 加到自己的项目里就好了 phpoffice phpspreadsheet 1 8 2 2 读取文件
  • Android中的USB中的UsbAccessory和UsbDevice的区别

    转载自 http www crifan com android usb usbaccessory vs usbdevice utm source tuicool utm medium referral UsbAccessory和UsbDev
  • MySQL更新表的记录详解

    目录 前言 前言 一 更新数据记录 1 特定数据记录 2 所有数据记录 总结 前言 更新数据记录是数据操作中常见的操作 可以更新表中已经存在数据记录中的值 在MySQL中可以通过UPDATE语句来实现更新数据记录 该SQL语句可以通过如下几
  • 5个炫酷登录页面,拿去就能用(附源码)

    5个炫酷登录页面 拿去就能用 附源码 登录页面 觉得显示效果很好 借鉴其他博主的 喜欢的可以收藏关注 不商用 只为学习传播 目录 1 炫酷星空登录 2 动态云层登录 3 深海灯光水母登录 4 炫酷蛛网登录 5 彩色气泡登录 1 炫酷星空登录
  • 响应式网页设计(Responsive Web Design)的核心原理

    聚沙成塔 每天进步一点点 专栏简介 响应式网页设计的核心原理 优点和缺点 优点 缺点 写在最后 专栏简介 前端入门之旅 探索Web开发的奇妙世界 欢迎来到前端入门之旅 感兴趣的可以订阅本专栏哦 这个专栏是为那些对Web开发感兴趣 刚刚踏入前
  • CVE-2022-26134 Confluence OGNL RCE 复现

    一 漏洞概述 Atlassian Confluence 是一款各企业广泛使用的 wiki 系统 在Atlassian Confluence Server and Data Center上存在OGNL 注入漏洞 远程攻击者在未经身份验证的情况
  • Servlet之间传递数据

    转自 http jallay iteye com blog 256004 1 如何让用户的请求数据从一个Servlet传递给另一个Servlet 第一种方式 通过超链接传递数据 第二种方式 通过表传递取参数 第三种方式 通过setAttri