From d9e4ec2d2de5d83a93fe1e66c48b4296d0e08f24 Mon Sep 17 00:00:00 2001 From: abialas Date: Sat, 17 Mar 2018 00:05:57 +0100 Subject: [PATCH] BAEL-1567 (#3824) * BAEL-1412 add java 8 spring data features * BAEL-21 new HTTP API overview * BAEL-21 fix executor * BAEL-1432 add custom gradle task * BAEL-1567 add samples of cookie and session in serlvet * BAEL-1567 use stream api --- .../com/baeldung/servlets/CookieReader.java | 39 +++++++++++++++ .../com/baeldung/servlets/LoginServlet.java | 48 +++++++++++++++++++ .../com/baeldung/servlets/WelcomeServlet.java | 45 +++++++++++++++++ .../src/main/webapp/WEB-INF/jsp/login.jsp | 17 +++++++ .../src/main/webapp/WEB-INF/jsp/welcome.jsp | 13 +++++ 5 files changed, 162 insertions(+) create mode 100644 javax-servlets/src/main/java/com/baeldung/servlets/CookieReader.java create mode 100644 javax-servlets/src/main/java/com/baeldung/servlets/LoginServlet.java create mode 100644 javax-servlets/src/main/java/com/baeldung/servlets/WelcomeServlet.java create mode 100644 javax-servlets/src/main/webapp/WEB-INF/jsp/login.jsp create mode 100644 javax-servlets/src/main/webapp/WEB-INF/jsp/welcome.jsp diff --git a/javax-servlets/src/main/java/com/baeldung/servlets/CookieReader.java b/javax-servlets/src/main/java/com/baeldung/servlets/CookieReader.java new file mode 100644 index 0000000000..c2d875a69f --- /dev/null +++ b/javax-servlets/src/main/java/com/baeldung/servlets/CookieReader.java @@ -0,0 +1,39 @@ +package com.baeldung.servlets; + +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; + +/** + * Created by adam. + * + * Class which simplifies reading cookies from request. + */ +public class CookieReader { + + private HttpServletRequest request; + + /** + * The constructor. + * + * @param request request from which cookies will be read + */ + public CookieReader(HttpServletRequest request) { + this.request = request; + } + + /** + * Reads cookie by key from request. + * + * @param key the key of a cookie + * @return returns cookie value (or null if cookie with given key does not exist) + */ + public String readCookie(String key) { + return Arrays.stream(request.getCookies()) + .filter(c -> key.equals(c.getName())) + .map(Cookie::getValue) + .findFirst() + .orElse(null); + } + +} diff --git a/javax-servlets/src/main/java/com/baeldung/servlets/LoginServlet.java b/javax-servlets/src/main/java/com/baeldung/servlets/LoginServlet.java new file mode 100644 index 0000000000..deb0e05ec4 --- /dev/null +++ b/javax-servlets/src/main/java/com/baeldung/servlets/LoginServlet.java @@ -0,0 +1,48 @@ +package com.baeldung.servlets; + +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.*; +import java.io.IOException; + +/** + * Created by adam. + */ +@WebServlet(name = "LoginServlet", urlPatterns = "/login") +public class LoginServlet extends HttpServlet { + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + CookieReader cookieReader = new CookieReader(request); + String uiColor = cookieReader.readCookie("uiColor"); + String userName = cookieReader.readCookie("userName"); + + request.setAttribute("uiColor", uiColor != null ? uiColor : "blue"); + + if (userName == null || userName.isEmpty()) { + RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/login.jsp"); + dispatcher.forward(request, response); + } else { + response.sendRedirect("/welcome"); + } + } + + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { + HttpSession session = request.getSession(); + session.setAttribute("sampleKey", "Sample Value"); + + String uiColor = request.getParameter("color"); + String userName = request.getParameter("name"); + + Cookie uiColorCookie = new Cookie("uiColor", uiColor); + response.addCookie(uiColorCookie); + + Cookie userNameCookie = new Cookie("userName", userName); + response.addCookie(userNameCookie); + + response.sendRedirect("/welcome"); + } + +} diff --git a/javax-servlets/src/main/java/com/baeldung/servlets/WelcomeServlet.java b/javax-servlets/src/main/java/com/baeldung/servlets/WelcomeServlet.java new file mode 100644 index 0000000000..b35be2fc93 --- /dev/null +++ b/javax-servlets/src/main/java/com/baeldung/servlets/WelcomeServlet.java @@ -0,0 +1,45 @@ +package com.baeldung.servlets; + +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * Created by adam. + */ +@WebServlet(name = "WelcomeServlet", urlPatterns = "/welcome") +public class WelcomeServlet extends HttpServlet { + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + CookieReader cookieReader = new CookieReader(request); + String uiColor = cookieReader.readCookie("uiColor"); + String userName = cookieReader.readCookie("userName"); + + if (userName == null || userName.isEmpty()) { + response.sendRedirect("/login"); + } else { + request.setAttribute("uiColor", uiColor != null ? uiColor : "blue"); + request.setAttribute("userName", userName); + request.setAttribute("sessionAttribute", request.getSession().getAttribute("sampleKey")); + + RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/welcome.jsp"); + dispatcher.forward(request, response); + } + } + + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { + Cookie userNameCookieRemove = new Cookie("userName", ""); + userNameCookieRemove.setMaxAge(0); + response.addCookie(userNameCookieRemove); + + response.sendRedirect("/login"); + } + +} diff --git a/javax-servlets/src/main/webapp/WEB-INF/jsp/login.jsp b/javax-servlets/src/main/webapp/WEB-INF/jsp/login.jsp new file mode 100644 index 0000000000..49babaadad --- /dev/null +++ b/javax-servlets/src/main/webapp/WEB-INF/jsp/login.jsp @@ -0,0 +1,17 @@ +<%@ page contentType="text/html;charset=UTF-8"%> + + + Hello New User: + + +
+ + + + + + + +
+ + diff --git a/javax-servlets/src/main/webapp/WEB-INF/jsp/welcome.jsp b/javax-servlets/src/main/webapp/WEB-INF/jsp/welcome.jsp new file mode 100644 index 0000000000..67cdb8926b --- /dev/null +++ b/javax-servlets/src/main/webapp/WEB-INF/jsp/welcome.jsp @@ -0,0 +1,13 @@ +<%@ page contentType="text/html;charset=UTF-8"%> + + + Hello Known User: + + +
+ + + +
+ +