Проверьте, есть ли cookie на клиентском компьютере, в противном случае вы что-то делаете и выходите - PullRequest
1 голос
/ 02 апреля 2019

Текст упражнения таков: «Напишите веб-приложение, которое создает страницу электронного опроса для выбора одного из пяти кандидатов в мэры. Приложение должно включать настройку файла cookie для регистрации голосования на машине клиентов, которые уже выразили свое предпочтение. Если машина, с которой клиент подключается НЕ содержит куки регистрации регистрации, пользователь допущен на страницу голосования, в противном случае пользователь должен быть автоматически перенаправлен на страницу статистики, которая отображает процент голосов, полученных пятью кандидатами. "

Как я могу проверить, существует ли cookie на клиентском компьютере? Я пытался так, но правильно из HTML-файла, который я делаю первым голосом, введите if и так, он останавливается, но это не хорошо, потому что это будет первый голос, а НЕ второй. ПОМОГИТЕ !!

public class SerElection extends HttpServlet{
  int cGhezzi=0, cPelliccia=0, cValente=0, cBussi=0, cFerri=0;

  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException{
    String candid = request.getParameter("candidato");
    Cookie cookie = new Cookie(candid,candid);
    response.addCookie(cookie);
    String c = cookie.getName();
    if(c.equals("Ghezzi") || c.equals("Pelliccia") || c.equals("Valente") || c.equals("Bussi") || c.equals("Ferri")){
      response.setContentType("text/html");
      PrintWriter out = response.getWriter();
      out.println("<html>");
      out.println("<head>");
      out.println("<title></title>");
      out.println("</head>");
      out.println("<body>");
      out.println("<h3>I'm sorry but you've already voted</h3>");
      out.println("</body>");
      out.println("</html>");
      out.close();
    }
else{
      //ACCORDING TO THE CHOICE OF CHOICE INCREMENT ITS VARIABLE FOR STATISTICS
      if(candid.equals("Ghezzi")) cGhezzi++;
      if(candid.equals("Pelliccia")) cPelliccia++;
      if(candid.equals("Valente")) cValente++;
      if(candid.equals("Bussi")) cBussi++;
      if(candid.equals("Ferri")) cFerri++;
      //response.sendRedirect("/Elezioni/index.html");
  } //END ELSE
.
.
.

1 Ответ

0 голосов
/ 03 апреля 2019

Я бы предложил использовать ссылку и получить файл cookie с

Cookie[] cookies = request.getCookies();

, поскольку

response.addCookie(cookie);

используется для установки файла cookie, а затем проверьте, если нет null,так что вы знаете, голосовал ли избиратель или нет.Если not null и getName установлены как votedName, вы можете перенаправить пользователя.

Но знайте, что куки могут быть изменены или очищены в большинстве случаев всеми браузерами, или могут возникнуть проблемы, когда браузер не поддерживает куки.

Это грубый ответ, поэтому не стесняйтесь редактировать

Cookie[] cookies = request.getCookies();
Boolean notVoted = true; //flag to see if user voted
if (cookies != null) { //check if cookie exist
    for (Cookie cookie : cookies) {
        String c = cookie.getName();
        if(c.equals("Ghezzi") || c.equals("Pelliccia") || c.equals("Valente") || c.equals("Bussi") || c.equals("Ferri")){
          response.setContentType("text/html");
          notVoted = false; //if user voted and cookie verifies then set flag
          PrintWriter out = response.getWriter();
          out.println("<html>");
          out.println("<head>");
          out.println("<title></title>");
          out.println("</head>");
          out.println("<body>");
          out.println("<h3>I'm sorry but you've already voted</h3>");
          out.println("</body>");
          out.println("</html>");
          out.close();
        }
    }
}
else if(notVoted){ //in case no cookies and user has not voted
    // do the voting stuff here
    String candid = request.getParameter("candidato");// set the cookie after user voted
    Cookie cookie = new Cookie(candid,candid);
    response.addCookie(cookie);
}

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...