Skip to content

Commit d9dbd8e

Browse files
committed
lesson3
1 parent bf563af commit d9dbd8e

24 files changed

Lines changed: 594 additions & 160 deletions

gb-java-ee/first-web-app/first-web-app.iml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,12 @@
2121
</content>
2222
<orderEntry type="inheritedJdk" />
2323
<orderEntry type="sourceFolder" forTests="false" />
24+
<orderEntry type="library" scope="RUNTIME" name="Maven: mysql:mysql-connector-java:8.0.16" level="project" />
25+
<orderEntry type="library" scope="RUNTIME" name="Maven: com.google.protobuf:protobuf-java:3.6.1" level="project" />
26+
<orderEntry type="library" scope="PROVIDED" name="Maven: javax.servlet:javax.servlet-api:4.0.1" level="project" />
27+
<orderEntry type="library" scope="PROVIDED" name="Maven: jstl:jstl:1.2" level="project" />
28+
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.11" level="project" />
29+
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
30+
<orderEntry type="library" scope="PROVIDED" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
2431
</component>
2532
</module>

gb-java-ee/first-web-app/pom.xml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,29 @@
1515

1616
<properties>
1717
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
18-
<maven.compiler.release>1.8</maven.compiler.release>
18+
<maven.compiler.source>1.8</maven.compiler.source>
19+
<maven.compiler.target>1.8</maven.compiler.target>
1920
</properties>
2021

2122
<dependencies>
23+
<dependency>
24+
<groupId>mysql</groupId>
25+
<artifactId>mysql-connector-java</artifactId>
26+
<version>8.0.16</version>
27+
<scope>runtime</scope>
28+
</dependency>
2229
<dependency>
2330
<groupId>javax.servlet</groupId>
2431
<artifactId>javax.servlet-api</artifactId>
2532
<version>4.0.1</version>
2633
<scope>provided</scope>
2734
</dependency>
35+
<dependency>
36+
<groupId>jstl</groupId>
37+
<artifactId>jstl</artifactId>
38+
<version>1.2</version>
39+
<scope>provided</scope>
40+
</dependency>
2841
<dependency>
2942
<groupId>junit</groupId>
3043
<artifactId>junit</artifactId>
@@ -35,6 +48,7 @@
3548
<groupId>org.slf4j</groupId>
3649
<artifactId>slf4j-api</artifactId>
3750
<version>1.7.30</version>
51+
<scope>provided</scope>
3852
</dependency>
3953
</dependencies>
4054

gb-java-ee/first-web-app/src/main/java/ru/geekbrains/MainPageServlet.java renamed to gb-java-ee/first-web-app/src/main/java/ru/geekbrains/AboutPageServlet.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,20 @@
33
import org.slf4j.Logger;
44
import org.slf4j.LoggerFactory;
55

6-
import javax.servlet.*;
6+
import javax.servlet.ServletException;
77
import javax.servlet.annotation.WebServlet;
88
import javax.servlet.http.HttpServlet;
99
import javax.servlet.http.HttpServletRequest;
1010
import javax.servlet.http.HttpServletResponse;
1111
import java.io.IOException;
1212

13-
14-
@WebServlet(name = "MainPageServlet", urlPatterns = "/main")
15-
public class MainPageServlet extends HttpServlet {
16-
17-
private static Logger logger = LoggerFactory.getLogger(MainPageServlet.class);
13+
@WebServlet(name = "AboutPageServlet", urlPatterns = "/about")
14+
public class AboutPageServlet extends HttpServlet {
15+
private static Logger logger = LoggerFactory.getLogger(AboutPageServlet.class);
1816

1917
@Override
2018
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
21-
logger.info("Main page");
22-
resp.getWriter().println("<h1>Главная страница</h1>");
19+
logger.info("About page");
20+
getServletContext().getRequestDispatcher("/WEB-INF/about.jsp").forward(req, resp);
2321
}
24-
2522
}

gb-java-ee/first-web-app/src/main/java/ru/geekbrains/CartPageServlet.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public class CartPageServlet extends HttpServlet {
1919
@Override
2020
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
2121
logger.info("Cart page");
22-
resp.getWriter().println("<h1>Корзина</h1>");
22+
getServletContext().getRequestDispatcher("/WEB-INF/cart.jsp").forward(req, resp);
2323
}
2424

2525
}

gb-java-ee/first-web-app/src/main/java/ru/geekbrains/CatalogPageServlet.java

Lines changed: 0 additions & 25 deletions
This file was deleted.

gb-java-ee/first-web-app/src/main/java/ru/geekbrains/FirstServlet.java

Lines changed: 0 additions & 33 deletions
This file was deleted.

