2016-02-05 116 views
2

我試圖讓用戶在登錄頁面後登錄;我在使用jsp頁面(沒有servlet,它是一個大學項目),沒有DB的Apache Tomcat。保持用戶使用jsp登錄

我的問題是,登錄頁面後,用戶有正確的用戶名和密碼(我驗證這與<%System.out.println(usernameUser + " " + passwordUser); %>在新的頁面)。 在這個新的頁面我有一個新的表格,用戶可以提交其他信息(obv不同於他的用戶名和密碼);這個提交是在這個頁面上,但是在這個用戶名和密碼變成「null」之後。

下面的代碼

<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 

<jsp:useBean id="proprietarioBean" scope="session" class="gestioneLocazioni.ProprietarioBean" /> 
<jsp:setProperty name="proprietarioBean" property="*" /> 

<%System.out.println(request.getParameter("username") + " " + request.getParameter("password")); %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 

    [OTHER CODE] 

    <form action="ProprietarioLogin.jsp" name="myform" method="POST"> 
    <table> 
     <tr> 
      <td>Nome locazione:</td> 
      <td><input name="nomeLoc" id="nomeLoc" type="text"></td>     
     </tr> 
     <tr> 
      <td>Nome proprietario della locazione:</td> 
      <td><input name="nomeProp" id="nomeProp" type="text"></td>    
     </tr> 

     <tr>  
      <td><input name="aggLoc" id="aggLoc" type="submit" value="Aggiunti locazione"> </td> 
     </tr> 
     <tr> 
      <td> 
      <%if(request.getParameter("aggLoc") != null){ 
       String nomeLoc = request.getParameter("nomeLoc"); 
       String nomeProp = request.getParameter("nomeProp"); 

       if(proprietarioBean.validateInsert(nomeLoc, nomeProp)){ 
        System.out.println("Locazione inserita: " + request.getParameter("nomeLoc")); 
        proprietarioBean.richiediInserimento(request.getParameter("nomeLoc"), request.getParameter("nomeProp"));> 
        <p><b>Locazione inserita:</b> <%=request.getParameter("nomeLoc")%> </p> 
        <% int k = proprietarioBean.dimList(); 
        System.out.println("k vale: "+ k); 
        for(int i = 0; i <= k; i++){ 
         %><p> <%=proprietarioBean.getLocazionePend(i) %></p><% 
        } 
        } 

       else{ 
       System.out.println("Dati errati"); %> 
        <p><strong>DATI ERRATI</strong></p><% 
        } 
      }%> 
       </td> 
     </tr> 


    </table> 
    </form> 

如果需要我可以追加登錄的代碼。 預先感謝您。


編輯 現在我能得到正確的用戶名和密碼這樣的:

String username = (String) session.getAttribute("username");   
String password = (String) session.getAttribute("password"); 
System.out.println("Da session.getAttribute: " + username + " " + password +"\n"); 

現在我必須使用此信息爲JSP:的setProperty?

編輯2:解決!

感謝大家的回答。 我解決了這一點:

proprietarioBean.setUsername((String) session.getAttribute("username")); 
proprietarioBean.setPassword((String) session.getAttribute("password")); 
+2

不完全是一個好的做法,但罰款的學校項目。 http://www.tutorialspoint.com/jsp/jsp_session_tracking.htm ...保存** session **中的內容。每一個命中jsp頁面檢查會話對象 –

+0

是的,使用request.getSession()。setAttribute(「loginName」,loginName)或類似的。 –

+0

謝謝。 問題是,他從「新字符串(」blabla「);」而不是來自「request.getParameter(..)」。 我可以嘗試,但我不知道如何適合我的代碼,你能建議我一些嗎? – bigghe

回答

0

你基本上會有類似的東西,你會檢查該用戶名這一

的Login.jsp(即處理登錄頁面)

<% 
//save just user name in session 
request.getSession().setAttribute("userName", request.getParameter ("username")); 
%> 

在一些其他的頁面不爲空

<% 
if(request.getSession().getAttribute("userName") != null) 
//do something 
else 
//do something else 
%> 

您可以通過無效的會議

<% request.getSession().setAttribute("userName", null);%> //or 
//just call the invalidate method on the session object 
+0

好吧,這似乎是我所做的: 「session.setAttribute(」username「,request.getParameter(」username「)); 「 但可能我必須使用你的代碼嗎? 在此之後,我是否使用此參數使用「jsp:setProperty blabla」? – bigghe

+0

是的,只需將該字段添加到proprietarioBean類中,並檢查userName是否爲空。或者,檢查您的jsp頁面中的會話變量是否爲空。 –

0

我的建議是存儲用戶和在cookie中加密的密碼。

例如:

if(rememberMe){ 

Cookie c = new Cookie("userid", userId.toString()); 
c.setMaxAge(24*60*60); 
response.addCookie(c); // to add it to the response 

}

然後閱讀,你可以做這樣的事情的餅乾:

Cookie[] cookies = request.getCookies();  

boolean foundCookie = false; 

for(int i = 0; i < cookies.length; i++) 
{ 
    Cookie c = cookies[i]; 
    if (c.getName().equals("userid")){ 
     string userId= c.getValue(); 
     foundCookie = true; 
    } 
} 

Here你可以找到的官方文件和有關的更多信息餅乾