保留提交的JSP表单数据

2024-01-04

我有一个网络表单(JSP),它将数据提交到托管在不同服务器上的不同应用程序。提交表单数据后,该应用程序重定向回同一 JSP 页面。现在,我想保存输入的数据。以网络形式保留提交的数据有哪些不同的方法。我不喜欢将数据存储在数据库或任何文件中。

PS:当请求再次重定向到同一JSP页面时,我想保留提交的表单数据。因此,用户无需重新输入数据。例如,数据可以存储在 Session 或 Request 等中。


您能做的最好的事情就是提交到您自己的 servlet,这反过来会在后台向外部 Web 应用程序发出另一个请求,而无需任何帮助java.net.URLConnection。最后只需在同一请求中回发到结果页面,以便您可以通过以下方式访问请求参数EL http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSPIntro7.html。有一个隐式 EL 变量${param}这使您可以访问请求参数,例如Map其中参数名称是关键。

所以用下面的形式

<form action="myservlet" method="post">
    <input type="text" name="foo">
    <input type="text" name="bar">
    <input type="submit">
</form>

大致如下servlet方法

protected void doPost(HttpServletRequest request, HttpServletResponse response) {
    String foo = request.getParameter("foo");
    String bar = request.getParameter("bar");

    String url = "http://external.com/someapp";
    String charset = "UTF-8";
    String query = String.format("foo=%s&bar=%s", URLEncoder.encode(foo, charset), URLEncoder.encode(bar, charset));

    URLConnection connection = new URL(url).openConnection();
    connection.setUseCaches(false);
    connection.setDoOutput(true); // Triggers POST.
    connection.setRequestProperty("accept-charset", charset);
    connection.setRequestProperty("content-type", "application/x-www-form-urlencoded;charset=" + charset);

    try (OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream(), charset)) {
        writer.write(query);
    }

    InputStream result = connection.getInputStream();
    // Do something with result here? Check if it returned OK response?

    // Now forward to the JSP.
    request.getRequestDispatcher("result.jsp").forward(request, response);
}

您应该能够访问中的输入result.jsp如下

<p>Foo: <c:out value="${param.foo}" /></p>
<p>Bar: <c:out value="${param.bar}" /></p>

就那么简单。不需要jsp:useBean和/或讨厌的脚本。

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

