如何在java中注销会话 我的网站允许使用类似和不同的帐户同时进行多次登录。我尝试对每次登录进行会话验证,但无效。请帮助我解决有关我网站的此问题 这是这个网站已经给出的代码。我尝试使用相同的代码,但它不起作用。问题是什么,请给我解决方案

如何在java中注销会话 我的网站允许使用类似和不同的帐户同时进行多次登录。我尝试对每次登录进行会话验证,但无效。请帮助我解决有关我网站的此问题 这是这个网站已经给出的代码。我尝试使用相同的代码,但它不起作用。问题是什么,请给我解决方案,java,jsp,Java,Jsp,您需要为身份验证设置一个属性 Login.java public class LogoutController1 extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOExcepti

您需要为身份验证设置一个属性

Login.java

public class LogoutController1 extends HttpServlet {
    private static final long serialVersionUID = 1L;

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


        HttpSession session = request.getSession(false);

        if(session!=null){

            session.invalidate();
            session=null;
        }
        request.getRequestDispatcher("Login.jsp").forward(request,response);
    }
}
Logout.java

public class Login extends HttpServlet {
    private static final long serialVersionUID = 1L;
    public Login() {
        super();
    }
    Connection conn = null;
    String next="login.jsp";
    String uname,pwd;

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        uname=request.getParameter("username");
        pwd=request.getParameter("password");
        HttpSession session = request.getSession(true);
        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/intranet","root","root");
            Statement stmt=conn.createStatement();
            ResultSet rs=stmt.executeQuery("select * from login where username='"+uname+"' and password='"+pwd+"' ");
            if(rs != null){
                Member mem = new Member();
                if(rs.next()) 
                {
                    mem.setId(rs.getLong("id"));
                    mem.setFirstName(rs.getString("username"));
                    mem.setEmail(rs.getString("email"));
                    session.setAttribute("user", mem);
                    next = "index.jsp";
                }
                else
                {
                    next = "login.jsp";
                }
            }
        }
        catch(Exception ex)
        {
                System.out.println(ex);
        }
        finally
        {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            response.sendRedirect(next);
        }
    }
}

您需要为身份验证设置一个属性

Login.java

public class LogoutController1 extends HttpServlet {
    private static final long serialVersionUID = 1L;

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


        HttpSession session = request.getSession(false);

        if(session!=null){

            session.invalidate();
            session=null;
        }
        request.getRequestDispatcher("Login.jsp").forward(request,response);
    }
}
Logout.java

public class Login extends HttpServlet {
    private static final long serialVersionUID = 1L;
    public Login() {
        super();
    }
    Connection conn = null;
    String next="login.jsp";
    String uname,pwd;

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        uname=request.getParameter("username");
        pwd=request.getParameter("password");
        HttpSession session = request.getSession(true);
        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/intranet","root","root");
            Statement stmt=conn.createStatement();
            ResultSet rs=stmt.executeQuery("select * from login where username='"+uname+"' and password='"+pwd+"' ");
            if(rs != null){
                Member mem = new Member();
                if(rs.next()) 
                {
                    mem.setId(rs.getLong("id"));
                    mem.setFirstName(rs.getString("username"));
                    mem.setEmail(rs.getString("email"));
                    session.setAttribute("user", mem);
                    next = "index.jsp";
                }
                else
                {
                    next = "login.jsp";
                }
            }
        }
        catch(Exception ex)
        {
                System.out.println(ex);
        }
        finally
        {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            response.sendRedirect(next);
        }
    }
}

您的代码只显示注销控制器的逻辑。确保Logincontroller有一些逻辑检查是否有会话正在运行,如果有,则使当前会话无效。这可以通过在注销控制器中保存一些attirbute/flag并在登录控制器中检索它(验证标志/属性)来实现。

您的代码只显示注销控制器的逻辑。确保Logincontroller有一些逻辑检查是否有会话正在运行,如果有,则使当前会话无效。这可以通过在注销控制器中保存一些attirbute/flag并在登录控制器中检索它(验证标志/属性)来实现。

您正在设置什么属性?我看不到您正在对其执行身份验证的任何属性?您正在设置什么属性?我看不到您正在对其执行身份验证的任何属性?我必须如何使用next。我是否必须创建局部变量?@Manjunath是的,您必须为next创建一个局部变量。我已经编辑了答案。我必须如何使用next。我是否必须创建局部变量?@Manjunath是的,你必须为next创建一个局部变量。我已经编辑了答案。