Skip to main content
Dat 2. semester
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Forbered login-system

I denne uge skal vi arbejde med, hvordan en webapplikation modtager en request, behandler den og sender en response tilbage.

Vi skal bygge et lille login-system med Java, HTML og Javalin. Inden da skal du forberede de Java-klasser og HTML-sider, som vi skal bruge.

Du skal ikke få login-systemet til at virke endnu. Det gør vi sammen senere på ugen.

1. Opret pakkerne

Opret et nyt projekt i IntelliJ.

Vælg:

  • Java (selvfølgelig..)
  • Build system: Maven (ikke IntelliJ)
  • JDK 17 eller nyere

Giv projektet et passende navn.

Når projektet er oprettet, har IntelliJ blandt andet oprettet:

src
└── main
    └── java
    └── resources

test
└── java      

Bemærk at main og java ikke er pakker, som I kender dem, men standardmapper som Maven opretter. Maven betragter java som vores root for kildekode.

Du skulle også gerne have en pom.xml-fil, men den skal du ikke gøre noget med endnu.

I src/main/java skal du oprette følgende pakker:

controllers
entities
factories
services

Du skal senere kunne se denne struktur:

src/main/java
├── controllers
│   └── UserController.java
├── entities
│   └── User.java
├── factories
│   └── UserFactory.java
└── services
    └── UserService.java

I src/main/resources skal du oprette mappen:

templates

Her skal du senere have:

src/main/resources
└── templates
    ├── login.html
    └── welcome.html

2. Lav klassen User

Opret User i pakken entities.

En User skal have:

  • username
  • password

Lav:

  • attributter
  • constructor
  • getters
  • setters

Du skal kunne oprette en bruger sådan:

User user = new User("user1", "password1");

3. Lav UserFactory

Opret UserFactory i pakken factories.

Lav en metode, som opretter og returnerer en liste med 10 brugere.

Du vælger selv brugernavne og passwords.

Metoden skal kunne bruges sådan:

List<User> users = UserFactory.createUsers();

4. Lav UserService

Opret UserService i pakken services.

UserService skal holde en liste af brugere. Listen skal ved oprettelsen af UserService fyldes med brugere fra UserFactory.

Den skal som minimum have følgende metoder:

public void addUser(User user)

public User getUser(String username)

public User login(String username, String password)

public User createUser(String username, String password)

public boolean validatePassword(String password)

addUser

Tilføjer en bruger til listen.

getUser

Finder en bruger ud fra username.

Hvis brugeren findes, returneres brugeren.

Hvis brugeren ikke findes, returneres null.

login

Finder brugeren med det angivne username og kontrollerer password.

Hvis username og password passer, returneres brugeren.

Hvis login ikke lykkes, returneres null.

createUser

Opretter en ny bruger.

Username og password skal være udfyldt, og username må ikke allerede være brugt.

Hvis brugeren kan oprettes, returneres den nye bruger.

Hvis brugeren ikke kan oprettes, returneres null.

validatePassword

Validerer gyldighed af en ny brugers password.

Metoden skal som minimum undersøge om et password indeholder mellem 8 og 15 karakterer. Hvis du vil lege med regex kan du også undersøge om det indeholder mindst ét stort bogstav, et tal og et specialtegn.

5. Test dine klasser

Du må gerne bruge en main-metode til at undersøge, om dine klasser virker.

Prøv for eksempel at:

  • oprette en User
  • hente listen fra UserFactory
  • finde en bruger med getUser
  • logge ind med korrekt username og password
  • forsøge at logge ind med forkert password
  • oprette en ny bruger
  • forsøge at oprette en bruger med et username, der allerede findes

Du skal ikke lave unit tests endnu. Dem kommer vi tilbage til senere.

6. Lav UserController

Opret en tom UserController i pakken controllers.

Vi skal bruge den senere, når vi kobler Java-klasserne sammen med Javalin.

7. Lav login.html

Opret login.html i:

src/main/resources/templates

Siden skal indeholde en loginformular med:

  • username
  • password
  • en knap til at logge ind

Formularen skal være forberedt til at sende en POST request til:

/login

Du skal ikke få den til at virke endnu.

8. Lav welcome.html

Opret welcome.html i:

src/main/resources/templates

Lav en simpel velkomstside, som kan bruges efter et succesfuldt login.

Den kan for eksempel indeholde:

<h1>Velkommen!</h1>
<p>Du er nu logget ind.</p>

Senere skal vi gøre siden dynamisk, så den kan vise information om den bruger, der er logget ind.

Når du er færdig

Du skal have:

src/main
├── java
│   ├── controllers
│   │   └── UserController.java
│   ├── entities
│   │   └── User.java
│   ├── factories
│   │   └── UserFactory.java
│   └── services
│       └── UserService.java
└── resources
    └── templates
        ├── login.html
        └── welcome.html

Du skal kunne teste dine Java-klasser med en main.

Du skal ikke koble Java, HTML og Javalin sammen endnu. Det gør vi sammen i løbet af ugen.