Skip to content

Instantly share code, notes, and snippets.

@V0L0DYMYR
Created May 2, 2016 11:00
Show Gist options
  • Select an option

  • Save V0L0DYMYR/af4bd9769dfb0630c688e74938302081 to your computer and use it in GitHub Desktop.

Select an option

Save V0L0DYMYR/af4bd9769dfb0630c688e74938302081 to your computer and use it in GitHub Desktop.
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));
}
}
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