Created
          February 28, 2012 11:46 
        
      - 
      
 - 
        
Save igm/1932085 to your computer and use it in GitHub Desktop.  
    JSP page
  
        
  
    
      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
    
  
  
    
  | <%@page import="ie.cit.cloudapp.Todo"%> | |
| <%@ page language="java" contentType="text/html; charset=ISO-8859-1" | |
| pageEncoding="ISO-8859-1"%> | |
| <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> | |
| <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | |
| <jsp:useBean id="repo" class="ie.cit.cloudapp.TodoRepository" | |
| scope="session"></jsp:useBean> | |
| <html> | |
| <head> | |
| <link rel="stylesheet" href="styles/style.css"> | |
| <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> | |
| <title>TODO application</title> | |
| </head> | |
| <body> | |
| <h1>TODO application</h1> | |
| <h2>List of current TODO items</h2> | |
| <c:if test="${ param._method.equals(\"put\") }"> | |
| <% | |
| String idStr = request.getParameter("todoId"); | |
| int index = Integer.parseInt(idStr); | |
| Todo t = repo.getTodos().get(index - 1); | |
| t.setDone(!t.isDone()); | |
| %> | |
| </c:if> | |
| <c:if test="${ param._method.equals(\"delete\") }"> | |
| <% | |
| String idStr = request.getParameter("todoId"); | |
| int index = Integer.parseInt(idStr); | |
| repo.getTodos().remove(index - 1); | |
| %> | |
| </c:if> | |
| <c:if test="${! empty param.text }"> | |
| <% | |
| Todo todo = new Todo(); | |
| todo.setText(request.getParameter("text")); | |
| repo.addTodo(todo); | |
| %> | |
| </c:if> | |
| <c:forEach items="${repo.todos}" var="todo" varStatus="row"> | |
| <c:choose> | |
| <c:when test="${todo.done}"> | |
| <del>${todo.text}</del> | |
| </c:when> | |
| <c:otherwise> | |
| ${todo.text} | |
| </c:otherwise> | |
| </c:choose> | |
| <form method="post"> | |
| <input name="_method" type="hidden" value="put"> | |
| <input name="todoId" type="hidden" value="${row.count}"> | |
| <input type="submit" value="Update"> | |
| </form> | |
| <form method="post"> | |
| <input name="_method" type="hidden" value="delete"> | |
| <input name="todoId" type="hidden" value="${row.count}"> | |
| <input type="submit" value="Delete"> | |
| </form> | |
| <br /> | |
| </c:forEach> | |
| <h2>Create new TODO</h2> | |
| <form method="post"> | |
| Text: <input name="text"><input type="submit"> | |
| </form> | |
| </body> | |
| </html> | 
  
    
      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 ie.cit.cloudapp; | |
| import java.io.IOException; | |
| import javax.servlet.RequestDispatcher; | |
| import javax.servlet.ServletException; | |
| import javax.servlet.http.HttpServlet; | |
| import javax.servlet.http.HttpServletRequest; | |
| import javax.servlet.http.HttpServletRequestWrapper; | |
| import javax.servlet.http.HttpServletResponse; | |
| import javax.servlet.http.HttpSession; | |
| public class TodoServlet extends HttpServlet { | |
| @Override | |
| protected void doGet(HttpServletRequest req, HttpServletResponse resp) | |
| throws ServletException, IOException { | |
| TodoRepository repo = getRepo(req); | |
| req.setAttribute("todos", repo.getTodos()); | |
| doForward(req, resp); | |
| } | |
| @Override | |
| protected void doPost(HttpServletRequest req, HttpServletResponse resp) | |
| throws ServletException, IOException { | |
| String method = req.getParameter("_method"); | |
| if (method != null && method.equals("put")) | |
| doPut(req, resp); | |
| else if (method != null && method.equals("delete")) | |
| doDelete(req, resp); | |
| else { | |
| TodoRepository repo = getRepo(req); | |
| Todo todo = new Todo(); | |
| todo.setText(req.getParameter("text")); | |
| repo.addTodo(todo); | |
| req.setAttribute("todos", repo.getTodos()); | |
| doForward(req, resp); | |
| } | |
| } | |
| @Override | |
| protected void doPut(HttpServletRequest req, HttpServletResponse resp) | |
| throws ServletException, IOException { | |
| Integer index = Integer.valueOf(req.getParameter("todoId")); | |
| TodoRepository repo = getRepo(req); | |
| Todo todo = repo.getTodos().get(index - 1); | |
| todo.setDone(!todo.isDone()); | |
| req.setAttribute("todos", repo.getTodos()); | |
| doForward(req, resp); | |
| } | |
| @Override | |
| protected void doDelete(HttpServletRequest req, HttpServletResponse resp) | |
| throws ServletException, IOException { | |
| Integer index = Integer.valueOf(req.getParameter("todoId")); | |
| TodoRepository repo = getRepo(req); | |
| repo.getTodos().remove(index - 1); | |
| req.setAttribute("todos", repo.getTodos()); | |
| doForward(req, resp); | |
| } | |
| private TodoRepository getRepo(HttpServletRequest req) { | |
| HttpSession session = req.getSession(true); | |
| TodoRepository repo = (TodoRepository) session.getAttribute("repo"); | |
| if (repo == null) { | |
| repo = new TodoRepository(); | |
| session.setAttribute("repo", repo); | |
| } | |
| return repo; | |
| } | |
| private void doForward(HttpServletRequest req, HttpServletResponse resp) | |
| throws ServletException, IOException { | |
| RequestDispatcher rd = getServletContext().getRequestDispatcher( | |
| "/todo_list.jsp"); | |
| rd.forward(req, resp); | |
| } | |
| } | 
  
    
      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 ie.cit.cloudapp; | |
