Skip to content

Commit 01ddda5

Browse files
Shell26Shell26
authored andcommitted
Add Second Servlet Filter
1 parent ae5bea9 commit 01ddda5

12 files changed

Lines changed: 75 additions & 83 deletions

File tree

src/main/java/servlet/DeleteServlet.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,22 @@
1111
import javax.servlet.http.HttpSession;
1212
import java.io.IOException;
1313

14-
@WebServlet("/delete")
14+
@WebServlet("/admin/delete")
1515
public class DeleteServlet extends HttpServlet {
1616

1717
@Override
1818
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
19-
final HttpSession session = req.getSession();
19+
final HttpSession session = req.getSession(false);
2020
final String login = (String) session.getAttribute("login");
2121
final String password = (String) session.getAttribute("password");
2222

2323
if (UserService.getInstance().isAdmin(login, password)) {
2424
Long id = Long.parseLong(req.getParameter("id"));
2525
UserService.getInstance().deleteUser(id);
26-
resp.sendRedirect(req.getContextPath() + "/");
26+
resp.sendRedirect(req.getContextPath() + "/admin/main");
2727
}else{
28-
req.getRequestDispatcher("/WEB-INF/view/index.jsp").forward(req, resp);
28+
// req.getRequestDispatcher("/WEB-INF/view/index.jsp").forward(req, resp);
29+
resp.sendRedirect(req.getContextPath() + "/");
2930
}
3031
}
3132
}

src/main/java/servlet/LogoutServlet.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public class LogoutServlet extends HttpServlet {
1414
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
1515
throws ServletException, IOException {
1616

17-
final HttpSession session = req.getSession();
17+
final HttpSession session = req.getSession(false);
1818

1919
session.removeAttribute("password");
2020
session.removeAttribute("login");

src/main/java/servlet/MainServlet.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@
1212
import javax.servlet.http.HttpSession;
1313
import java.io.IOException;
1414

15-
@WebServlet("/main")
15+
@WebServlet("/admin/main")
1616
public class MainServlet extends HttpServlet {
1717

1818
@Override
1919
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
20-
final HttpSession session = req.getSession();
20+
final HttpSession session = req.getSession(false);
2121
final String login = (String) session.getAttribute("login");
2222
final String password = (String) session.getAttribute("password");
2323

@@ -45,8 +45,6 @@ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws S
4545

4646
UserService.getInstance().addUser(user);
4747

48-
// System.out.println(UserService.getInstance().isAdmin(name, secondName));
49-
5048
doGet(req, resp);
5149
}
5250
}

src/main/java/servlet/UpdateServlet.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,20 @@
1111
import javax.servlet.http.HttpSession;
1212
import java.io.IOException;
1313

14-
@WebServlet("/update")
14+
@WebServlet("/admin/update")
1515
public class UpdateServlet extends HttpServlet {
1616

1717
@Override
1818
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
19-
final HttpSession session = req.getSession();
19+
final HttpSession session = req.getSession(false);
2020
final String login = (String) session.getAttribute("login");
2121
final String password = (String) session.getAttribute("password");
2222

2323
if (UserService.getInstance().isAdmin(login, password)) {
2424
Long id = Long.parseLong(req.getParameter("id"));
2525
User user = UserService.getInstance().getUserById(id);
2626
req.setAttribute("user", user);
27-
req.getRequestDispatcher("WEB-INF/view/update.jsp").forward(req, resp);
27+
req.getRequestDispatcher("/WEB-INF/view/update.jsp").forward(req, resp);
2828
}else{
2929
req.getRequestDispatcher("/WEB-INF/view/index.jsp").forward(req, resp);
3030
}
@@ -39,6 +39,6 @@ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws S
3939

4040
UserService.getInstance().updateUser(id, newAge, newName, newpassword);
4141

42-
resp.sendRedirect(req.getContextPath() + "/");
42+
resp.sendRedirect(req.getContextPath() + "/admin/main");
4343
}
4444
}
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
11
package servlet;
22

3+
import service.UserService;
4+
35
import javax.servlet.ServletException;
46
import javax.servlet.annotation.WebServlet;
57
import javax.servlet.http.HttpServlet;
68
import javax.servlet.http.HttpServletRequest;
79
import javax.servlet.http.HttpServletResponse;
10+
import javax.servlet.http.HttpSession;
811
import java.io.IOException;
912

1013
@WebServlet("/user")
1114
public class UserServlet extends HttpServlet {
1215
@Override
1316
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
14-
req.getRequestDispatcher("/WEB-INF/view/user.jsp").forward(req, resp);
17+
req.getRequestDispatcher("/WEB-INF/view/user.jsp").forward(req, resp);
18+
1519
}
1620
}

src/main/java/servlet/filter/IndexFilter.java

Lines changed: 38 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313

1414
import static java.util.Objects.nonNull;
1515

