This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.List; | |
import java.util.Map; | |
import java.util.stream.Collectors; | |
import javax.ws.rs.*; | |
import javax.ws.rs.core.*; | |
@Path("/") | |
public class MyResource { | |
@GET | |
@Path("test") | |
public Response getCookie(){ | |
NewCookie cookie1=new NewCookie("myStrCookie","strValue"); | |
NewCookie cookie2=new NewCookie("myDateCookie","2018-06-10"); | |
NewCookie cookie3=new NewCookie("myIntCookie","200"); | |
Response.ResponseBuilder rs=Response.ok("myStrCookie myDateCookie and myIntCookie sent to the browser"); | |
Response r=rs.cookie(cookie1,cookie2,cookie3).build(); | |
return r; | |
} |
Gördüğünüz gibi oluşturduğumuz çerezleri response mesajımıza ekleyip döndürdük.Yalnız dikkat edeceğimiz birkaç nokta var.Çerez adlarımızı belirlerken virgül,noktalı virgül ve boşluk kullanmamalıyız.Çünkü bu karakterleri kodlayacak bir standart mevcut değil.Bu çerezler http response mesajının başlık kısmında Set-Cookie başlığı altında tutulup farklı başlıklar altında sıralanıyor.Çıktı da gördüğünüz gibi.Peki bu çerezlere bir http isteği ile erişmeye çalışırsak nasıl olacak ?Bir de ona bakalım.Yukarıdaki çerezlerimizi birde request mesajı ile görüntüleyelim.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@GET | |
@Path("test2") | |
public String readAllCookies(@Context HttpHeaders headers) { | |
Map<String, Cookie> cookies = headers.getCookies(); | |
String str = cookies.entrySet() | |
.stream() | |
.map(e -> e.getKey() + " = " + e.getValue().getValue()) | |
.collect(Collectors.joining("<br/>")); | |
return str; | |
} |
Şimdi de @CookieParam açıklamasını kullanarak bu çerezler üzerinde işlemler yapalım.Örneğin integer değer olarak gönderdiğimiz çerezi biz long olarak alabilir veya tarihi direct cookie tipinde alıp işleyebiliriz.Kodlarımıza göz atalım.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@GET | |
@Path("test3") | |
public String readCookie2(@CookieParam("myDateCookie") Cookie cookie) { | |
return "Cookie object :" + cookie; | |
} | |
@GET | |
@Path("test4") | |
public String readCookie3(@CookieParam("myIntCookie") Long aLong) { | |
return "myIntCookie in Long :" + aLong; | |
} |
Son olarak bu çerezleri bir list aracılığıyla okuyalım.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@GET | |
@Path("test5") | |
public Response writeCookies() { | |
NewCookie cookie1 = new NewCookie("myCookie", "cookieStrVal"); | |
NewCookie cookie2 = new NewCookie("myCookie", "cookieStrVal2"); | |
Response.ResponseBuilder rb = Response.ok(" Multiple values of myCookie" | |
+ " sent to the browser"); | |
Response response = rb.cookie(cookie1, cookie2) | |
.build(); | |
return response; | |
} | |
@GET | |
@Path("test6") | |
public String readCookie4(@CookieParam("myCookie") List<String> list) { | |
String rv = "List size: " + list.size() + | |
"<br/>List values:<br/> "; | |
rv += list.stream() | |
.collect(Collectors.joining("<br/>")); | |
return rv; | |
} |
Yazılarımda konuşma dili kullanığım için anlamsız cümleler kurmuş olabilirim.Anlamadığınız yeri yorum kısmından sorabilirsiniz.Konuyu çok iyi bir şekilde öğrendiğimi düşündüğümde videolu anlatım yapmayı düşünüyorum.Bir sonraki yazımızda görüşmek üzere kendinize iyi bakın :)
Hiç yorum yok:
Yorum Gönder