This project is a simplified internet shop.
This internet shop performs these basic functions:
- Registration, log in forms and logout
- Shopping cart and order services
- Two roles: User and Admin
This project has authentication and authorization filters, DAO and Service layers, Servlets and JSP pages.
DAO layer has two implementations: inner storage based on List and outer storage based on MySQL DB.
- Java 11
- Maven
- MavenCheckstylePlugin 3.1.1
- javax.servlet 3.1.0
- javax.jstl 1.2
- mysql-connector-java 8.0.20
- log4j 1.2.17
To run this project you need to install:
Add this project to your IDE as Maven project.
Add Java SDK 11 in project structure.
Configure Tomcat:
- Add war
- Add Java SDK 11
Change a path to your Log file in src/main/resources/log4j.properties on line 12.
To work with MySQL you need to:
- Use file src/main/resources/init_db.sql to create schema and all the tables required by this app in MySQL DB
- Change username and password to match with MySQL in src/main/java/mate/academy/internet/shop/util/ConnectionUtil.java class on 19 and 20 lines
To work with inner Storage you need to:
- Need to remove annotation @Dao from classes :
- src/main/java/mate/academy/internet/shop/dao/jdbc/OrderDaoJdbcImpl.java
- src/main/java/mate/academy/internet/shop/dao/jdbc/ProductDaoJdbcImpl.java
- src/main/java/mate/academy/internet/shop/dao/jdbc/ShoppingCartDaoJdbcImpl.java
- src/main/java/mate/academy/internet/shop/dao/jdbc/UserDaoJdbcImpl.java
- Need to add annotation @Dao to classes :
- src/main/java/mate/academy/internet/shop/dao/impl/OrderDaoImpl.java
- src/main/java/mate/academy/internet/shop/dao/impl/ProductDaoImpl.java
- src/main/java/mate/academy/internet/shop/dao/impl/ShoppingCartDaoImpl.java
- src/main/java/mate/academy/internet/shop/dao/impl/UserDaoImpl.java
The class src/main/java/mate/academy/internet/shop/lib/Injector.java checks all classes in all packages and checks the annotation over the class name and selects the desired classes that implements the interfaces
Run the project:
Main page is at URL: .../{context_path}
For MySQL DAO only on first run of the project, for inner Storage on every launch, to create default users open URL: .../{context_path}/injectData
By default there are two users with an USER role (name = "Bob", login = "bob", password = "1"),
(name = "Alisa", login = "alisa", password = "1")
one with an ADMIN role (login = "admin", password = "3"),