RegistrationServlet.java

package com.popx.presentazione;

import com.popx.modello.UserBean;
import com.popx.servizio.AuthenticationService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/register")
public class RegistrationServlet extends HttpServlet {

    private final AuthenticationService authService;

    // Costruttore usato in produzione
    public RegistrationServlet() {
        this.authService = new AuthenticationService();
    }

    // Costruttore usato nei test (dependency injection)
    public RegistrationServlet(AuthenticationService authService) {
        this.authService = authService;
    }

    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("application/json");
        response.setCharacterEncoding("UTF-8");

        String username = request.getParameter("username");
        String email = request.getParameter("email");
        String password = request.getParameter("password");

        try {
            if (authService.isEmailRegistered(email)) {
                response.getWriter().write(
                        "{\"status\":\"error\",\"message\":\"Email giĆ  registrata.\"}"
                );
                return;
            }

            UserBean user = new UserBean();
            user.setUsername(username);
            user.setEmail(email);
            user.setPassword(password);
            user.setRole("User");

            boolean registered = authService.registerUser(user);

            if (registered) {
                response.getWriter().write(
                        "{\"status\":\"success\",\"message\":\"Registrazione avvenuta con successo.\","
                                + "\"redirect\":\"" + request.getContextPath() + "/jsp/HomePage.jsp\"}"
                );
            } else {
                response.getWriter().write(
                        "{\"status\":\"error\",\"message\":\"Errore sconosciuto durante la registrazione.\"}"
                );
            }

        } catch (Exception e) {
            response.getWriter().write(
                    "{\"status\":\"error\",\"message\":\"" + e.getMessage() + "\"}"
            );
        }
    }
}