- Interface : HTML/CSS/JS/Bootstrap/jQuery.
- JavaEE: Servlets, JSP, JSTL.
- Hibernate
- JSON
- Apache Commons : email, validator.
- Database: MySql.
- Libraries: RestFacebook, Lombok.
- Maven, Logback.
- Displaying of all products in the shop, button(more products) via AJAX loading
- Button return to the top
- Category panel with a quantity indicator
- Searching products by: name, using categories or producers from the filters tab (via SQL)
- Tab - More filters, contains categories and producers with a quantity indicator
- Button for registering in the shop by Facebook
- The shopping cart tab with indicators of a quantity of products and total cost.
- When you click a buy button, will be an open popup with an indicator of the number of products and their total cost, the maximum number of products is 10 pieces.
- An unregistered user can't create an order, but he can add products to the shopping cart or delete.
- If the user successfully login to the shop, he will be forwarded to a page(my orders) with a table of his orders, and short information in the navigation panel.
- If the user has selected the required number of products, he can create an order, after which he will receive a notification about the successful order.
- After successful creating order, the server will send the email to the administrator's email address, with the information about the user like ( name, email, orders short description)
- Also, the Buyer will also receive an email with information about the order and thanks for the purchase.
- The Admin Board page is shop management page, where can only be accessed by Admin email.
- If you access the site as a non-Admin email, the user will be redirected to a page with an error (access denied)
- If the user login into the shop from the administrator's email address, the Admin Board button appears in the navbar menu
- The admin panel has 3 tabs (Dashboard, Messages, Add product)
- The dashboard has 3 indicators, the number of products in the store, the number of registered users, and the approximate revenue of the shop.
- Also in the dashboard is a table with all the products, with a description of each and a button to delete the product. When you click delete, the product is deleted, and a notification appears the product which was successfully deleted.
- You can sort by product attribute or set the number of displayed products in the table also you can search by name (via JS).
- The Messages page has a large table with all orders in the shop and a description of each
- On the Add product page has a form for adding a new product to the shop, after filling all the values, will be displayed a message about the successful addition of a product to the shop.
- When you click Log out, the session with the user ends and the user becomes a guest.
application.production=true
social.facebook.idClient=328479825126601
social.facebook.secret=2580fb7fd745a451b05e43bacc074753
app.host=https://localhost:8443
email.notificationEmail=XXXXX@gmail.com
email.sendTryCount=2
email.smtp.server=smtp.gmail.com
email.smtp.port=465
email.fromEmail=XXXXX@gmail.com
email.smtp.username=XXXXX@gmail.com
email.smtp.password=XXXXX
public class Constants {
public static final String CURRENT_SHOPPING_CART = "CURRENT_SHOPPING_CART";
public static final int MAX_PRODUCTS_PER_SHOPPING_CART = 20;
public static final String ACCOUNT_ACTIONS_HISTORY = "ACCOUNT_ACTIONS_HISTORY";
public static final int MAX_PRODUCTS_PER_HTML_PAGE = 12;
public static final String CATEGORY_LIST = "CATEGORY_LIST";
public static final String PRODUCER_LIST = "PRODUCER_LIST";
public static final String CURRENT_ACCOUNT = "CURRENT_ACCOUNT";
}
<property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/MyShop?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=UTC&useSSL=false</property>
<property name="connection.username">XXXXX</property>
<property name="connection.password">XXXXX</property>
<property name="hibernate.connection.characterEncoding">utf8</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.current_session_context_class">thread</property>




