2012-05-10 82 views
-1

在學習JSP,Servlets和DAO時,我遵循this教程,並希望瞭解一點關於使用JSP/Servlet編輯SQL Server表的正確方法。在處理數據庫時JSP,Servlet,DAO之間的通信

無論如何,我有:

  • POJO.java
  • DAO.java
  • SERVLET.java
  • PAGE.jsp

如何實現另一個JSP頁面顯示數據行?是否有可能創建一個JSP頁面來調用DAO/Servlet進行數據提取,然後在其自身(JSP)上顯示數據?

打開網站時,我打電話給Servlet,過程如下:Servlet -> DAO -> JSP。我是否需要另一個Servlet + JSP文件,或者可以添加僅使用當前Servlet填充頁面的JSP文件?

我的問題應該可以去教程的作者,但我希望在這裏從不同的角度來看一些建議。

+1

請您詳細說明_I'm調用Servlet:Servlet - > DAO - > JSP。我應該如何爲用戶添加第二個站點來簡單瀏覽數據?另一個Servlet和另一個JSP文件,或者我可以添加只使用當前Servlet的JSP文件?_ –

+0

@JigarJoshi我的意思是這個例子是調用一個返回JSP頁面的Servlet--這就像CMS一樣。如何爲沒有編輯權限的人添加首頁?它應該是另一個Servlet,還是JSP可以調用與CMS相同的Servlet。 – yosh

+1

沒有相同的servlet可以完成這項工作,你可以解決當前用戶的角色並將其存儲在會話中,從會話中檢查如果用戶具有該角色然後啓用視圖,那麼也可以在servlet/service上添加此安全性 –

回答

1

如果我正確理解你想要的東西,那麼你已經擁有了幾乎所有你需要的東西來完成你想要的任務。 DAO有一個名爲list()的方法,它將查詢數據庫並返回僱員對象的數組列表,以便您在那裏很好。然而,servlet和jsp頁面需要修改才能使其工作,但是將相關代碼添加到servlet中以使用DAO來獲取員工列表。 之前try塊的開頭添加

ArrayList<employee> employeeList = null; 

這個代碼添加到現有的代碼在servlet的process()方法。

else if (StringUtils.equals(actionContext, "list")) { 
    employeeList = dao.list(); 
    request.setAttribute("employeeList", employeeList); 
    } 

在JSP中的JavaScript將不得不爲了方便這一點,因爲JavaScript的是駕駛什麼傳遞給servlet改變,你將有一個按鈕添加到會調用JavaScript函數的JSP與此類似。

<input type='button' value='List Employees' onclick="submitForm('list')" /> 

這應該指向您正確的方向,並允許您仍然使用教程中的代碼稍作修改。希望有所幫助。

+0

那麼,我需要一個完全不同的JSP用於默認用戶網站。我可以通過'request.getRequestDispatcher(「/ jsp/default.jsp」)來實現。forward( request,response);',對吧?可以在default.jsp的某處添加一個登錄表單,將用戶切換到可編輯的「管理模式」? – yosh

+1

web.xml中的welome-file-list將index.jsp列爲歡迎文件,所以如果輸入「http:// localhost:8080/Example14 /」而不是Web應用程序的默認jsp 「http:// localhost:8080/Example14/Servlet3」,你可以在那裏添加登錄表單。當您在地址欄中輸入「http:// localhost:8080/Example14/Servlet3」時,您將繞過index.jsp並直接調用該servlet,然後該servlet將您重定向到employee_maintenance.jsp。 – ChadNC

+0

非常感謝:)但是,如果我希望此index.jsp同時顯示登錄表單和不可編輯的數據庫記錄,該怎麼辦。我如何從index.jsp調用servlet(執行整個查詢處理)? – yosh

0

如果我理解你的問題的權利,我可以讓你做下一個:
1.附加你的數據到reguest(使用request.setAttribute(Name,Object));
2.使用jsp:import連接下一個JSP頁面;
3.在這些servlet中,通過request.getAttribute(Name)提取數據,將其轉換爲您需要和使用的類型。

如何,我不知道這是否足夠正確 - 因爲我知道,你實際上不會複製你的var,所以這不會佔用額外的時間或內存,但我不能當然,如果這是解決這個問題的最「充分的」方法......