Skip to content

Commit 807bc97

Browse files
Ranga Rao KaranamRanga Rao Karanam
Ranga Rao Karanam
authored and
Ranga Rao Karanam
committed
90% Video Recording Complete - Adding Source Files
1 parent 651ef8d commit 807bc97

13 files changed

+450
-0
lines changed

pom.xml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
<groupId>com.in28minutes</groupId>
5+
<artifactId>in28Minutes-first-webapp</artifactId>
6+
<version>0.0.1-SNAPSHOT</version>
7+
<packaging>war</packaging>
8+
9+
<dependencies>
10+
<dependency>
11+
<groupId>javax</groupId>
12+
<artifactId>javaee-web-api</artifactId>
13+
<version>6.0</version>
14+
<scope>provided</scope>
15+
</dependency>
16+
<dependency>
17+
<groupId>javax.servlet</groupId>
18+
<artifactId>jstl</artifactId>
19+
<version>1.2</version>
20+
</dependency>
21+
22+
<dependency>
23+
<groupId>org.webjars</groupId>
24+
<artifactId>bootstrap</artifactId>
25+
<version>3.3.6</version>
26+
</dependency>
27+
<dependency>
28+
<groupId>org.webjars</groupId>
29+
<artifactId>jquery</artifactId>
30+
<version>1.9.1</version>
31+
</dependency>
32+
</dependencies>
33+
34+
<build>
35+
<pluginManagement>
36+
<plugins>
37+
<plugin>
38+
<groupId>org.apache.maven.plugins</groupId>
39+
<artifactId>maven-compiler-plugin</artifactId>
40+
<version>3.2</version>
41+
<configuration>
42+
<verbose>true</verbose>
43+
<source>1.7</source>
44+
<target>1.7</target>
45+
<showWarnings>true</showWarnings>
46+
</configuration>
47+
</plugin>
48+
<plugin>
49+
<groupId>org.apache.tomcat.maven</groupId>
50+
<artifactId>tomcat7-maven-plugin</artifactId>
51+
<version>2.2</version>
52+
<configuration>
53+
<path>/</path>
54+
<contextReloadable>true</contextReloadable>
55+
</configuration>
56+
</plugin>
57+
</plugins>
58+
</pluginManagement>
59+
</build>
60+
</project>
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.in28minutes.filter;
2+
3+
import java.io.IOException;
4+
5+
import javax.servlet.Filter;
6+
import javax.servlet.FilterChain;
7+
import javax.servlet.FilterConfig;
8+
import javax.servlet.ServletException;
9+
import javax.servlet.ServletRequest;
10+
import javax.servlet.ServletResponse;
11+
import javax.servlet.annotation.WebFilter;
12+
import javax.servlet.http.HttpServletRequest;
13+
14+
@WebFilter(urlPatterns = "*.do")
15+
public class LoginRequiredFilter implements Filter {
16+
17+
@Override
18+
public void destroy() {
19+
20+
}
21+
22+
@Override
23+
public void doFilter(ServletRequest servletRequest,
24+
ServletResponse servletResponse, FilterChain chain)
25+
throws IOException, ServletException {
26+
HttpServletRequest request = (HttpServletRequest) servletRequest;
27+
28+
if (request.getSession().getAttribute("name") != null) {
29+
chain.doFilter(servletRequest, servletResponse);
30+
} else {
31+
request.getRequestDispatcher("/login.do").forward(servletRequest,
32+
servletResponse);
33+
}
34+
}
35+
36+
@Override
37+
public void init(FilterConfig arg0) throws ServletException {
38+
}
39+
40+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.in28minutes.login;
2+
3+
public class LoginService {
4+
5+
public boolean isUserValid(String user, String password) {
6+
if (user.equals("in28Minutes") && password.equals("dummy"))
7+
return true;
8+
9+
return false;
10+
}
11+
12+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.in28minutes.login;
2+
3+
import java.io.IOException;
4+
5+
import javax.servlet.ServletException;
6+
import javax.servlet.annotation.WebServlet;
7+
import javax.servlet.http.HttpServlet;
8+
import javax.servlet.http.HttpServletRequest;
9+
import javax.servlet.http.HttpServletResponse;
10+
11+
import com.in28minutes.todo.TodoService;
12+
13+
@WebServlet(urlPatterns = "/login.do")
14+
public class LoginServlet extends HttpServlet {
15+
16+
private LoginService userValidationService = new LoginService();
17+
private TodoService todoService = new TodoService();
18+
19+
protected void doGet(HttpServletRequest request,
20+
HttpServletResponse response) throws ServletException, IOException {
21+
request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(
22+
request, response);
23+
}
24+
25+
protected void doPost(HttpServletRequest request,
26+
HttpServletResponse response) throws ServletException, IOException {
27+
String name = request.getParameter("name");
28+
String password = request.getParameter("password");
29+
30+
boolean isUserValid = userValidationService.isUserValid(name, password);
31+
32+
if (isUserValid) {
33+
request.getSession().setAttribute("name", name);
34+
response.sendRedirect("/todo.do");
35+
} else {
36+
request.setAttribute("errorMessage", "Invalid Credentials!");
37+
request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(
38+
request, response);
39+
}
40+
}
41+
42+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.in28minutes.logout;
2+
3+
import java.io.IOException;
4+
5+
import javax.servlet.ServletException;
6+
import javax.servlet.annotation.WebServlet;
7+
import javax.servlet.http.HttpServlet;
8+
import javax.servlet.http.HttpServletRequest;
9+
import javax.servlet.http.HttpServletResponse;
10+
11+
@WebServlet(urlPatterns = "/logout.do")
12+
public class LogoutServlet extends HttpServlet {
13+
protected void doGet(HttpServletRequest request,
14+
HttpServletResponse response) throws ServletException, IOException {
15+
request.getSession().invalidate();
16+
request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(
17+
request, response);
18+
}
19+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.in28minutes.todo;
2+
3+
import java.io.IOException;
4+
5+
import javax.servlet.ServletException;
6+
import javax.servlet.annotation.WebServlet;
7+
import javax.servlet.http.HttpServlet;
8+
import javax.servlet.http.HttpServletRequest;
9+
import javax.servlet.http.HttpServletResponse;
10+
11+
@WebServlet(urlPatterns = "/add-todo.do")
12+
public class AddTodoServlet extends HttpServlet {
13+
14+
private TodoService todoService = new TodoService();
15+
16+
protected void doPost(HttpServletRequest request,
17+
HttpServletResponse response) throws ServletException, IOException {
18+
String newTodo = request.getParameter("todo");
19+
todoService.addTodo(new Todo(newTodo));
20+
response.sendRedirect("/todo.do");
21+
}
22+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.in28minutes.todo;
2+
3+
import java.io.IOException;
4+
5+
import javax.servlet.ServletException;
6+
import javax.servlet.annotation.WebServlet;
7+
import javax.servlet.http.HttpServlet;
8+
import javax.servlet.http.HttpServletRequest;
9+
import javax.servlet.http.HttpServletResponse;
10+
11+
@WebServlet(urlPatterns = "/delete-todo.do")
12+
public class DeleteTodoServlet extends HttpServlet {
13+
14+
private TodoService todoService = new TodoService();
15+
16+
protected void doGet(HttpServletRequest request,
17+
HttpServletResponse response) throws ServletException, IOException {
18+
todoService.deleteTodo(new Todo(request.getParameter("todo")));
19+
response.sendRedirect("/todo.do");
20+
}
21+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.in28minutes.todo;
2+
3+
import java.io.IOException;
4+
5+
import javax.servlet.ServletException;
6+
import javax.servlet.annotation.WebServlet;
7+
import javax.servlet.http.HttpServlet;
8+
import javax.servlet.http.HttpServletRequest;
9+
import javax.servlet.http.HttpServletResponse;
10+
11+
@WebServlet(urlPatterns = "/todo.do")
12+
public class ListTodoServlet extends HttpServlet {
13+
14+
private TodoService todoService = new TodoService();
15+
16+
protected void doGet(HttpServletRequest request,
17+
HttpServletResponse response) throws ServletException, IOException {
18+
request.setAttribute("todos", todoService.retrieveTodos());
19+
request.getRequestDispatcher("/WEB-INF/views/todo.jsp").forward(
20+
request, response);
21+
}
22+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.in28minutes.todo;
2+
3+
public class Todo {
4+
private String name;
5+
6+
public Todo(String name) {
7+
super();
8+
this.name = name;
9+
}
10+
11+
public String getName() {
12+
return name;
13+
}
14+
15+
public void setName(String name) {
16+
this.name = name;
17+
}
18+
19+
@Override
20+
public String toString() {
21+
return String.format("Todo [name=%s]", name);
22+
}
23+
24+
@Override
25+
public int hashCode() {
26+
final int prime = 31;
27+
int result = 1;
28+
result = prime * result + ((name == null) ? 0 : name.hashCode());
29+
return result;
30+
}
31+
32+
@Override
33+
public boolean equals(Object obj) {
34+
if (this == obj)
35+
return true;
36+
if (obj == null)
37+
return false;
38+
if (getClass() != obj.getClass())
39+
return false;
40+
Todo other = (Todo) obj;
41+
if (name == null) {
42+
if (other.name != null)
43+
return false;
44+
} else if (!name.equals(other.name))
45+
return false;
46+
return true;
47+
}
48+
49+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.in28minutes.todo;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
public class TodoService {
7+
private static List<Todo> todos = new ArrayList<Todo>();
8+
static {
9+
todos.add(new Todo("Learn Web Application Development"));
10+
todos.add(new Todo("Learn Spring MVC"));
11+
todos.add(new Todo("Learn Spring Rest Services"));
12+
}
13+
14+
public List<Todo> retrieveTodos() {
15+
return todos;
16+
}
17+
18+
public void addTodo(Todo todo) {
19+
todos.add(todo);
20+
}
21+
22+
public void deleteTodo(Todo todo) {
23+
todos.remove(todo);
24+
}
25+
26+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
2+
<!DOCTYPE html>
3+
<html>
4+
<head>
5+
<title>Todos</title>
6+
<link href="webjars/bootstrap/3.3.6/css/bootstrap.min.css"
7+
rel="stylesheet">
8+
9+
<style>
10+
.footer {
11+
position: absolute;
12+
bottom: 0;
13+
width: 100%;
14+
height: 60px;
15+
background-color: #f5f5f5;
16+
}
17+
</style>
18+
</head>
19+
20+
<body>
21+
22+
<nav class="navbar navbar-default">
23+
24+
<a href="/" class="navbar-brand">Brand</a>
25+
26+
<ul class="nav navbar-nav">
27+
<li class="active"><a href="#">Home</a></li>
28+
<li><a href="/todo.do">Todos</a></li>
29+
<li><a href="http://www.in28minutes.com">In28Minutes</a></li>
30+
</ul>
31+
32+
<ul class="nav navbar-nav navbar-right">
33+
<li><a href="/login.do">Login</a></li>
34+
</ul>
35+
36+
</nav>
37+
38+
<div class="container">
39+
<form action="/login.do" method="post">
40+
<p>
41+
<font color="red">${errorMessage}</font>
42+
</p>
43+
Name: <input type="text" name="name" /> Password:<input
44+
type="password" name="password" /> <input type="submit"
45+
value="Login" />
46+
</form>
47+
48+
</div>
49+
50+
<footer class="footer">
51+
<div>footer content</div>
52+
</footer>
53+
54+
<script src="webjars/jquery/1.9.1/jquery.min.js"></script>
55+
<script src="webjars/bootstrap/3.3.6/js/bootstrap.min.js"></script>
56+
57+
</body>
58+
59+
</html>

0 commit comments

Comments
 (0)