【问题标题】:How to display a div AFTER redirecting to next page?重定向到下一页后如何显示div?
【发布时间】:2017-04-25 00:37:21
【问题描述】:

我正在开发我的第一个 web 应用程序,使用 jsp、javascript 等。初始页面是“login.jsp”。在该页面内,有一个指向注册页面的链接,当用户通过 Servlet 提交注册表单时,他会被发送回登录页面。但我希望在页面加载的同时出现在登录页面内的成功警报。

我不知道使这成为可能的确切方法。我考虑在 servlet 中设置一个请求属性,如“通知程序”,以便登录页面知道用户是否来自注册。但是,我不确定如何“读取”该属性。我已经尝试过使用 javascript、jsp 等。没有什么对我有用。 此外,我不知道是否应该使用 RequestDispatcher.forward() 重定向并将通知程序设置为 Session 属性。 (这里我还有一个问题,登录页面的样式表没有加载。)

这是一些注册页面:

//....
<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:这是我的第一个问题。

【问题讨论】:

    标签: javascript java jsp servlets


    【解决方案1】:

    在你的第一个 web 应用上工作做得很好!

    您绝对可以通过请求属性传达刚刚注册或未注册的天气用户。问题是,如果页面login.jsp 位于WEB-INF 内,则必须使用request.getRequestDispathcer("../login.jsp").forward(request, response)。 如果在根目录下,可以使用resp.sendRedirect("../login.jsp");

    您设置请求参数 SignUp 的注释代码看起来不错。

    另一件事是您对小脚本的不当使用。也就是说,当你想给var b赋值时,你需要使用&lt;%=(与你使用的&lt;%相比)返回一个值。 更好的是,您可以使用表达式语言 - 只需将${SignUp} 放在var b = 之后(以后尝试将属性标签输入全部小写)。

    JS 的其余部分看起来不错。

    【讨论】:

    • 我用req.setAttribute("signup", true)然后req.getRequestDispathcer("../login.jsp").forward(req, resp),但是问题是在login.jsp中读取属性,除了第一次,属性不存在。 &lt;script type="text/javascript"&gt; window.onload = function () { var su = ${signup}; if (su === true) { document.getElementById('success').style.display = 'block'; } else { document.getElementById('success').style.display = 'none'; } } &lt;/script&gt;
    • div 仍然在显示。
    • 您应该尝试将字符串作为属性req.setAttribute("signup", "true") 传递,然后像if(su === "true") 一样比较它。请注意,您也可以将整个对象作为属性发送,然后使用 ${objectName.fieldName} 访问该对象的字段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    相关资源
    最近更新 更多