16-
//@WebFilter("/")
17-
@WebFilter(servletNames = "IndexServlet")
16+
@WebFilter("/admin")
17+
//@WebFilter(servletNames = "IndexServlet")
1818
public class IndexFilter implements Filter {
1919

2020
@Override
@@ -23,29 +23,52 @@ public void init(FilterConfig filterConfig) throws ServletException {
2323

2424
@Override
2525
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
26-
System.out.printf("Filter working");
27-
2826
final HttpServletRequest req = (HttpServletRequest) request;
2927
final HttpServletResponse res = (HttpServletResponse) response;
3028

31-
final String login = req.getParameter("authLogin");
32-
final String password = req.getParameter("authPass");
29+
final HttpSession session = req.getSession(false);
30+
31+
if(session.getAttribute("login") == null ||
32+
session.getAttribute("password") == null){
33+
final String login = req.getParameter("authLogin"); //читаю из формы
34+
final String password = req.getParameter("authPass");
35+
session.setAttribute("password", password);
36+
session.setAttribute("login", login);
37+
}
3338

34-
final HttpSession session = req.getSession();
39+
final String login = (String) session.getAttribute("login");
40+
final String password = (String) session.getAttribute("password");
3541

36-
if (login == null || password == null) { //первое посещение
37-
filterChain.doFilter(request, response);
38-
} else if (UserService.getInstance().userIsExist(login, password)) { // не заходил, существует
39-
req.getSession().setAttribute("password", password);
40-
req.getSession().setAttribute("login", login);
42+
if (UserService.getInstance().userIsExist(login, password)){
4143
if (UserService.getInstance().isAdmin(login, password)) {
42-
res.sendRedirect("main");
43-
} else {
44-
res.sendRedirect("user");
44+
res.sendRedirect(req.getContextPath() + "/admin/main");
45+
}else{
46+
res.sendRedirect(req.getContextPath() + "/user");
4547
}
48+
}else{
49+
res.sendRedirect(req.getContextPath() + "/");
4650
}
51+
52+
53+
// if (login == null || password == null) { //первое посещение
54+
// filterChain.doFilter(request, response);
55+
// } else if (UserService.getInstance().userIsExist(login, password)) { // не заходил, существует
56+
// req.getSession().setAttribute("password", password);
57+
// req.getSession().setAttribute("login", login);
58+
// if (UserService.getInstance().isAdmin(login, password)) {
59+
// бегает по кругу фильтр-сервлет
60+
// res.sendRedirect(req.getContextPath() + "/admin/main");
61+
// request.getServletContext().getRequestDispatcher("/admin/main").forward(request, response);
62+
63+
// request.getRequestDispatcher("/admin/main").forward(request, response);
64+
// } else {
65+
// res.sendRedirect(req.getContextPath() + "/user");
66+
// request.getServletContext().getRequestDispatcher("/user").forward(request, response);
67+
// }
68+
// }
4769
}
4870

71+
4972
@Override
5073
public void destroy() {
5174
}

src/main/java/servlet/filter/LoginFilter.java

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package servlet.filter;
22

3+
import model.User;
34
import service.UserService;
45

56
import javax.servlet.*;
@@ -20,31 +21,27 @@ public void init(FilterConfig filterConfig) throws ServletException {
2021
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
2122
final HttpServletRequest req = (HttpServletRequest) request;
2223
final HttpServletResponse resp = (HttpServletResponse) response;
23-
final HttpSession session = req.getSession();
24+
final HttpSession session = req.getSession(false);
2425

25-
final String login1 = (String) session.getAttribute("login");
26-
final String password1 = (String) session.getAttribute("password");
27-
28-
if(login1 == null && password1 == null){
29-
final String login = req.getParameter("authLogin");
30-
final String password = req.getParameter("authPass");
31-
req.getSession().setAttribute("password", password);
32-
req.getSession().setAttribute("login", login);
33-
}else if(!UserService.getInstance().userIsExist(login1, password1)){
26+
if(session != null){
27+
//читаю из формы
3428
final String login = req.getParameter("authLogin");
3529
final String password = req.getParameter("authPass");
36-
req.getSession().setAttribute("password", password);
37-
req.getSession().setAttribute("login", login);
30+
if (session.getAttribute("login") == null || session.getAttribute("password") ==null){
31+
//записываю в сессию
32+
session.setAttribute("password", password);
33+
session.setAttribute("login", login);
34+
}
3835
}
3936

40-
final String login2 = (String) session.getAttribute("login");
41-
final String password2 = (String) session.getAttribute("password");
42-
43-
if (UserService.getInstance().userIsExist(login2, password2)){
44-
filterChain.doFilter(request, response);
37+
if(session == null || session.getAttribute("login") == null || session.getAttribute("password") ==null) {
38+
request.getServletContext().getRequestDispatcher("/").forward(request, response);
39+
//кидает опять на этот же фильтр
40+
// resp.sendRedirect(req.getContextPath() + "/");
4541
}else{
46-
req.getRequestDispatcher("/WEB-INF/view/index.jsp").forward(req, resp);
42+
filterChain.doFilter(request, response);
4743
}
44+
4845
}
4946

5047
@Override
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
DB_TYPE = hibernate
1+
DB_TYPE = jdbc

src/main/webapp/WEB-INF/view/index.jsp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
</head>
77
<body>
88
<h1>Вход в систему</h1><br>
9-
<form method="post" action="">
9+
<form method="post" action="/test1_war/admin">
1010
<input type="text" required placeholder="login" name="authLogin"><br>
1111
<input type="password" required placeholder="password" name="authPass"><br><br>
1212
<input class="button" type="submit" value="Войти">

src/main/webapp/WEB-INF/view/main.jsp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@
1212
<li> Пароль: <c:out value="${user.password}"/></li>
1313
<li> Возраст: <c:out value="${user.age}"/></li>
1414
<li> Права: <c:out value="${user.role}"/></li>
15-
<form method="post" action="<c:url value="/delete"/>">
15+
<form method="post" action="<c:url value="/admin/delete"/>">
1616
<input type="number" hidden name="id" value="${user.id}"/>
1717
<input type="submit" name="delete" value="Удалить"/>
1818
</form>
19-
<form method="get" action="<c:url value="/update"/>">
19+
<form method="get" action="<c:url value="/admin/update"/>">
2020
<input type="number" hidden name="id" value="${user.id}"/>
2121
<input type="submit" name="update" value="Редактировать"/>
2222
</form>

0 commit comments

Comments
 (0)