|
|
Servlet yazmak, HttpServlet class'ını extend etmek demektir. 'Get' method'uyla çalışan bir servlet yazmak için doGet() methodu override etmek gerekir. Bir browser'dan çağrıldığında ekrana "Merhaba" yazan bir servlet yazalım.
Göster Gizle Kopar Satır Gizle Satır Göster |
1 import javax.servlet.http.*; 2 import java.io.*; 3 public class GreeterServlet extends HttpServlet{ 4 public void doGet(HttpServletRequest request,HttpServletResponse response) 5 throws IOException 6 { 7 PrintWriter out=response.getWriter(); 8 out.println("<html>"); 9 out.println("<body>"); 10 out.println("Merhaba!"); 11 out.println("</body>"); 12 out.println("</html>"); 13 } 14 }
Görüldüğü gibi client'a gelecek bütün HTML, programcı tarafından output'a basılması gerekir. Response'a HTML basmak ancak getWriter() method'uyla bir PrintWriter elde edilerek yapılabilir. PrintWriter class'ı Java'nın standart I/O package'inde bulunan bir nesnedir. Her hangi bir writer'a yazmaktan bu işlemin hiç bir farkı yoktur.
Bir servletin çalıştırılması için Application Server'ın çalışır durumda olması gerekir. Bir server'ın 'localhost'ta 8080 portunda çalıştığını varsayarsak, bir tarayıcıda
http://localhost:8080/servlet/MyServlet
girilirse, sonuç olarak bir web sayfası görülür. Gerçek bir uygulamada mutlaka 'www.myhost.com' gibi bir hostname, (HTTP'nin default) 80 portunda çalışan ve tam class adı com.mypackage.servlet.MyServlet olan bir servlet için bu URL
http://www.myhost.com/servlet/com.mypackage.MyServlet
olacaktır.
Get methoduyla çalışan bir servlete parametre
http://localhost:8080/servlet/MyServlet?name1=value&name2=value2
biçiminde aktrarılır.İki sayıyı toplayıp sonucu ekrana basan bir servlet yapalım.
Göster Gizle Kopar Satır Gizle Satır Göster |
1 import javax.servlet.*; 2 import javax.servlet.http.*; 3 import java.io.*; 4 public class AdderServlet extends HttpServlet{ 5 public void doGet(HttpServletRequest request,HttpServletResponse response) 6 throws IOException 7 { 8 PrintWriter out=response.getWriter(); 9 out.println("<html>"); 10 out.println("<body>"); 11 String number1=request.getParameter("num1"); 12 int a=Integer.parseInt(number1); 13 String number2=request.getParameter("num2"); 14 int b=Integer.parseInt(number2); 15 int sum=a+b; 16 out.println("Toplam : "+sum); 17 out.println("</body>"); 18 out.println("</html>"); 19 } 20 21 }
Bu servleti çağırmak için de
http://localhost:8080/servlet/AdderServlet?num1=5&num2=11
biçimide bir URL girilir.
Parametrelerden birinin girilmemesi veya yanlış isimle girilmesi durumunda servlet çalışmayacaktır. O yüzden servlete şu şekilde bir kontrol yapılmalıdır.
String number1=request.getParameter("num1"); if(number1!=null){ out.println("İlk sayı verilmedi"); }
Bir servlet'in 'Post' method'uyla çağrılarak çalıştırılabilmesi için, doPost method'unun override edilmesi gerekir. Post methodu' genellikle formlar'la kullanıldığı için, servlet'i içeren URL'in bir HTML form'unda 'action' olarak belirtilmesi gerekir. Girilen boy ve cinsiyete karşı ideal kilonuzu hesaplayan bir servlet yazalım.
Göster Gizle Kopar Satır Gizle Satır Göster |
1 import javax.servlet.*; 2 import javax.servlet.http.*; 3 import java.io.*; 4 public class IdealWeightCalculatorServlet extends HttpServlet{ 5 public void doPost(HttpServletRequest request,HttpServletResponse response) 6 throws IOException 7 { 8 PrintWriter out=response.getWriter(); 9 out.println("<html>"); 10 out.println("<body>"); 11 String t=request.getParameter("tallness"); 12 int tallness=Integer.parseInt(t); 13 String sex=request.getParameter("sex"); 14 int ideal=0; 15 if(sex.equals("male")){ 16 ideal=(tallness-50)/2; 17 }else{ 18 ideal=(3*tallness-350)/4; 19 } 20 out.println("İdeal Kilo : "+ideal); 21 out.println("</body>"); 22 out.println("</html>"); 23 } 24 }
Bu servlet'i çağıracak form'u içeren HTML de şu şekilde olabilir :
<!-- idealweight.html --> <html> <body> <form action="http://localhost:8080/servlet/IdealWeightCalculatorServlet" method="post"> <br> Boy :<input type="tallness" type="text"> <br> Cinsiyet : Kadın <input type="sex" type="radio" value="male"/> <input type="sex" type="radio"value="female"/> </form> </body> </html>
|
|