检查jsp文件中的servlet会话属性值

时间:2012-11-30 03:09:37

标签: jsp servlets

我有一个没有框架的java应用程序。它由用于视图的jsp文件和用于业务逻辑的servlet组成。我必须设置用户会话是带有firstName参数的servlet。在jsp文件中,我需要检查我的firstName参数是否有值。如果设置了firstName参数,我需要在jsp文件中显示一些html。如果没有设置,我需要在jsp文件中显示不同的html。

Servlet.java:

HttpSession session = request.getSession();
session.setAttribute("firstName", customer.getFristName());
String url = "/index.jsp";
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(url);
dispatcher.forward(request, response);

header.jsp中:

// Between the <p> tags bellow I need to put some HTML with the following rules
// If firstName exist: Hello ${firstName} <a href="logout.jsp">Log out</a>
// Else: <a href="login.jsp">Login</a> or <a href="register.jsp">Register</a>

<p class="credentials" id="cr"></p>

最好的方法是什么?

更新

这是我在JSTL上发现的一个很棒的教程,以防有人需要它: http://www.tutorialspoint.com/jsp/jsp_standard_tag_library.htm

3 个答案:

答案 0 :(得分:10)

<% if (session.getAttribute("firstName") == null) { %>
    <p> some content </p>
<% } else {%>
    <p> other content </p>
<% } %>

答案 1 :(得分:1)

我认为最好的方法是使用jstl标签。因为对于简单的jsp应用程序,最好将所有java代码添加到html但是更重的应用程序,最好在html上使用最小的java代码。(从逻辑中单独查看视图层)(阅读此内容以获取更多https://stackoverflow.com/a/3180202/2940265
根据您的期望,您可以轻松使用类似下面的代码

<c:if test="${not empty firstName}">
    <%--If you want to print content from session--%>
    <p>${firstName}</p>

    <%--If you want to include html--%>
<%@include file="/your/path/to/include/file.jsp" %>

    <%--include only get wrong if you give the incorrect file path --%>
</c:if>
<c:if test="${empty firstName}">
    <p>Jaathi mcn Jaathi</p>
</c:if>

如果您未正确包含jstl,则无法获得预期的输出。请参阅此事件https://menukablog.wordpress.com/2016/05/10/add-jstl-tab-library-to-you-project-correctly/

答案 2 :(得分:0)

在servlet中,您可以按如下方式编写

        HttpSession session = request.getSession(true);
        session.setAttribute("firstName", customer.getFristName())
        response.sendRedirect("index.jsp");

如果request.getSession(true)不存在任何会话,则index.jsp将返回新会话,否则它将返回当前会话。 并且,在<% if(session.getAttribute("firstName")==null) { %> <jsp:include page="firstPage.html"></jsp:include> <% } else { %> <jsp:include page="secondPage.html"></jsp:include> <% }%> 页面中,您可以执行以下操作:

firstName

此处,如果firstPage.html为空,则secondPage.html将包含在页面中,否则{{1}}。