保留提交的JSP表单数据 的相关文章

  • 如何在 Openfire 中使用 smack

    你好 我计划开发一个可以连接到 gtalk facebook 等的聊天客户端 我决定将 smack API 与 openfire 一起使用 但我需要很少的指导来了解如何将它与 openfire 服务器一起使用 openfire 是否提供了基
  • (Java) App Engine 中的静态文件无法访问

    The 示例文档 http code google com appengine docs java gettingstarted staticfiles html表示您只需将文件放在 war 或子目录 中 并且应该可以从主机访问它们 只要它
  • 将SQL数据引入jquery availabletag

    我正在尝试制作自动完成文本框 但如何将 SQL 数据包含到 jquery 可用标记并循环它 我无法根据以下代码执行该功能 任何帮助 将不胜感激 谢谢 这是我的预期输出 预期结果演示 http jsfiddle net VvETA 71 jq
  • Logback:SizeAndTimeBasedRollingPolicy 不遵守totalSizeCap

    我正在尝试以一种方式管理我的日志记录 一旦达到总累积大小限制或达到最大历史记录限制 我最旧的存档日志文件就会被删除 当使用SizeAndTimeBasedRollingPolicy在 Logback 1 1 7 中 滚动文件追加器将继续创建
  • tomcat 7.0.50 java websocket 实现给出 404 错误

    我正在尝试使用 Java Websocket API 1 0 JSR 356 中指定的带注释端点在 tomcat 7 0 50 上实现 websocket 以下是我如何对其进行编码的简要步骤 1 使用 ServerEndpoint注解编写w
  • 为什么Iterator接口没有add方法

    In IteratorSun 添加了remove 方法来删 除集合中最后访问的元素 为什么没有add方法来向集合中添加新元素 它可能对集合或迭代器产生什么样的副作用 好的 我们开始吧 设计常见问题解答中明确给出了答案 为什么不提供 Iter
  • Java中的断点和逐步调试?

    抱歉我的问题名称很奇怪 我不知道如何寻找这个 因为我不知道这些东西是如何称呼的 Visual Studio 中至少有一个功能 您可以单击代码左侧并设置一个大红点的起点 然后运行程序 您可以通过按 f8 或 f5 实际上是不同的 f 来跟踪步
  • 如何通过注解用try-catch包装方法?

    如果应该在方法调用中忽略异常 则可以编写以下内容 public void addEntryIfPresent String key Dto dto try Map
  • 从休眠乐观锁定异常中恢复

    我有一个这样的方法 Transactional propagation Propagation REQUIRES NEW public void doSomeWork Entity entity dao loadEntity do some
  • 当 minifyEnabled 为 true 时 Android 应用程序崩溃

    我正在使用多模块应用程序 并且该应用程序崩溃时minifyEnabled true in the installed模块的build gradle 以下是从游戏控制台检索到的反混淆堆栈跟踪 FATAL EXCEPTION Controlle
  • 用于缓存的 Servlet 过滤器

    我正在创建一个用于缓存的 servlet 过滤器 这个想法是将响应主体缓存到memcached 响应正文由以下方式生成 结果是一个字符串 response getWriter print result 我的问题是 由于响应正文将不加修改地放
  • 我们如何测试包私有类?

    我正在看书Effective Java in Item 13 Minimize the accessibility of classes and members 它提到 为了方便测试 您可能想让类 接口或成员更易于访问 这在某种程度上是好的
  • Karaf / Maven - 无法解决:缺少需求 osgi.wiring.package

    我无法在 Karaf 版本 3 0 1 中启动捆绑包 该包是使用 Maven 构建的并导入gson http mvnrepository com artifact com google code gson gson 2 3 1 我按照要求将
  • 使用Java绘制维恩图

    我正在尝试根据给定的布尔方程绘制维恩图 例如 a AND b AND c我想在 Android 手机上执行此操作 因此我需要找到一种使用 Java 来执行此操作的方法 我找到了一个完美的小部件 它可以完成我在这方面寻找的一切布尔代数计算器
  • 无需登录即可直接从 Alfresco 访问文件/内容

    我的场景是这样的 我有一个使用 ALFRESCO CMS 来显示文件或图像的 Web 应用程序 我正在做的是在 Java servlet 中使用用户名和密码登录 alfresco 并且我可以获得该登录的票证 但我无法使用该票证直接从浏览器访
  • 如何让 Emma 或 Cobertura 与 Maven 一起报告其他模块中源代码的覆盖率?

    我有一个带有 Java 代码的多模块 Maven 设置 我的单元测试在其中一个模块中测试多个模块中的代码 当然 这些模块具有相互依赖性 并且在测试执行之前根据需要编译所有相关模块中的代码 那么 如何获得整个代码库覆盖率的报告 注意 我不是问
  • ECDH使用Android KeyStore生成私钥

    我正在尝试使用 Android KeyStore Provider 生成的私有文件在 Android 中实现 ECDH public byte ecdh PublicKey otherPubKey throws Exception try
  • 使用 JFreeChart 为两个系列设置不同的 y 轴

    我正在使用 JFreeChart 使用折线图绘制两个数据系列 XYSeries 复杂的因素是 其中一个数据系列的 y 值通常远高于第二个数据系列的 y 值 假设第一个系列的 y 值约为数百万数量级 而第二个数据系列的 y 值约为数百万数量级
  • 检查应用程序是否在 Android Market 上可用

    给定 Android 应用程序 ID 包名称 如何以编程方式检查该应用程序是否在 Android Market 上可用 例如 com rovio angrybirds 可用 而 com random app ibuilt 不可用 我计划从
  • 如何使用通配符模拟泛型方法的行为

    我正在使用 EasyMock 3 2 我想基于 Spring Security 为我的部分安全系统编写一个测试 我想嘲笑Authentication http docs spring io autorepo docs spring secu

