我在這裏是新來的,但閱讀本頁多次。我有一個複雜的問題,我不是母語英語,所以如果我無法理解,請原諒我。
我寫了一個portlet到我們舊的Oracle Portal 10g服務器。在portlet中,一個javascript函數將一些帶有ajax的數據傳遞給一個servlet。 我想在識別用戶的時候調用servlet。我可以通過Portlet會話嗎?就像在portlet中一樣,有一個PortletRenderRequest,我可以獲取用戶名和用戶權限。
我的理論portlet函數簡而言之:它是一種形式,如果有人填寫它,並用javascript ajax發送數據給servlet,我想檢查一下,發件人是否有權將數據插入到數據庫中(她是什麼/他的名字)。現在它起作用了,portlet獲取用戶數據並寫入一個輸入隱藏元素值,並且javascript讀取它,然後發送該帖子,但這很容易被破解,並且可怕的解決方案。
有什麼辦法可以獲取servlet請求中的用戶數據?
現在,在理論上它看起來像這樣:
portlet.jsp:
<%
PortletRenderRequest pReq = (PortletRenderRequest)request.getAttribute(HttpCommonConstants.PORTLET_RENDER_REQUEST);
String userNev = pReq.getUser().getName();
session.setAttribute("username",userNev);
System.out.println("session ID in JSP: "+session.getId());
%>
<button class="btn" type="button">Upload data</button>
<script type="text/javascript">
$(function() {
$(".btn").click(function(){
/*.....*/
$.post("/demo/servlet", poststring);
});
});
</script>
的servlet:
public class servlet extends HttpServlet {
public void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
HttpSession session = (request.getSession());
System.out.println("Session ID in servlet: "+session.getId());
/*....*/
}
}
目前,它在JDeveloper 10.1.3.5的運行。
每個頁面刷新都會在控制檯中顯示不同的「JSP中的會話ID」,但「Servlet中的會話ID」不會更改,因此它必須是正確的。
所以現在唯一的任務是把數據放在正確的HttpSession中,我只需要以某種方式訪問jsp頁面。 HttpSession Session = request.getSession();在jsp頁面上的會給出錯誤的會話(這會改變每次刷新)。
編輯:
所有的問題都回答@Jonathan。它導致了額外的問題,比如如何在jsp頁面上獲得HttpSession?
我發現,session = HttpSession = ProviderSession在jsp頁面上,並不等於在servlet中有HttpSession。
(如果我將提供者註冊頁面上的登錄頻率設置爲「always」,jsp頁面上的ProviderSession沒有隨頁面刷新而改變)
我並不真正瞭解ProviderSession和HttpSession之間的區別,以及如何訪問從一個到另一個。如果我可以通過servlet訪問ProviderSession,從使用的角度來看它會是一樣的嗎?
哇,這將是太棒了,謝謝@jonathan! 我試圖把數據放到會話中: HttpSession Session = request.getSession(); Session.setAttribute(「loggedInUser」,userNev); System.err.println(「ellenőrzés:」+ Session.getAttribute(「loggedInUser」)); //沒關係! 但在servlet中,在該屬性中找到null。 我在provider.xml中設置了 true ,並且還將提供程序註冊頁面上的登錄頻率設置爲「每個用戶會話一次」。 –
KoRi
因爲我發現會話id(session.getId())在jsp頁面和servlet中不同,所以會話不同。但我不知道爲什麼? – KoRi
@KoRi編輯你的文章並添加你遇到的問題的代碼,我會看看我是否可以幫助你,我不完全理解你的問題。 –