簡體   English   中英

如何將數據傳遞到jsp並從servlet在新窗口中打開

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

這是我的問題:我有一個使用數據表的表的jsp。 該表的末尾顯示了一些帶有編輯按鈕的用戶。 如果您單擊“編輯”按鈕,它將調用一個javascript函數,從表中獲取用戶ID並通過ajax $post.傳遞它$post. servlet的方法。 Servlet通過休眠從數據庫接收數據,並將其映射到對象中。 到目前為止,我的代碼一直有效。 現在,我想將對象傳遞給jsp並在新窗口中將其打開(彈出窗口或帶有內部表單的對象,用於使用對象中的數據設置它們以編輯被調用的用戶)。

  • 我可以從servlet做到嗎? 還是在呼叫成功后必須從ajax進行操作?

有兩種方法可以執行此操作:客戶端渲染或服務器端渲染:

1.服務器端

您不需要該servlet,所需的是制作第二個JSP文件作為輸入表單。 然后在Javascript中,打開一個帶有Form條目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)將視圖與模型和控制器分開
  • 使用純JSP,但不要在JSP中使用較低級別的層,僅使用服務層,並且最好使用一些taglib來減少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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM