WedX - журнал о программировании и компьютерных науках

когда я нажимаю ссылку выхода один раз, она не возвращается, но когда я дважды нажимаю ссылку выхода, она возвращается назад или на предыдущую страницу

Я делаю код для выхода из системы, используя jsp в netbens8. Моя база данных находится в mysql. Я пытаюсь сделать код для гиперссылки выхода из системы. Я сделал код ниже. Но моя проблема в том, что когда я нажимаю на ссылку выхода из системы один раз, она не возвращается, но когда я дважды нажимаю на ссылку выхода, она возвращается назад или на предыдущую страницу.

Я создал одну ссылку <a href="logout.jsp">Click here to logout</a> на странице filelist.jsp. Когда я нажимаю на эту ссылку, она перенаправляется на страницу logout.jsp. Я хочу ограничить пользователя, чтобы вернуться. как сделать? Я где-то ошибаюсь в коде?

Это моя страница filelist.jsp

<%-- 
    Document   : filelist
    Created on : 22 Oct, 2019, 7:48:04 PM
    Author     : Z0009289
--%>

<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Statement"%>
<%@page import="com.servlet.db.DB"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%
   
    
%>    
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link href="bootstrap.css" rel="stylesheet" type="text/css">
        <title>file_list Page</title>
        
    </head>
    <body>
        <a href="logout.jsp">Click here to logout</a>
    </body>
</html>

Это моя страница logout.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%
    response.setHeader("Cache-Control","no-cache");
    response.setHeader("Cache-Control","no-store");
    response.setHeader("Pragma","no-cache");
    response.setDateHeader ("Expires", 0);
    session = request.getSession();
    
    String userid = "";
    if ((session.getAttribute("userid") == null) || (session.getAttribute("userid") == "")) {
        response.sendRedirect("login.jsp");
    }
    else{
        userid = session.getAttribute("userid").toString();
    }
%>    
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Log out Page</title>
    </head>
    <body>
        
        <h2>Are you sure to logout???</h2>
        <% 
            response.setHeader("Cache-Control","no-cache");
            response.setHeader("Cache-Control","no-store");
            response.setHeader("Pragma","no-cache");
            response.setDateHeader ("Expires", 0);
        %>
        
        <a href="signout.jsp"><button type="submit">Logout</button></a>
    </body>
</html>

Это моя страница signout.jsp

  <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <% 
            response.setHeader("Cache-Control","no-cache");
            response.setHeader("Cache-Control","no-store");
            response.setHeader("Pragma","no-cache");
            response.setDateHeader ("Expires", 0);
%>

      <%
    
    session = request.getSession();
    
    String uname = "";
    if ((session.getAttribute("userid") == null) || (session.getAttribute("userid") == "")) {
        response.sendRedirect("login.jsp");
    }
    else{
        uname = session.getAttribute("userid").toString();
    }
%>
        <!DOCTYPE html>
        <html>

        <head>
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
          <title>Sign out Page</title>
        </head>

        <body>
          <%  
        response.setHeader("Cache-Control","no-cache");
        response.setHeader("Cache-Control","no-store");
        response.setHeader("Pragma","no-cache");
        response.setDateHeader ("Expires", 0);
        if(session.getAttribute("userid") != null){
            session.removeAttribute("userid");
            request.getSession(false);
            session.setAttribute("userid", null);
            session.invalidate();
            response.sendRedirect("login.jsp");
            
        }
        
        %>
        </body>
        </html>


Ответы:


1

Эти фрагменты кода будут работать для вас и решат вашу ошибку.

Выход.jsp

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>

<head>
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
</head>
----//body tags
<%
session.invalidate();
response.setHeader("Cache-Control","no-store"); 
response.setHeader("Pragma","no-cache"); 
response.setDateHeader ("Expires", 0);
%>
<jsp:forward page="index.jsp"></jsp:forward>

ссылка

 <li><a href="logout.jsp">Logout</a></li>
03.01.2020
  • Спасибо за ваше время и ответ. Я запутался, где я должен добавить приведенные выше строки в свой код? 03.01.2020
  • Я получаю сообщение об ошибке на странице ‹%@ page language=java import=java.util.* pageEncoding=ISO-8859-1%› ‹META HTTP-EQUIV=Cache-Control CONTENT=no-cache› ‹META HTTP-EQUIV=Pragma CONTENT=без кеша› ‹META HTTP-EQUIV=Expires CONTENT=-1› 03.01.2020
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]