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

How to pass data to jsp and open it in new window from servlet

本文关键字:并从 jsp servlet 在新窗口中打开 数据      更新时间:2023-09-26

这是我的问题:我有一个jsp,其中包含一个使用数据表的表。它在表格末尾显示一些带有编辑按钮的用户。如果你点击"编辑"按钮,它会调用一个javascript函数从表中获取userID,并通过ajax $post.方法将其传递给servlet。servlet 通过休眠从数据库接收数据,并将其映射到对象中。我的代码一直工作到这一点。现在我想将对象传递给 jsp 并在新窗口中打开它(一个弹出窗口或内部带有表单的东西,用于使用来自对象的数据设置它们以编辑被调用的用户)。

  • 我可以从servlet中做到这一点吗?还是我必须在以下情况下从 ajax 执行此操作调用成功?
有两种

方法可以执行此操作:客户端渲染或服务器端渲染:

1.服务器端

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

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

在表单Entry中.jsp您可以从请求参数中获取此ID:

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

然后,您可以使用此用户 ID 检索您的用户对象:

//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)将视图与模型和控制器分开
  • 使用纯 JSP,但不要在 JSP 中使用较低级别的层,只使用服务层,最好有一些标签库来减少 JSP 中所需的 Java 代码


2.客户端

第二种方法是使用更多的javascript来处理任务。你可以使用你的servlet方式,让你的servlet返回用户对象的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。