【问题标题】:How to pass data to jsp and open it in new window from servlet如何将数据传递给jsp并从servlet在新窗口中打开它
【发布时间】:2016-04-25 10:59:14
【问题描述】:

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

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

【问题讨论】:

    标签: javascript jquery ajax jsp servlets


    【解决方案1】:

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

    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");
    

    然后您可以使用此用户 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。

    【讨论】:

    • 这是个好主意,谢谢。我想避免在 jsp 文件中使用 javacode,这就是我调用 servlet 的原因。那么,您有什么想法,如何在 jsp 中无需代码的情况下采用您的解决方法?我想在 formEntry.jsp 中使用另一个 ajax 来获取用户详细信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-11
    • 2021-03-01
    相关资源
    最近更新 更多