javascript - 如何将数据传递到jsp并从servlet在新窗口中打开它

标签 javascript jquery ajax jsp servlets

这是我的问题:我有一个 jsp,其中有一个使用数据表的表。它在表的末尾显示一些带有编辑按钮的用户。如果您点击“编辑”按钮,它会调用一个 javascript 函数从表中获取 userID,并通过 ajax $post. 方法将其传递给 servlet。 servlet 通过 hibernate 从数据库接收数据并将其映射到对象中。 我的代码到目前为止一直有效。现在我想将对象传递给 jsp 并在新窗口中打开它(弹出窗口或内部带有表单的内容,用于使用对象中的数据设置它们以编辑被调用的用户)。

  • 我可以从 servlet 执行此操作吗?或者我必须从 ajax 执行此操作吗? 调用成功?

最佳答案

有两种方法可以做到这一点:客户端渲染或服务器端渲染:

1.服务器端

您不需要那个 servlet,您需要的是为输入表单制作第二个 JSP 文件。在 Javascript 中,打开一个包含表单条目 JSP 页面地址的新窗口,并将 userId 参数添加到该页面的查询字符串中:

function onRowClick(userId){
    //Open new window with the address: 'formEntry.jsp?userId=' + userId  
}

在 formEntry.jsp 中,您可以从请求参数中获取此 ID:

String userId = request.getParameter("userId");

然后您可以使用此 userID 来检索您的用户对象:

//get user from dao or service objects
User myUser = someUserService.findUserById(userId);

然后在 JSP 页面中您可以创建输入字段,如下所示:

<input name="firstName" type="String" value="<%= myUser.getFirstName %>"

关于在jsp中使用java代码(注释): 您写的是不在 JSP 页面中编写 Java 代码,但为此目的您有 2 个选择:

  • 使用一些服务器端 MVC 框架(例如 JSF)将 View 与模型和 Controller 分开
  • 使用纯 JSP,但不要在 JSP 中使用较低级别的层,仅使用服务层,并且最好使用一些标记库来减少 JSP 中所需的 java 代码


2.客户端

第二种方法是使用更多的 javascript 来处理任务。 您可以采用 servlet 方式,让 servlet 返回 User 对象的 JSON 字符串。在 javascript 中,您获取 json 并解析它,并将其字段放入 html 标签中:

function ajaxRequestSuccessHandler(data){
    var user = //parse data and make a javascript object
    document.getElementById('firstName').value = user.firstName;
    ....
    //load all of data in your form.
}

然后您可以将表单提交到 servlet 并保存更新的数据。

  • 请注意,这种方法适用于 1 或 2 个表单,但如果您正在开发更大的软件,则需要使用更多工具和框架:

1.最好使用 JAX-RS 或 Spring-MVC 来公开 RESTful 服务并在 javascript 中使用主题,而不是使用纯 servlet。

2.更好地利用一些客户端 MV* 框架,如 angularJS 或 ReactJS。

关于javascript - 如何将数据传递到jsp并从servlet在新窗口中打开它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36838665/

相关文章:

javascript - 在这个上下文中实现的这段JS代码有什么问题吗?

javascript - 使用 POST 打开新选项卡或窗口 [PHP]

javascript - 使用 hapijs/joi 验证参数之间的关系

javascript - Jquery选择插件来发布值,按照用户在多个框中选择数据的顺序

javascript - 如何将附加参数传递给 ajax 回调函数?

javascript - Jquery - 使用一个动态值多次重用函数

javascript - 在链接点击中取消 CTRL 按下

javascript - 带有标题和子标题的代码

asp.net - 阻止 AJAX 计时器控制请求扩展 FormsAuthentication 票证?

php - 将数据推送到页面而不定期检查它?