我正在研究我的第一个webapp,使用jsp,javascript等。初始页面是“login.jsp”。在该页面内,有一个指向注册页面的链接,当用户通过Servlet提交注册表单时,他将被发送回登录页面。但我希望在页面加载的同时在登录页面内显示成功警报。
我不知道使这成为可能的确切方法。我想在servlet中设置一个像“notifier”这样的请求属性,因此登录页面知道用户是否来自注册。但是,我不确定如何“阅读”该属性。我已经尝试过使用javascript,jsp等等。没有什么对我有用。 此外,我不知道我是否应该使用RequestDispatcher.forward()重定向并将通知程序设置为Session属性。 (这里我有另一个问题,登录页面的样式表没有加载。)
这是一些注册页面:
//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");
}
一些servlet:
//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
登录页面的一些内容:
counter
PD:这是我的第一个问题。
答案 0 :(得分:0)
在第一个webapp上工作很好!
您绝对可以通过请求属性与刚刚注册的天气用户进行通信。问题是,如果页面login.jsp
位于WEB-INF
内,则您必须使用request.getRequestDispathcer("../login.jsp").forward(request, response)
。
如果它在根目录中,您可以使用resp.sendRedirect("../login.jsp");
。
您设置请求参数SignUp的注释代码看起来很好。
其他的是你不恰当地使用scriptlet。也就是说,当您想要为var b
分配值时,您需要使用<%=
(与您使用的<%
相比较)来返回值。
更好的是,您可以使用表达式语言 - 只需将${SignUp}
放在var b =
之后(尝试将来以全部小写形式键入属性标签)。
JS的其余部分看起来很好。