2017-04-25 62 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