Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit f835263

Browse files
Added Servlet folder in the MVCPractice section of a small course on Java EE
1 parent 7dc75eb commit f835263

File tree

3 files changed

+156
-0
lines changed

3 files changed

+156
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package AirportSimulator.Servlet;
2+
3+
import AirportSimulator.Service.FlightService;
4+
import jakarta.servlet.ServletException;
5+
import jakarta.servlet.annotation.WebServlet;
6+
import jakarta.servlet.http.HttpServlet;
7+
import jakarta.servlet.http.HttpServletRequest;
8+
import jakarta.servlet.http.HttpServletResponse;
9+
10+
import java.io.IOException;
11+
import java.io.PrintWriter;
12+
import java.nio.charset.StandardCharsets;
13+
14+
@WebServlet("/flights")
15+
public class FlightServlet extends HttpServlet {
16+
private final FlightService flightService = FlightService.getInstance();
17+
@Override
18+
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
19+
throws ServletException, IOException {
20+
resp.setContentType("text/html");
21+
resp.setCharacterEncoding(StandardCharsets.UTF_8.name());
22+
23+
try(PrintWriter respPrintWriter = resp.getWriter()){
24+
respPrintWriter.write("<h1>Список перелетов :</h1>");
25+
respPrintWriter.write("<ul>");
26+
flightService.findAll().forEach(flightDto -> {
27+
respPrintWriter.write("""
28+
<li>
29+
<a href="tickets-by-id?flightId=%d">%s</a>
30+
</li>
31+
""".formatted(flightDto.getId(), flightDto.getDescription()));
32+
});
33+
respPrintWriter.write("</ul>");
34+
}
35+
}
36+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package AirportSimulator.Servlet;
2+
3+
import AirportSimulator.Service.TicketService;
4+
import jakarta.servlet.ServletException;
5+
import jakarta.servlet.annotation.WebServlet;
6+
import jakarta.servlet.http.HttpServlet;
7+
import jakarta.servlet.http.HttpServletRequest;
8+
import jakarta.servlet.http.HttpServletResponse;
9+
10+
import java.io.IOException;
11+
import java.io.PrintWriter;
12+
import java.nio.charset.StandardCharsets;
13+
14+
@WebServlet("/tickets-by-id")
15+
public class TicketServlet extends HttpServlet {
16+
private final TicketService ticketService = TicketService.getInstance();
17+
18+
@Override
19+
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
20+
throws ServletException, IOException {
21+
resp.setContentType("text/html");
22+
resp.setCharacterEncoding(StandardCharsets.UTF_8.name());
23+
24+
Long flightId = Long.valueOf(req.getParameter("flightId"));
25+
26+
try(PrintWriter writerToScreen = resp.getWriter()){
27+
writerToScreen.write("<h1>Купленные билеты :</h1>");
28+
writerToScreen.write("<ul>");
29+
ticketService.findAllByFlightId(flightId).forEach(ticketDto -> writerToScreen.write("""
30+
<li>
31+
%s - %s - %s
32+
</li>
33+
""".formatted(ticketDto.getId(),ticketDto.getFlight_id(),ticketDto.getSeat_no())
34+
));
35+
writerToScreen.write("</ul>");
36+
}
37+
}
38+
}
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
package AirportSimulator.Servlet.UserRegForm;
2+
3+
/* http://localhost:8080/registration
4+
5+
Логика нашего приложения была описана в первой части,
6+
см. DOC/MVC_Chart_with_comment.jpeg, три глобальных
7+
уровня связанных логически, и четыре технологических
8+
уровня (общающиеся между собой реализуя принципы MVC):
9+
- HTML/JSP - страницы (View) общается с сервлетами;
10+
- Servlets - страницы (Controller) общается с уровнем сервисов;
11+
- Services - java классы (Model) приемо-передатчики между уровнем
12+
DAO и Servlet, а фактически между Model и Controller;
13+
- DAO - java классы (Model)позволяющие максимально просто
14+
пользователю общаться с базой данных (реализуют CRUD принципы);
15+
16+
Для работы с пользователями создадим в базе данных
17+
таблицу пользователей: см. create_users_table.sql
18+
19+
*/
20+
21+
import AirportSimulator.DTO.CreateUserDto;
22+
import AirportSimulator.Entity.EntityEnum.Gender;
23+
import AirportSimulator.Entity.EntityEnum.Role;
24+
import AirportSimulator.Exception.ValidationException;
25+
import AirportSimulator.Service.UserService;
26+
import PartThree.UtilHelper.JspPathHelper;
27+
import jakarta.servlet.ServletException;
28+
import jakarta.servlet.annotation.WebServlet;
29+
import jakarta.servlet.http.HttpServlet;
30+
import jakarta.servlet.http.HttpServletRequest;
31+
import jakarta.servlet.http.HttpServletResponse;
32+
33+
import java.io.IOException;
34+
35+
@WebServlet("/registration")
36+
public class UserRegForm extends HttpServlet {
37+
38+
private UserService userService = UserService.getInstance();
39+
/*
40+
На doGet возвращаем *.jsp страничку на которой мы
41+
введем данные нашего пользователя и передадим эти
42+
сведения в базу данных через POST запрос
43+
*/
44+
@Override
45+
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws
46+
ServletException, IOException {
47+
req.setAttribute("roles", Role.values()); // Role.values() подобен List.of("USER","ADMIN")
48+
req.setAttribute("genders", Gender.values()); // Gender.values() подобен List.of("MALE","FEMALE")
49+
50+
req.getRequestDispatcher(JspPathHelper.getJspPath("jstl_reg_form")).forward(req,resp);
51+
}
52+
/* На doPost возвращаем запрос */
53+
@Override
54+
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws
55+
ServletException, IOException {
56+
/*
57+
Извлекаем все необходимые параметры из нашей
58+
формы регистрации (уровень view), чтобы передать
59+
на уровень сервисов (уровень controller)
60+
*/
61+
CreateUserDto userDto = CreateUserDto.builder().
62+
name(req.getParameter("name")).
63+
birthday(req.getParameter("birthday")).
64+
email(req.getParameter("email")).
65+
password(req.getParameter("password")).
66+
role(req.getParameter("role")).
67+
gender(req.getParameter("gender")).
68+
build();
69+
70+
try {
71+
/*
72+
Создаем пользователя на уровне Service и
73+
перенаправляем запрос на сервлет login
74+
*/
75+
userService.create(userDto);
76+
resp.sendRedirect("/login");
77+
} catch (ValidationException exception) {
78+
req.setAttribute("errors", exception.getApp_errors());
79+
doGet(req, resp);
80+
}
81+
}
82+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /