Created
May 2, 2016 11:00
-
-
Save V0L0DYMYR/af4bd9769dfb0630c688e74938302081 to your computer and use it in GitHub Desktop.
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
| package ua.codegym.forum.servlet; | |
| import ua.codegym.forum.model.User; | |
| import javax.servlet.ServletException; | |
| import javax.servlet.http.Cookie; | |
| import javax.servlet.http.HttpServlet; | |
| import javax.servlet.http.HttpServletRequest; | |
| import javax.servlet.http.HttpServletResponse; | |
| import java.io.IOException; | |
| import java.io.PrintWriter; | |
| import java.util.HashMap; | |
| import java.util.Map; | |
| public class LoginServlet extends HttpServlet { | |
| public static Map<String, User> users = new HashMap<>(); | |
| public static String USER_TOKEN = "user_token"; | |
| @Override | |
| protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { | |
| PrintWriter out = resp.getWriter(); | |
| out.print("<html><body><h1> Login</h1>"); | |
| out.print("<form method='POST' action='/login'>"); | |
| out.print("<input id='user' name='user' type='text'><br>"); | |
| out.print("<input id='password' name='password' type='password'><br>"); | |
| out.print("<button type='submit'>Login</button>"); | |
| out.print("</form>"); | |
| out.print("</html></body>"); | |
| } | |
| @Override | |
| protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { | |
| String userName = req.getParameter("user"); | |
| String password = req.getParameter("password"); | |
| User user = new User(userName, password); | |
| String token = System.currentTimeMillis() + "_token"; | |
| users.put(token, user); | |
| resp.addCookie(new Cookie(USER_TOKEN, token)); | |
| } | |
| } |
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
| package ua.codegym.forum.servlet; | |
| import ua.codegym.forum.dao.TopicDao; | |
| import ua.codegym.forum.model.Topic; | |
| import ua.codegym.forum.model.User; | |
| import javax.servlet.ServletException; | |
| import javax.servlet.http.Cookie; | |
| import javax.servlet.http.HttpServlet; | |
| import javax.servlet.http.HttpServletRequest; | |
| import javax.servlet.http.HttpServletResponse; | |
| import java.io.IOException; | |
| import java.io.PrintWriter; | |
| import java.util.List; | |
| public class TopicServlet extends HttpServlet { | |
| private TopicDao topicDao = new TopicDao(); | |
| @Override | |
| protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { | |
| List<Topic> topics = topicDao.loadTopics(); | |
| Cookie[] cookies = req.getCookies(); | |
| User user = null; | |
| user = getUser(cookies, user); | |
| if (user == null) { | |
| resp.setStatus(303); | |
| resp.addHeader("Location", "/login"); | |
| } else { | |
| renderTopicPage(user, resp, topics); | |
| } | |
| } | |
| private User getUser(Cookie[] cookies, User user) { | |
| if (cookies != null) { | |
| for (Cookie cookie : cookies) { | |
| if (LoginServlet.USER_TOKEN.equals(cookie.getName())) { | |
| String userToken = cookie.getValue(); | |
| user = LoginServlet.users.get(userToken); | |
| } | |
| } | |
| } | |
| return user; | |
| } | |
| @Override | |
| protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { | |
| String topicName = req.getParameter("topicName"); | |
| topicDao.insertTopic(topicName); | |
| List<Topic> topics = topicDao.loadTopics(); | |
| renderTopicPage(null, resp, topics); | |
| } | |
| private void renderTopicPage(User user, HttpServletResponse resp, List<Topic> topics) throws IOException { | |
| PrintWriter out = resp.getWriter(); | |
| out.print("<html><body><h1>Topics</h1>"); | |
| String userName = user == null ? "" : user.getName(); | |
| out.print("<h6>Hello" + userName + "</h6>"); | |
| out.print("<ul>"); | |
| for (Topic topic : topics) { | |
| out.print("<li>"); | |
| out.print("<a href='/topics/"+ topic.getId() +"'>" + topic.getName() + "</a>"); | |
| out.print("</li>"); | |
| } | |
| out.print("<form method='POST' action='/topics'>"); | |
| out.print("<input id='topicName' name='topicName' type='text'>"); | |
| out.print("</form>"); | |
| out.print("</ul></body></html>"); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment