Bootstrap Sample Page ``` <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> Todos

Heading

Body of the Page
``` pom.xml ``` 4.0.0 com.in28minutes in28Minutes-first-webapp 0.0.1-SNAPSHOT war javax javaee-web-api 6.0 provided javax.servlet jstl 1.2 org.webjars bootstrap 3.3.6 org.webjars jquery 1.9.1 org.apache.maven.plugins maven-compiler-plugin 3.2 true 1.7 1.7 true org.apache.tomcat.maven tomcat7-maven-plugin 2.2 / true ``` src\main\java\in28minutes\login\LoginService.java ``` package in28minutes.login; public class LoginService { public boolean validateUser(String user, String password) { return user.equalsIgnoreCase("in28Minutes") && password.equals("dummy"); } } ``` src\main\java\in28minutes\login\LoginServlet.java ``` package in28minutes.login; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(urlPatterns = "/login.do") public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; private LoginService service = new LoginService(); @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String name = request.getParameter("name"); String password = request.getParameter("password"); boolean isValidUser = service.validateUser(name, password); if (isValidUser) { request.getSession().setAttribute("name", name); response.sendRedirect("/todo.do"); } else { request.setAttribute("errorMessage", "Invalid Credentials!!"); request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(request, response); } } } ``` src\main\java\in28minutes\todo\DeleteTodoServlet.java ``` package in28minutes.todo; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(urlPatterns = "/delete-todo.do") public class DeleteTodoServlet extends HttpServlet { private static final long serialVersionUID = 1L; private TodoService todoService = new TodoService(); @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { todoService.deleteTodo(request.getParameter("todo")); response.sendRedirect("/todo.do"); } } ``` src\main\java\in28minutes\todo\ListTodoServlet.java ``` package in28minutes.todo; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(urlPatterns = "/todo.do") public class ListTodoServlet extends HttpServlet { private static final long serialVersionUID = 1L; private TodoService todoService = new TodoService(); @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { request.setAttribute("todos", todoService.retrieveTodos()); request.getRequestDispatcher("/WEB-INF/views/todo.jsp").forward(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String todo = request.getParameter("todo"); if ("".equals(todo)) { request.setAttribute("errorMessage", "Enter a valid Todo"); } else { todoService.addTodo(todo); } request.setAttribute("todos", todoService.retrieveTodos()); request.getRequestDispatcher("/WEB-INF/views/todo.jsp").forward(request, response); } } ``` src\main\java\in28minutes\todo\Todo.java ``` package in28minutes.todo; public class Todo { public Todo(String name) { super(); this.name = name; } private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Todo [name=" + name + "]"; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Todo other = (Todo) obj; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } } ``` src\main\java\in28minutes\todo\TodoService.java ``` package in28minutes.todo; import java.util.ArrayList; import java.util.List; public class TodoService { private static List todos = new ArrayList(); static { todos.add(new Todo("Learn Web Application")); todos.add(new Todo("Learn Spring")); todos.add(new Todo("Learn Spring MVC")); } public List retrieveTodos() { return todos; } public void addTodo(String todo) { todos.add(new Todo(todo)); } public void deleteTodo(String todo) { todos.remove(new Todo(todo)); } } ``` src\main\webapp\WEB-INF\views\login.jsp ``` Yahoo!!

${errorMessage}

Name : Password :
``` src\main\webapp\WEB-INF\views\todo.jsp ``` <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> Yahoo!!

Welcome ${name}

Your Todos are
  1. ${todo.name} Delete

${errorMessage}

New Todo :

footer content

``` src\main\webapp\WEB-INF\web.xml ``` To do List login.do ```