2017-04-25 61 views
1

我正在使用jsp,javascript等開發我的第一個webapp,初始頁面是「login.jsp」。在該頁面中,有一個到註冊頁面的鏈接,當用戶通過Servlet提交註冊表單時,他會被髮送回登錄頁面。但我希望在頁面加載的同時在登錄頁面內顯示成功警報。如何在重定向到下一頁後顯示div?

我不知道確切的方法,使這一切成爲可能。我想過在servlet中設置一個像「notifier」這樣的請求屬性,所以登錄頁面知道用戶是否來自注冊。但是,我不確定如何「讀取」該屬性。我已經嘗試過使用JavaScript,jsp等等。沒有任何工作適合我。 此外,我不知道是否應該使用RequestDispatcher.forward()重定向,並將通知程序設置爲會話屬性。 (在這裏我還有一個問題,在登錄頁面的樣式表沒有加載)。

這是一些在註冊頁面:

//.... 
<form action="/servlet/UpdateUser" method="POST" accept-charset="utf-8" class="form" role="form"> 
//....   
    <button class="btn btn-lg btn-block signup-btn" type="submit" name="signup">Create my account</button> 
</form> 
//.... 

一些的servlet:

//servlet 
    @Override 
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
     resp.setContentType("text/html"); 
     if (req.getParameter("signup") != null) { 
      User user = new User(); 
      //user setters and register 
      //.. 
      //Should i use (?): 
      //req.setAttribute("SignUp", true); 
     } //.. 
     //rest of the servlet 
     resp.sendRedirect("../login.jsp"); 
    } 

一些登錄頁面:

//Rest of Login Page 
//Here is something i've tried. 
<script type="text/javascript"> 
    window.onload = function() { 
     var b = <%request.getAttribute("SignUp");%>; 
     if (b) document.getElementById('success').style.display = 'block'; 
     else document.getElementById('success').style.display = 'none'; 
    } 
</script> 
//Rest of Login Page 
<body> 
//.. 
    <div class="alert alert-success" id="success"> 
     <strong>Success!</strong> You can now login. 
    </div> 
//.. 
</body> 
//Rest of Login Page 

PD:這是我的第一個問題。

回答

0

在您的第一個webapp上工作出色!

你絕對可以只註冊與否通過請求屬性溝通的天氣用戶。問題是,如果頁面login.jsp位於WEB-INF內,則必須使用request.getRequestDispathcer("../login.jsp").forward(request, response)。 如果它在根目錄中,則可以使用resp.sendRedirect("../login.jsp");

你設置請求參數註冊看起來很好的註釋代碼。

另一件事是您的不當使用腳本小程序。也就是說,當您要將值分配給var b時,您需要使用<%=(與您使用的<%相比)來返回值。 更妙的是,你可以使用表達式語言 - 只是把${SignUp}var b =後(嘗試在未來所有小寫輸入屬性標籤)。

JS的其餘部分看起來不錯。

+0

我用'req.setAttribute( 「註冊」,真)'然後'req.getRequestDispathcer( 「../的login.jsp」)。前(REQ,RESP)',但問題是對的閱讀login.jsp中的屬性,除了第一次,該屬性不存在。 '' – BrunoLedesma

+0

div無論如何正在顯示。 – BrunoLedesma

+0

你應該嘗試傳遞一個字符串作爲屬性'req.setAttribute(「註冊」,「真」),然後比較它像'if(su ===「true」)''。 請注意,您也可以將整個對象作爲屬性發送,然後使用'$ {objectName.fieldName}'訪問該對象的字段。 – solstinger