当前位置 : 主页 > 编程语言 > java >

在JSP中使用if-else

来源:互联网 收集:自由互联 发布时间:2021-06-25
我正在使用以下代码在浏览器上打印用户名: body form h1Hello! I'm duke! What's you name?/h1 input type="text" name="user"brbr input type="submit" value="submit"nbsp;nbsp;nbsp;nbsp; input type="reset" /form %String user=req
我正在使用以下代码在浏览器上打印用户名:

<body>
  <form>
    <h1>Hello! I'm duke! What's you name?</h1>
    <input type="text" name="user"><br><br>
    <input type="submit" value="submit">&nbsp;&nbsp;&nbsp;&nbsp;
    <input type="reset">
  </form>
  <%String user=request.getParameter("user"); %>
  <%if(user == null || user.length() == 0){
    out.print("I see! You don't have a name.. well.. Hello no name");   
   }
   else {%>
      <%@ include file="response.jsp" %>
   <% } %>  
</body>

的response.jsp:

<body>
    <h1>Hello</h1>
    <%= request.getParameter("user") %>
 body>

每次我执行它,消息

I see! You don’t have a name.. well.. Hello no name

即使我没有在文本框中输入任何内容,也会显示.但是,如果我在其中输入任何内容,则会显示response.jsp代码,但我不希望在执行时显示第一条消息.我该如何做到这一点?请修改我的代码.

附:我曾在一些问题中读到,不是检查与null的相等性,而是必须检查它是否为等于,以便它不会抛出空指针异常.当我尝试相同的,即if(user!= null&& ..)时,我得到了NullPointerException.

几乎总是建议不在JSP中使用scriptlet.他们被认为是糟糕的形式.相反,尝试使用 JSTL(JSP标准标记库)与EL(表达式语言)结合运行您尝试执行的条件逻辑.作为额外的好处,JSTL还包括其他重要功能,如循环.

代替:

<%String user=request.getParameter("user"); %>
<%if(user == null || user.length() == 0){
    out.print("I see! You don't have a name.. well.. Hello no name");   
}
else {%>
    <%@ include file="response.jsp" %>
<% } %>

使用:

<c:choose>
    <c:when test="${empty user}">
        I see!  You don't have a name.. well.. Hello no name
    </c:when>
    <c:otherwise>
        <%@ include file="response.jsp" %>
    </c:otherwise>
</c:choose>

此外,除非您计划在代码中的其他位置使用response.jsp,否则在您的其他语句中包含html可能更容易:

<c:otherwise>
    <h1>Hello</h1>
    ${user}
</c:otherwise>

另外值得注意.要使用核心标记,必须按如下方式导入:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

您希望这样做,以便用户在用户提交用户名时收到消息.最简单的方法是在“user”param为null时根本不打印消息.当用户提交null时,您可以进行一些验证以提供错误消息.这是解决问题的更标准方法.要做到这一点:

在scriptlet中:

<% String user = request.getParameter("user");
   if( user != null && user.length() > 0 ) {
       <%@ include file="response.jsp" %>
   }
%>

在jstl中:

<c:if test="${not empty user}">
    <%@ include file="response.jsp" %>
</c:if>
网友评论