JSP'de if-else kullanımı

Kullanıcının adını tarayıcıya yazdırmak için aşağıdaki kodu kullanıyorum:

<body>
  <form>
    <h1>Hello! I'm duke! What's you name?</h1>
    <input type="text" name="user"><br><br>
    <input type="submit" value="submit">    
    <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>

Her çalıştırdığımda şu mesaj çıkıyor

Anlıyorum! Senin bir adın yok. Merhaba, isim yok.

metin kutusuna hiçbir şey girmemiş olmama rağmen görüntüleniyor. Ancak içine bir şey girersem, response.jsp kodu görüntüleniyor, ancak yürütme sırasında ilk mesajın görüntülenmesini istemiyorum. Bunu nasıl gerçekleştirebilirim? Lütfen kodumda değişiklik önerin.

Not: Bazı sorularda null ile eşitlik kontrolü yapmak yerine, null pointer istisnası atmaması için eşit değil kontrolü yapılması gerektiğini okumuştum. aynısını denediğimde, yani if(user != null && ..), NullPointerException aldım.

JSP'nizde scriptlet kullanmamanız neredeyse her zaman tavsiye edilir. Bunlar kötü biçim olarak kabul edilir. Bunun yerine, yapmaya çalıştığınız koşullu mantığı çalıştırmak için EL (Expression Language) ile birlikte JSTL (JSP Standard Tag Library) kullanmayı deneyin. Ek bir fayda olarak, JSTL döngü gibi diğer önemli özellikleri de içerir.

Onun yerine:




Kullan:



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




Ayrıca, kodunuzda başka bir yerde response.jsp kullanmayı planlamıyorsanız, html'yi aksi takdirde ifadenize dahil etmek daha kolay olabilir:


    <h1>Hello</h1>
    ${user}

Ayrıca not. Çekirdek etiketini kullanmak için aşağıdaki şekilde içe aktarmanız gerekir:

Kullanıcı bir kullanıcı adı gönderdiğinde kullanıcının bir mesaj almasını sağlamak istiyorsunuz. Bunu yapmanın en kolay yolu, "user" parametresi null olduğunda hiç mesaj yazdırmamaktır. Kullanıcı null gönderdiğinde bir hata mesajı vermek için bazı doğrulamalar yapabilirsiniz. Bu, sorununuza daha standart bir yaklaşımdır. Bunu başarmak için:

Scriptlet içinde:

 0 ) {

   }
%>

Jstl'de:



Yorumlar (2)

if-else koşulu yerine her iki koşulda da if kullanın. bu şekilde çalışacaktır ama neden olduğundan emin değilim.

Yorumlar (0)

Bu örneği deneyebilirsiniz:


  <h1>Hello! I'm duke! What's you name?</h1>
  <input type="text" name="user">
  <br>
  <br>
  <input type="submit" value="submit">    
  <input type="reset">

<h1>Hello ${param.user}</h1> 
Yorumlar (0)