gb-java-ee/first-web-app/src/main/java/ru/geekbrains/MenuServlet.java

Lines changed: 0 additions & 28 deletions
This file was deleted.

gb-java-ee/first-web-app/src/main/java/ru/geekbrains/OrderPageServlet.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import javax.servlet.http.HttpServletRequest;
1010
import javax.servlet.http.HttpServletResponse;
1111
import java.io.IOException;
12+
import java.sql.SQLException;
1213

1314

1415
@WebServlet(name = "OrderPageServlet", urlPatterns = "/order")
@@ -19,7 +20,7 @@ public class OrderPageServlet extends HttpServlet {
1920
@Override
2021
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
2122
logger.info("Order page");
22-
resp.getWriter().println("<h1>Заказ</h1>");
23+
getServletContext().getRequestDispatcher("/WEB-INF/order.jsp").forward(req, resp);
2324
}
2425

2526
}
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
package ru.geekbrains;
2+
3+
import org.slf4j.Logger;
4+
import org.slf4j.LoggerFactory;
5+
import ru.geekbrains.persist.Product;
6+
import ru.geekbrains.persist.ProductRepository;
7+
8+
import javax.servlet.ServletException;
9+
import javax.servlet.annotation.WebServlet;
10+
import javax.servlet.http.HttpServlet;
11+
import javax.servlet.http.HttpServletRequest;
12+
import javax.servlet.http.HttpServletResponse;
13+
import java.io.IOException;
14+
import java.math.BigDecimal;
15+
import java.sql.SQLException;
16+
import java.util.Optional;
17+
18+
@WebServlet(name = "ProductControllerServlet", urlPatterns = {"", "/"})
19+
public class ProductControllerServlet extends HttpServlet {
20+
21+
private static final Logger logger = LoggerFactory.getLogger(ProductControllerServlet.class);
22+
23+
private ProductRepository productRepository;
24+
25+
@Override
26+
public void init() throws ServletException {
27+
productRepository = (ProductRepository) getServletContext().getAttribute("productRepository");
28+
if (productRepository == null) {
29+
throw new ServletException("Product repository not initialized");
30+
}
31+
}
32+
33+
@Override
34+
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
35+
logger.info("Index product page");
36+
37+
switch (req.getServletPath()) {
38+
case "/":
39+
try {
40+
req.setAttribute("products", productRepository.findAll());
41+
getServletContext().getRequestDispatcher("/WEB-INF/index.jsp").forward(req, resp);
42+
} catch (SQLException ex) {
43+
throw new IllegalStateException(ex);
44+
}
45+
break;
46+
case "/new":
47+
req.setAttribute("product", new Product());
48+
getServletContext().getRequestDispatcher("/WEB-INF/product.jsp").forward(req, resp);
49+
break;
50+
case "/edit":
51+
String id = req.getParameter("id");
52+
try {
53+
Optional<Product> opt = productRepository.findById(Long.parseLong(id));
54+
if (opt.isPresent()) {
55+
req.setAttribute("product", opt.get());
56+
} else {
57+
resp.sendError(HttpServletResponse.SC_NOT_FOUND);
58+
return;
59+
}
60+
} catch (SQLException ex) {
61+
throw new IllegalStateException(ex);
62+
}
63+
getServletContext().getRequestDispatcher("/WEB-INF/product.jsp").forward(req, resp);
64+
break;
65+
default:
66+
resp.sendError(HttpServletResponse.SC_NOT_FOUND);
67+
break;
68+
}
69+
}
70+
71+
@Override
72+
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
73+
if (req.getServletPath().equals("/upsert")) {
74+
try {
75+
String strId = req.getParameter("id");
76+
if (strId.isEmpty()) {
77+
productRepository.insert(new Product(-1L,
78+
req.getParameter("name"),
79+
req.getParameter("description"),
80+
BigDecimal.valueOf(Long.parseLong(req.getParameter("price")))));
81+
} else {
82+
productRepository.update(new Product(Long.parseLong(strId),
83+
req.getParameter("name"),
84+
req.getParameter("description"),
85+
BigDecimal.valueOf(Long.parseLong(req.getParameter("price")))));
86+
}
87+
resp.sendRedirect(getServletContext().getContextPath());
88+
} catch (SQLException ex) {
89+
throw new IllegalStateException(ex);
90+
}
91+
} else {
92+
resp.sendError(HttpServletResponse.SC_NOT_FOUND);
93+
}
94+
}
95+
}

gb-java-ee/first-web-app/src/main/java/ru/geekbrains/ProductPageServlet.java

Lines changed: 0 additions & 25 deletions
This file was deleted.

0 commit comments

Comments
 (0)