Menggunakan if-else dalam JSP

Saya menggunakan kode berikut untuk mencetak nama pengguna di browser:

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

Setiap kali saya mengeksekusinya, pesan

Saya mengerti! Anda tidak punya nama... yah... Halo, tidak ada nama

ditampilkan meskipun saya belum memasukkan apa pun di kotak teks. Namun jika saya memasukkan apapun di dalamnya, maka kode response.jsp akan ditampilkan, tapi saya tidak ingin pesan pertama ditampilkan saat eksekusi. Bagaimana saya membuat hal itu terjadi? Tolong sarankan perubahan dalam kode saya.

P.S. Saya telah membaca di beberapa pertanyaan bahwa alih-alih memeriksa kesetaraan dengan null, seseorang harus memeriksanya untuk tidak sama dengan, sehingga tidak' tidak melempar pengecualian pointer null. ketika saya mencoba hal yang sama, yaitu if(user != null && ...), saya mendapat NullPointerException.

Hampir selalu disarankan untuk tidak menggunakan scriptlet di JSP Anda. Mereka dianggap bentuk yang buruk. Sebagai gantinya, cobalah menggunakan JSTL (JSP Standard Tag Library) yang dikombinasikan dengan EL (Expression Language) untuk menjalankan logika kondisional yang Anda coba lakukan. Sebagai manfaat tambahan, JSTL juga menyertakan fitur-fitur penting lainnya seperti looping.

Bukannya:




Gunakan:



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




Selain itu, kecuali Anda berencana menggunakan response.jsp di tempat lain dalam kode Anda, mungkin lebih mudah untuk hanya menyertakan html dalam pernyataan sebaliknya:


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

Juga perlu diperhatikan. Untuk menggunakan tag core, Anda harus mengimpornya sebagai berikut:

Anda ingin membuatnya sehingga pengguna akan menerima pesan ketika pengguna mengirimkan nama pengguna. Cara termudah untuk melakukan ini adalah dengan tidak mencetak pesan sama sekali ketika param "user" adalah null. Anda dapat melakukan validasi untuk memberikan pesan kesalahan ketika pengguna mengirimkan null. Ini adalah pendekatan yang lebih standar untuk masalah Anda. Untuk mencapai hal ini:

Dalam scriptlet:

 0 ) {

   }
%>

Di jstl:



Komentar (2)

Alih-alih kondisi if-else gunakan if di kedua kondisi. itu akan bekerja seperti itu tetapi tidak yakin mengapa.

Komentar (0)

Anda bisa mencoba contoh ini:


  <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> 
Komentar (0)