Число сервлетов Java, вошедших в систему - PullRequest
0 голосов
/ 09 мая 2019

Я застрял с заданием в моем курсе веб-инжиниринга.Мы изучаем сервлеты и используем Gradle.

Одна часть задания заключалась в создании формы для входа.Когда вы входите в систему с именем пользователя, он должен создать сеанс.Пока все хорошо.

Следующая часть задания заключалась в подсчете пользователей, вошедших в систему потокобезопасным способом.Поэтому я создал класс Counter, который реализует интерфейс HttpSessionListener и увеличивает количество активных сеансов при создании сеанса.

То, что я ожидаю, произойдет, когда я войду в систему с user1, он должен сказать activeSessions = 1 и когдаЯ захожу с user2, он должен сказать activeSessions = 2. Это не так.

Так что я думаю, что моя концепция сеансов неверна.

Как узнать количество пользователей, которые вошли в системуin?

Редактировать: В назначении написано: Создать класс Counter, который реализует интерфейс HttpSessionListener, который должен подсчитывать количество зарегистрированных пользователей / пользователей с активным сеансом.

Login.java

import java.io.IOException;
import java.util.concurrent.atomic.AtomicInteger;

import javax.servlet.RequestDispatcher;
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 javax.servlet.http.HttpSession;

/**
 * Servlet implementation class Navigation
 */
@WebServlet(urlPatterns ={ "/Login" })
public class Login extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public Login() {
        super();
    }



    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


    }


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String username = request.getParameter("username");
        int length = username.length();

        int sessions;


        if(length >= 3) {
            response.getWriter().append("Willkommen: " + username);

            HttpSession session = request.getSession();
            session.setAttribute("username", username);
            sessions = Counter.getActiveSessions();

            response.getWriter().append("\n \n");
            response.getWriter().append("Session String: " + session.toString());

            response.getWriter().append("\n \n");
            response.getWriter().append("Session Attribut: " + session.getAttributeNames());

            response.getWriter().append("\n \n");
            response.getWriter().append("Username Zeichenanzahl: " + username.length());
            response.getWriter().append("\n \n");
            response.getWriter().append("Sessionanzahl: " + sessions);

            //RequestDispatcher rd = request.getRequestDispatcher("protected/index.html");
            //rd.forward(request, response);

        } else {
            response.sendError(401, "Zu kurzer Username, du Otto!");
        }
    }
}

Counter.java

import java.util.concurrent.atomic.AtomicInteger;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import java.util.concurrent.atomic.AtomicInteger;

public class Counter implements HttpSessionListener {


    private static final AtomicInteger activeSessions = new AtomicInteger(0);

    @Override
    public void sessionCreated(HttpSessionEvent se) {
        activeSessions.incrementAndGet();
    }


    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        activeSessions.decrementAndGet();
    }


    public static int getActiveSessions() {
        return activeSessions.get();
    }   


}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
  <display-name>&quot;HelloServlet&quot;</display-name>
  <listener>
    <listener-class>Counter</listener-class>
  </listener>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...