2.1 HttpServletRequest sınıfı
Servlet uygulamanızın yapması gereken işlerin çoğu, istekten alınan bilgilere göre yapılır. HttpServletRequest
Kapsayıcının sunucu uygulamanıza (yöntem service
veya yöntemlere vb doGet()
. doPost()
) ileteceği nesne bundan sorumludur.
Bu nesnenin epeyce yöntemi vardır, çünkü yalnızca istek verilerini depolar ve onun aracılığıyla kapsayıcıyla etkileşim kurabilirsiniz.
Yöntemler 2 büyük gruba ayrılabilir:
- Kullanıcı yetkilendirmesi ile ilgili yöntemler
- İstek verileriyle çalışma yöntemleri
Kullanıcı yetkilendirme yöntemlerini tablo halinde vereceğim ama bunları analiz etmeyeceğiz. Gerçek şu ki, bir kullanıcıyı yetkilendirmek için çok nadiren kullanılırlar. Tüm popüler çerçeveler, yetkilendirme için kendi çok daha gelişmiş yaklaşımlarını kullanır.
Bunları listelemeliyim ama yine de kimsenin onları kullandığını görmedim.
Yöntem | Tanım | |
---|---|---|
1 | authenticate(HttpServletResponse) |
Yanıt kimlik doğrulaması gerçekleştirir |
2 | changeSessionId() |
Oturum kimliğini zorla değiştir |
3 | getAuthType() |
Kullanılan kimlik doğrulama türünü döndürür: ASIC_AUTH, FORM_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH |
4 | getRemoteUser() |
Kullanıcı girişini döndürür |
5 | getRequestedSessionId() |
İstemcinin SessionID'sini döndürür |
6 | getSession() |
Bir HttpSession nesnesi döndürür |
7 | getUserPrincipal() |
Bir java.security.Principal nesnesi döndürür |
8 | login(username, password) |
Kullanıcı girişi gerçekleştirir |
9 | logout() |
Kullanıcı oturumunu kapatır |
2.2 Talep verileri
İkinci yöntem grubu çok daha ilginç. Talepte ne tür verilerimiz var?
- http yöntemi
- URI
- Seçenekler
- Başlıklar
Onlarla çalışmak için hangi yöntemlerin mevcut olduğunu görelim:
Yöntem | Tanım | |
---|---|---|
1 | getMethod() |
HTTP yöntemini döndürür: GET, POST, DELETE, ... |
2 | getRequestURI() |
İstek URI'sini döndürür: http://codegym.cc/my/data |
3 | getRequestURL() |
İstek URL'sini döndürür: http://codegym.cc/my/data |
4 | getQueryString() |
Sorguyu, yani ?'den sonraki her şeyi döndürür. |
5 | getParameterMap() |
Sorgu parametrelerinin bir listesini döndürür |
6 | getParameter(String name) |
Adına göre parametrenin değerini döndürür |
7 | getContentType() |
MimeType istek gövdesini döndürür |
8 | getReader() |
İstek gövdesini metin olarak okumak için okuyucu |
9 | getInputStream() |
İstek gövdesini byte[] olarak okumak için InputStream |
10 | getSession() |
Bir HttpSession nesnesi döndürür |
on bir | getCookies() |
Bir dizi Cookie[] nesnesi döndürür |
12 | getHeaderNames() |
Başlıkların bir listesini döndürür, yalnızca adlar |
13 | getHeader(String name) |
Başlık değerini ada göre döndürür |
14 | getServletPath() |
URL'nin servlete başvuran kısmını döndürür |
15 | getContextPath() |
İsteğin içeriğini belirten URI bölümünü döndürür |
Ve bu tüm yöntemler bile değil ...
HTTP protokolünü inceledikten ve HttpClient ile nasıl çalışacağımızı öğrendikten sonra, burada her şey aşağı yukarı tanıdık, değil mi?
Metnin ve rengin iletilebileceği bir servlet yazalım ve o metnin belirtilen renkte yazılmış olduğu bir HTML sayfası döndürecektir. Bu fikri nasıl buldun?
Servletimizi yazarak başlayalım:
public class ColorTextServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
//write your code here
}
}
Şimdi kullanıcı tarafından URI'den geçirilen metin ve rengi almamız gerekiyor:
public class ColorTextServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
// Getting the parameter “text” and “color” from request
String text= request.getParameter("text");
String color = request.getParameter("color");
}
}
Son olarak, metni HTML olarak çıkarmanız gerekir. Bunu bir sonraki derste ele alacağız, ancak burada küçük bir ipucu vereceğim:
public class ColorTextServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
// Get the "text" and "color" parameters from the request
String text = request.getParameter("text");
String color = request.getParameter("color");
// Print the HTML as a response to the browser
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head> <title> ColorTextServlet </title> </head>");
out.println("<body>");
out.println("<h1 style="color:"+color+">"+text+"</h1>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
}