我有一个没有框架的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
答案 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}}。