【问题标题】:Jsp - two pages in oneJsp——两页合一
【发布时间】:2018-06-21 22:17:41
【问题描述】:

所以我刚开始用 jsp 编写我的第一个代码。

我创建了一个登录页面,用户写下他的用户名和密码,如果数据库(MySQl)中不存在它们中的任何一个,它会在同一页面中打印一条消息(用户认为它是同一页面)。

我通过将信息发送到文件(查看数据库)来做到这一点,如果信息正确则转到下一页,如果错误则转到错误页面。

现在我的问题是,如果我有两个页面具有相同的代码(Login.jsp 和 ErrorLogin.jsp),唯一的区别是额外的错误消息如何加入它们?

我可以避免我的两个相同的页面吗? :/ 我的第一个想法是添加一个 if 语句,但它在这种语言中令人困惑。

这是我创建的 2 个文件(我认为 Validation_Login.jsp 对此并不重要,但如果需要请告诉我上传)


登录.jsp

<body> 

        <form action="Validation_Login.jsp">             
                <font size="+3"> Login </font>
                <br/><br/>

                <div>
                    USERNAME: <input type="text" placeholder="Enter Username" name="firstname"/>
                    <br/><br/>
                </div>

                <div>
                    PASSWORD: <input type="password" placeholder="Password" name="Password" />
                    <br/><br/>
                </div>

                <div>
                    <input type="submit" value="login" />
                </div>
        </form>

        <form action="Create_Account.jsp">
                <input type="submit" value="Create_Account">
        </form>

    </body>

ErrorLogin.jsp

<body>         
        <form action="Validation_Login.jsp" >
                <font size="+3"> Login </font>
                <br/><br/>

                <div>
                    USERNAME: <input type="text" placeholder="Enter Username" name="firstname"/>
                    <br/><br/>
                </div>

                <div>
                    PASSWORD: <input type="password" placeholder="Password" name="password" />
                    <br/><br/>
                </div>

                <div>
                    <input type="submit" value="login" />
                </div>
        </form>

        <form action="Create_Account.jsp">
            <input type="submit" value="Create_Account">
        </form>

        <div id="message">
            Wrong UserName Or Password
            <br/>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Please Try Again
        </div>
    </body>

【问题讨论】:

  • 您是否尝试过使用 include 语句?您可以使用它将另一个 jsp 页面的内容包含到此 jsp 页面中。
  • 然后,在错误页面中,您可以包含模板(两个页面通用的东西)并在其下方添加错误消息。
  • 是的,我在问这个问题 1 小时后就想到了:D 我就是那样做的!
  • 酷...也许,为了其他人看,我可以写一个更详细的答案,你可以接受它,因为它解决了你(和其他人)的问题?
  • 好的,我没问题

标签: jsp custom-error-pages login-control


【解决方案1】:

实现这一点的最佳方法是使用 jstl 标签“include”

<jsp:include page="./path-to-template/template_name.jsp">
    <jsp:param name="content" value="content_page_name"></jsp:param>
</jsp:include>

为了实现这一点,“template_name”jsp 页面的内容应该是:

<%@page contentType="text/html" pageEncoding="ISO-8859-6"%>
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>MyGrowth - Track Education While in Migration</title>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
    </head>
    <body>
        <div class="container">
            <%@include file="header.jsp" %>
            <jsp:include page="../content/${param.content}.jsp"></jsp:include>
            </div>                      
        </body>
    <%@include file="footer.jsp"%>
</html>

关键部分是包含从参数获得的页面的位置:

       <jsp:include page="../content/${param.content}.jsp"></jsp:include>

因此,当我们将名为“content_page_name”的页面传递给模板页面时,该页面将插入到“模板”页面中“包含”标签所在的位置。

*注意:content 页面应仅包含 html 正文元素(因为头部已在模板页面中定义。

【讨论】:

  • @george nikitas 你找到这个答案来解决你的问题了吗?
【解决方案2】:

您可以通过在检查登录的代码中(在您尚未发布的页面中)设置一些标志来轻松做到这一点,然后在 login.jsp 中检查该标志以确定是否显示错误消息。

您可以使用 Java 标准标记库来执行此操作。

https://www.tutorialspoint.com/jsp/jsp_standard_tag_library.htm

在两个 JSP 中添加指令:

&lt;%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %&gt;

登录失败:

&lt;c:set var="loginFailed value="true" scope="request"/&gt;

在登录页面上:

<c:if test="${loginFailed eq true}">
        <div id="message">
            Wrong UserName Or Password. Please Try Again
        </div>
</c:if>

【讨论】:

    猜你喜欢
    • 2012-01-30
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    相关资源
    最近更新 更多