forum
                                
                                 forum copied to clipboard
                                
                                    forum copied to clipboard
                            
                            
                            
                        Internet forum powered by Spring Framework and MySQL [2017]
Forum
Description
Internet forum [in this case about programming language Java] powered by Spring Framework and MySQL. This web application enables inter alia: adding topics and answers, as well as browsing, editing or deleting some of them.
Technologies
- Java:
- Spring Framework:
- Spring MVC:
- application-level on the basis on design pattern: model-view-controller
- using methods "get" and "post" with parameterising URLs which is typical of REST API
 
- Spring Data:
- using JPQL and ready-made methods from JpaRepositoryto creating, reading, updating and deleting data
- implementation of native queries
 
- using JPQL and ready-made methods from 
- Spring Security:
- own login form with authentication of users on the basis of database
- restricting access to some pages for offline users
- protection against cross-site request forgery
- encoding passwords
 
- Spring Boot:
- automatic configuration and launching application
 
 
- Spring MVC:
- JPA & Hibernate:
- specifying relations between entities in database and parameters of columns in tables
 
- Java 8 SE:
- Optionals, LocalDateTime
 
 
- Spring Framework:
- HTML:
- Thymeleaf
- data validation in login form and registration form
- semantic elements from HTML5
 
- CSS:
- Materialize
 
Features
- Possibility joining to the Java Forum and adding personal data to database:  
- Summary of activity on forum expressed in number of topics or answers and hyperlinks to them:  
- Review topics with redirecting to each of them and to each of their authors:  
- Browsing a topic with the possibility of adding/deleting answer, and setting it as useful:  
Software tools
- IntelliJ IDEA 2017.2.4
- Gradle 3.5.1
- XAMPP [MySQL]
Project structure
│   build.gradle
│
└───src:
    ├───main:
    │   ├───java:
    │   │   └───com:
    │   │       └───plkpiotr:
    │   │           └───forum:
    │   │               │   ForumApplication.java
    │   │               │
    │   │               ├───configuration:
    │   │               │       AdditionalLoginConfiguration.java
    │   │               │       SecurityConfiguration.java
    │   │               │
    │   │               ├───controllers:
    │   │               │       AnswersController.java
    │   │               │       IndexController.java
    │   │               │       LoginController.java
    │   │               │       ProfileController.java
    │   │               │       RegisterController.java
    │   │               │       TopicController.java
    │   │               │       TopicsController.java
    │   │               │
    │   │               ├───entities:
    │   │               │       Answer.java
    │   │               │       Topic.java
    │   │               │       User.java
    │   │               │
    │   │               └───repositories:
    │   │                       AnswerRepository.java
    │   │                       TopicRepository.java
    │   │                       UserRepository.java
    │   │
    │   └───resources:
    │       │   application.properties
    │       │
    │       └───templates:
    │           │   answers.html
    │           │   error.html
    │           │   index.html
    │           │   login.html
    │           │   profile.html
    │           │   register.html
    │           │   topic.html
    │           │   topics.html
    │           │
    │           └───layout:
    │                   offline.html
    │                   online.html
    │
    └───test:
        └───java:
            └───com:
                └───plkpiotr:
                    └───forum:
                            ForumApplicationTests.java
Comments
The content of questions and answers on the screenshots comes from Stack Overflow. I was faced with those problems during creating application.
License
MIT