随机推荐

  • catch(...) 中的 throw 是按值还是按引用抛出

    我的老板回答了这个问题为什么catch块中存在 三点 https stackoverflow com questions 36737602 why three points in catch block is exist 36738071
  • C++11 使用 OpenGL 进行多线程渲染可防止主线程读取 stdin

    它似乎与平台相关 适用于我的笔记本电脑上的 Ubuntu 12 04 不适用于我的工作站上的另一个 Ubuntu 12 04 这是关于我使用两个线程所做的事情的示例代码 include
  • 在 C/C++ 中连接字符串

    如何使用 C C 连接字符串 我尝试了以下方法 PS errorInfo是一个char 我应该返回它 errorInfo strcat Workflow strcat workflowToString workflow utf8 strca
  • Gradle执行dex错误命令行太长

    我正在使用 gradle 在 Windows 上构建 Android 应用程序 当涉及到最后一个模块时 我面临以下错误 What went wrong Execution failed for task client test dexApi
  • 使用 Ruby 迭代 JSON 并获取数组中的键、值

    我在处理这个 JSON 时遇到了一些问题 ENAX BRANCHESM 10 repo test ASO PATH tmp pruebaAlvaro ARTIFACTS example1 jar another one jar and an
  • Ember.js 如何引用 Grunt.js 预编译的 Handlebars 模板?

    我一直在探索 Ember js 以及 Grunt js 但我无法理解 Ember js 如何找到并使用预编译的 Handlebars 模板 现在我的 Gruntfile js 看起来像这样 module exports function g
  • jquery 选择 iframe 子元素

    我正在使用 editArea 库和 jquery 来完成我需要的操作 所以在我的html中有一个iframe标签 editArea使用我需要的是使用jquery访问类似的东西 iframe textarea keydown function
  • 即使使用导航2.2.1后仍然有错误没有当前导航节点

    我尝试过阅读this https stackoverflow com questions 59970818 navcontroller no current navigation node after device rotation但这并不
  • 有没有办法在 Sparx Enterprise Architect 中搜索元素类型?

    模型搜索功能似乎没有办法将结果限制为特定类型 例如Class Node等有没有办法实现呢 我知道我可以编写 SQL 查询 但是无法找到正确的表名 EDIT 看来我可以执行以下操作 Select Object Type AS CLASSTYP
  • 如何修复 CA2100 Review SQL 查询的安全漏洞问题

    我正在分析我的代码并遇到这个安全问题 CA2100 检查 SQL 查询是否存在安全漏洞 传递到 Add item loadgrid 中的 SqlDataAdapter SqlDataAdapter string SqlConnection
  • 使用模型进行 ID 分配

    我尝试使用模型绑定将 ID 分配给选择控件中的项目 但最终出现错误 这是我的代码 Model languages language English locale en language German locale de 选择控制 var o
  • android书签ContentProvider制作书签但在浏览器的书签中不可见

    我正在使用 Android 的浏览器书签 ContentProvider 以编程方式创建新书签 书签已创建 我可以通过 ContentProvider 以编程方式检索它 但书签在浏览器书签视图中不可见 想法 Saving the bookm
  • 如何正确removeFromSuperview?

    苹果说 removeFromSuperview 取消链接 来自其超级视图的接收者及其 窗口 并将其从 响应者链 void 从超级视图中删除 切勿在以下情况下调用此方法 显示 所以 当我想删除一个视图时 我习惯于将它从它的超级视图中删除 为什
  • 操作系统关闭过程中会发生什么?

    我希望这与编程足够相关 操作系统关闭过程中到底发生了什么 我们以开源的 Linux 为例 可能对此有更多的了解 如何 内核线程终止 当计算机处于 清除 状态时 电源是否停止供电 很明显 我所说的清晰状态是指 CPU 中不再发生任何事情 等等
  • 在文档中查找 HTML 字符串

    我想获取所有 HTML p p 在一个文档中 Using Regex使用以下命令查找所有此类字符串 Regex regex new Regex
  • Android Studio“项目结构”未正常显示

    我遵循 Android Studio 安装的所有必要步骤 我也检查过this https stackoverflow com questions 17961397 android studio new project missing fol
  • 在 Dyalog RIDE 中设置条件断点

    In 对话骑行 https github com Dyalog ride 我知道如何设置断点来停止 APL 源代码中特定行的执行 有没有办法使断点有条件 这样只有满足一组特定的条件 我才能在一行处停止 例如0 lt 没有IDE 或RIDE
  • 为什么 iostream 定义了一个 abs 函数,我该如何阻止它?

    以下 C 代码无法编译 int main double a abs 5 1 return 0 它抱怨说abs当然 没有定义 但以下内容确实可以编译 include
  • 如何在保存 Sitecore 项目时显示弹出窗口?

    保存 Sitecore 项目时 我尝试显示一个弹出窗口以与用户交互 根据他们更改的数据 我可能会显示一系列 1 或 2 个弹出窗口 询问他们是否要继续 我已经弄清楚如何利用 OnItemSaving 管道 这很简单 我不知道如何显示弹出窗口
  • 保留提交的JSP表单数据

    我有一个网络表单 JSP 它将数据提交到托管在不同服务器上的不同应用程序 提交表单数据后 该应用程序重定向回同一 JSP 页面 现在 我想保存输入的数据 以网络形式保留提交的数据有哪些不同的方法 我不喜欢将数据存储在数据库或任何文件中 PS