[html4strict] Itnetwork_kurz
Viewer
*** This page was generated with the meta tag "noindex, nofollow". This happened because you selected this option before saving or the system detected it as spam. This means that this page will never get into the search engines and the search bot will not crawl it. There is nothing to worry about, you can still share it with anyone.
- # Itnetwork_kurz
- -----------
- ## Zadani: Evidence pojištění - Plná verze
- Když zvládneš vytvořit aplikaci podle tohoto zadání, výrazně si zvýšíš svoji úspěšnost na pohovorech a hledání zaměstnání ti pak zabere jen zlomek času.
- Naprogramuj webovou aplikaci pro evidenci pojistných událostí.
- Minimální požadavky ke splnění
- Aplikace obsahuje kompletní správu (CRUD) pojištěných (např. "Jan Novák") a jejich pojištění (např. "pojištění bytu"):
- - Vytvoření pojištěného
- - Vytvoření pojištění
- - Zobrazení detailu pojištěného včetně jeho pojištění
- - Zobrazení detailu pojištění
- - Zobrazení seznamu pojištěných
- - Odstranění pojištěného včetně všech jeho pojištění
- - Odstranění pojištění
- - Editace pojištěného
- - Editace pojištění pojištěného
- Dané entity jsou uloženy v SQL databázi
- Aplikace je naprogramována podle dobrých praktik a je plně responzivní
- ## Doporučené rozšíření:
- Aplikace podporuje uživatelské role (pojištěný, administrátor), navrhni a implementuj, kdo vidí a může editovat jaká data
- Aplikace eviduje pojistné události pojištěných, rovněž pomocí kompletní správy (CRUD)
- ## Expertní rozšíření:
- Aplikace podporuje rozlišení pojistníků (těch, kdo platí pojištění) a pojištěných (těch, na koho se pojištění vztahuje). Místo zavedení 2 databázových tabulek se zamysli nad řešením přes výčtový typ (enum).
- Aplikace generuje statistiky ve formě reportů
- -------------
- -------------
- # Výstup -> insurance-app
- -------------
- -------------
- Webová aplikace pro evidenci pojistných událostí. Tento projekt je implementován pomocí Spring Boot a poskytuje kompletní správu pojištěnců a jejich pojištění.
- ## Funkcionalita
- - Vytvoření pojištěnce
- - Vytvoření pojištění
- - Zobrazení detailu pojištěnce včetně jeho pojištění
- - Zobrazení detailu pojištění
- - Zobrazení seznamu pojištěnců
- - Odstranění pojištěnce včetně všech jeho pojištění
- - Odstranění pojištění
- - Editace pojištěnce
- - Editace pojištění pojištěnce
- ## Technologie
- - Java
- - Spring Boot
- - Thymeleaf
- - JPA/Hibernate
- - MySQL
- ## Struktura projektu
- ### Hlavní třída aplikace
- - [InsuranceAppApplication.java](https://github.com/bedjan/itnetwork_kurz/blob/main/insurance-app/src/main/java/com/example/insurance/InsuranceAppApplication.java)
- ```
- package com.example.insurance;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- @SpringBootApplication
- public class InsuranceAppApplication {
- public static void main(String\[\] args) {
- SpringApplication.run(InsuranceAppApplication.class, args);
- }
- }
- ```
- ### Kontroler
- - [PoistenciController.java](https://github.com/bedjan/itnetwork_kurz/blob/main/insurance-app/src/main/java/com/example/insurance/PoistenciController.java)
- ```
- package com.example.insurance;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.web.bind.annotation.\*;
- import java.util.List;
- @Controller
- public class PoistenciController {
- @Autowired
- private PoistenecRepository repository;
- @GetMapping("/poistenci")
- public String listPoistenci(Model model) {
- List<Poistenec> poistenci = repository.findAll();
- model.addAttribute("poistenci", poistenci);
- return "poistenci";
- }
- @GetMapping("/poistenci/new")
- public String showNewPoistenecForm(Model model) {
- model.addAttribute("poistenec", new Poistenec());
- return "new_poistenec";
- }
- @PostMapping("/poistenci")
- public String savePoistenec(@ModelAttribute("poistenec") Poistenec poistenec) {
- repository.save(poistenec);
- return "redirect:/poistenci";
- }
- @GetMapping("/poistenci/edit/{id}")
- public String showEditPoistenecForm(@PathVariable Long id, Model model) {
- Poistenec poistenec = repository.findById(id).orElseThrow(() -> new IllegalArgumentException("Invalid poistenec Id:" + id));
- model.addAttribute("poistenec", poistenec);
- return "edit_poistenec";
- }
- @PostMapping("/poistenci/{id}")
- public String updatePoistenec(@PathVariable Long id, @ModelAttribute("poistenec") Poistenec poistenec) {
- Poistenec existingPoistenec = repository.findById(id).orElseThrow(() -> new IllegalArgumentException("Invalid poistenec Id:" + id));
- existingPoistenec.setJmeno(poistenec.getJmeno());
- existingPoistenec.setPrijmeni(poistenec.getPrijmeni());
- repository.save(existingPoistenec);
- return "redirect:/poistenci";
- }
- @GetMapping("/poistenci/delete/{id}")
- public String deletePoistenec(@PathVariable Long id) {
- Poistenec poistenec = repository.findById(id).orElseThrow(() -> new IllegalArgumentException("Invalid poistenec Id:" + id));
- repository.delete(poistenec);
- return "redirect:/poistenci";
- }
- }
- ```
- ### Model
- - [Poistenec.java](https://github.com/bedjan/itnetwork_kurz/blob/main/insurance-app/src/main/java/com/example/insurance/Poistenec.java)
- ```
- package com.example.insurance;
- import javax.persistence.Entity;
- import javax.persistence.GeneratedValue;
- import javax.persistence.GenerationType;
- import javax.persistence.Id;
- @Entity
- public class Poistenec {
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- private Long id;
- private String jmeno;
- private String prijmeni;
- // Konstruktory, gettery a settery
- public Poistenec() {}
- public Poistenec(String jmeno, String prijmeni) {
- this.jmeno = jmeno;
- this.prijmeni = prijmeni;
- }
- public Long getId() {
- return id;
- }
- public void setId(Long id) {
- this.id = id;
- }
- public String getJmeno() {
- return jmeno;
- }
- public void setJmeno(String jmeno) {
- this.jmeno = jmeno;
- }
- public String getPrijmeni() {
- return prijmeni;
- }
- public void setPrijmeni(String prijmeni) {
- this.prijmeni = prijmeni;
- }
- }
- ```
- ### Repository
- - [PoistenecRepository.java](https://github.com/bedjan/itnetwork_kurz/blob/main/insurance-app/src/main/java/com/example/insurance/PoistenecRepository.java)
- ```
- package com.example.insurance;
- import org.springframework.data.jpa.repository.JpaRepository;
- public interface PoistenecRepository extends JpaRepository<Poistenec, Long> {
- }
- ```
- ### Thymeleaf šablony
- #### Seznam pojištěnců
- - [poistenci.html](https://github.com/bedjan/itnetwork_kurz/blob/main/insurance-app/src/main/resources/templates/poistenci.html)
- ```
- <!DOCTYPE html>
- <html xmlns:th="<http://www.thymeleaf.org>">
- <head>
- <title>Seznam Pojištěnců</title>
- </head>
- <body>
- <h1>Seznam Pojištěnců</h1>
- <a th:href="@{/poistenci/new}">Přidat Pojištěnce</a>
- <table>
- <thead>
- <tr>
- <th>Jméno</th>
- <th>Příjmení</th>
- <th>Akce</th>
- </tr>
- </thead>
- <tbody>
- <tr th:each="poistenec : ${poistenci}">
- <td th:text="${poistenec.jmeno}"></td>
- <td th:text="${poistenec.prijmeni}"></td>
- <td>
- <a th:href="@{/poistenci/edit/{id}(id=${poistenec.id})}">Upravit</a>
- <a th:href="@{/poistenci/delete/{id}(id=${poistenec.id})}">Smazat</a>
- </td>
- </tr>
- </tbody>
- </table>
- </body>
- </html>
- ```
- #### Přidání pojištěnce
- - [new_poistenec.html](https://github.com/bedjan/itnetwork_kurz/blob/main/insurance-app/src/main/resources/templates/new_poistenec.html)
- ```
- <!DOCTYPE html>
- <html xmlns:th="<http://www.thymeleaf.org>">
- <head>
- <title>Přidat Pojištěnce</title>
- </head>
- <body>
- <h1>Přidat Pojištěnce</h1>
- <form th:action="@{/poistenci}" th:object="${poistenec}" method="post">
- <label for="jmeno">Jméno:</label>
- <input type="text" id="jmeno" th:field="\*{jmeno}">
- <label for="prijmeni">Příjmení:</label>
- <input type="text" id="prijmeni" th:field="\*{prijmeni}">
- <button type="submit">Uložit</button>
- </form>
- </body>
- </html>
- ```
- #### Úprava pojištěnce
- - [edit_poistenec.html](https://github.com/bedjan/itnetwork_kurz/blob/main/insurance-app/src/main/resources/templates/edit_poistenec.html)
- ```
- <!DOCTYPE html>
- <html xmlns:th="<http://www.thymeleaf.org>">
- <head>
- <title>Upravit Pojištěnce</title>
- </head>
- <body>
- <h1>Upravit Pojištěnce</h1>
- <form th:action="@{/poistenci/{id}(id=${poistenec.id})}" th:object="${poistenec}" method="post">
- <label for="jmeno">Jméno:</label>
- <input type="text" id="jmeno" th:field="\*{jmeno}">
- <label for="prijmeni">Příjmení:</label>
- <input type="text" id="prijmeni" th:field="\*{prijmeni}">
- <button type="submit">Uložit</button>
- </form>
- </body>
- </html>
- ```
- ### Konfigurace
- - [application.properties](https://github.com/bedjan/itnetwork_kurz/blob/main/insurance-app/src/main/resources/application.properties)
- ```
- spring.datasource.url=jdbc:mysql://localhost:3306/insurance_db
- spring.datasource.username=insurance_user
- spring.datasource.password=password
- spring.jpa.hibernate.ddl-auto=update
- spring.jpa.show-sql=true
- spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
- ```
- ### Testovací třída
- - [AppTest.java](https://github.com/bedjan/itnetwork_kurz/blob/main/insurance-app/src/test/java/com/example/insurance/AppTest.java)
- ```
- package com.example.insurance;
- import org.junit.jupiter.api.Test;
- import static org.junit.jupiter.api.Assertions.assertTrue;
- public class AppTest {
- @Test
- public void testApp() {
- assertTrue(true);
- }
- }
- ```
- ### Pom.xml
- - [pom.xml](https://github.com/bedjan/itnetwork_kurz/blob/main/insurance-app/pom.xml)
- ```
- <project xmlns="<http://maven.apache.org/POM/4.0.0>"
- xmlns:xsi="<http://www.w3.org/2001/XMLSchema-instance>"
- xsi:schemaLocation="<http://maven.apache.org/POM/4.0.0> <http://www.apache.org/xsd/maven-4.0.0.xsd">>
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.example</groupId>
- <artifactId>insurance-app</artifactId>
- <version>1.0-SNAPSHOT</version>
- <packaging>jar</packaging>
- <name>insurance-app</name>
- <description>Insurance Management Application</description>
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>2.5.6</version>
- <relativePath/> <!-- lookup parent from repository -->
- </parent>
- <properties>
- <java.version>11</java.version>
- </properties>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-jpa</artifactId>
- </dependency>
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-thymeleaf</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <version>2.5.6</version>
- <executions>
- <execution>
- <goals>
- <goal>repackage</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
- </project>
- ```
- -------------
- # Navod pro [MX Linux 23 - Libretto](https://mxlinux.org/blog/mx-23-libretto-now-available/)
- -----------
- ## Update repozitaru Debian
- ```sudo apt update```
- ## Instalace OpenJdk Javy
- ```sudo apt install openjdk```
- ## Overeni java verze
- ```java -version```
- ## Instalace Mavenu
- ```sudo apt install maven```
- ## Instalace Webserveru Apache
- ```sudo apt install apache2```
- ## Start apache
- ```sudo service apache2 start```
- ## Update startu Apache
- ```update-rc.d apache2 defaults```
- ## pracovni adresar apache je v
- ```ls /var/www/html/```
- ## Instalace PHP a modulu
- ```sudo apt install libapache2-mod-php7.0```
- ```a2enmod php7.0```
- ## PHP informace
- ```php -i```
- ## Instalace Mysql, resp. Mariadb heslo itnetwork
- ```sudo apt install mariadb-server```
- ```sudo service mysql start```
- ```sudo update-rc.d mysql defaults```
- ```sudo service mysql restart```
- ```sudo service mysql stop```
- ```sudo mysql_secure_installation```
- ## Pro zmenu hesla do mysql
- #mysqladmin -u root password
- ## Prihlaseni do mysql
- #mysql -u root -p
- #exit
- ## Instalace Git
- ```sudo apt install git```
- ## Instalace npm
- ```sudo apt install nodejs npm```
- # Vytvoření nového Spring Boot projektu
- ```sudo mvn archetype:generate -DgroupId=com.example.insurance -DartifactId=insurance-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false```
- ## Presunuti do slozky insurance-app
- ```cd insurance-app```
- ## Nastavení MySQL databáze: Vytvořte databázi a uživatele:
- ```sudo sql```
- ```
- CREATE DATABASE insurance_db;
- CREATE USER 'insurance_user'@'localhost' IDENTIFIED BY 'password';
- GRANT ALL PRIVILEGES ON insurance_db.* TO 'insurance_user'@'localhost';
- FLUSH PRIVILEGES;
- ```
- # Spuštění aplikace
- ## Spuštění Spring Boot aplikace:
- #mvn clean install
- ```mvn spring-boot:run```
- ## Otevřete webový prohlížeč a přejděte na:
- ```firefox http://localhost:8080/poistenci```
Editor
You can edit this paste and save as new: