在JSP中使用if-else

时间:2014-11-14 12:38:15

标签: jsp if-statement scriptlet

我使用以下代码在浏览器上打印用户名:

<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>

每次执行时,都会显示消息

  

我明白了!你没有名字..好吧..你好,没有名字

即使我没有在文本框中输入任何内容,也会显示

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

P.S。我在一些问题中读过,不是用null来检查是否相等,而是必须检查它是否为等于,这样它就不会抛出空指针异常。当我尝试相同的时候,即if(user != null && ..),我得到了NullPointerException

3 个答案:

答案 0 :(得分:16)

几乎总是建议不要在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" %>

您希望这样做,以便用户在用户提交用户名时收到消息。最简单的方法是在&#34; user&#34;时不打印消息。 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>

答案 1 :(得分:1)

如果在两种情况下都使用if-else条件而不是if。它将以这种方式工作但不确定原因。

答案 2 :(得分:0)

您可以尝试这个例子:

<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>
<h1>Hello ${param.user}</h1> 
<!-- its Expression Language -->