| import java.io.IOException; | |
| import javax.servlet.RequestDispatcher; | |
| import javax.servlet.ServletException; | |
| import javax.servlet.http.HttpServlet; | |
| import javax.servlet.http.HttpServletRequest; | |
| import javax.servlet.http.HttpServletRequestWrapper; | |
| import javax.servlet.http.HttpServletResponse; | |
| import javax.servlet.http.HttpSession; | |
| public class TodoServlet extends HttpServlet { | |
| @Override | |
| protected void service(HttpServletRequest req, HttpServletResponse resp) | |
| throws ServletException, IOException { | |
| if (req.getParameter("_method") != null) | |
| req = new HttpServletRequestWrapper(req) { | |
| @Override | |
| public String getMethod() { | |
| return getParameter("_method").toUpperCase(); | |
| } | |
| }; | |
| super.service(req, resp); | |
| } | |
| @Override | |
| protected void doGet(HttpServletRequest req, HttpServletResponse resp) | |
| throws ServletException, IOException { | |
| TodoRepository repo = getRepo(req); | |
| req.setAttribute("todos", repo.getTodos()); | |
| doForward(req, resp); | |
| } | |
| @Override | |
| protected void doPost(HttpServletRequest req, HttpServletResponse resp) | |
| throws ServletException, IOException { | |
| TodoRepository repo = getRepo(req); | |
| Todo todo = new Todo(); | |
| todo.setText(req.getParameter("text")); | |
| repo.addTodo(todo); | |
| req.setAttribute("todos", repo.getTodos()); | |
| doForward(req, resp); | |
| } | |
| @Override | |
| protected void doPut(HttpServletRequest req, HttpServletResponse resp) | |
| throws ServletException, IOException { | |
| Integer index = Integer.valueOf(req.getParameter("todoId")); | |
| TodoRepository repo = getRepo(req); | |
| Todo todo = repo.getTodos().get(index - 1); | |
| todo.setDone(!todo.isDone()); | |
| req.setAttribute("todos", repo.getTodos()); | |
| doForward(req, resp); | |
| } | |
| @Override | |
| protected void doDelete(HttpServletRequest req, HttpServletResponse resp) | |
| throws ServletException, IOException { | |
| Integer index = Integer.valueOf(req.getParameter("todoId")); | |
| TodoRepository repo = getRepo(req); | |
| repo.getTodos().remove(index - 1); | |
| req.setAttribute("todos", repo.getTodos()); | |
| doForward(req, resp); | |
| } | |
| private TodoRepository getRepo(HttpServletRequest req) { | |
| HttpSession session = req.getSession(true); | |
| TodoRepository repo = (TodoRepository) session.getAttribute("repo"); | |
| if (repo == null) { | |
| repo = new TodoRepository(); | |
| session.setAttribute("repo", repo); | |
| } | |
| return repo; | |
| } | |
| private void doForward(HttpServletRequest req, HttpServletResponse resp) | |
| throws ServletException, IOException { | |
| RequestDispatcher rd = getServletContext().getRequestDispatcher( | |
| "/todo_list.jsp"); | |
| rd.forward(req, resp); | |
| } | |
| } | 
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment