简体   繁体   English

使用Servlet自动登录和注销

[英]Automatic Login and Logout using Servlet

I want a login application in a Java Servlet. 我想要Java Servlet中的登录应用程序。 Where I want to automatically login system if the user is previously logged in the site automatically redirect to welcome page instead of login page. 如果用户以前登录过站点,我想在其中自动登录的系统自动重定向到欢迎页面,而不是登录页面。 All is working fine but when I am clicking on the logout button and set cookies to "" still it doesn't delete the cookie and after logging out it still every time forward me to profile page instead of login page. 一切正常,但是当我单击注销按钮并将cookie设置为“”时,它仍然不会删除cookie,并且注销后仍然每次将我转发到个人资料页面而不是登录页面。 I am adding here 2 servlets where one contained about redirection mechanism and another is logout servlet. 我在这里添加2个servlet,其中一个包含有关重定向机制的信息,另一个是注销servlet。 Can anyone please help me to solve my problem? 谁能帮我解决我的问题?

HomeServlet.java HomeServlet.java

package com.demo.controller;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;



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

    public HomeServlet() {
        super();

    }


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


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


    public void doProcess(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException{
        res.setContentType("text/html");
        PrintWriter out=res.getWriter();  
        System.out.println(req.getCookies());
        Cookie ck[]=req.getCookies();  
        if(ck!=null){  
         String name=ck[0].getValue();  
        if(!name.equals("")||name!=null){  
            res.sendRedirect("ProfileServlet");

        }  
        }else{  
           res.sendRedirect("login");

        }  
    }

}

LogoutServlet.java LogoutServlet.java

package com.demo.controller;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


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

    public LogoutServlet() {
        super();
    }

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

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doProcess(request, response);
    }
    protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

        Cookie ck=new Cookie("name","");  
        ck.setMaxAge(0);  
        response.addCookie(ck);  

         request.getRequestDispatcher("/login").include(request, response);
         out.println("<script type=\"text/javascript\">");  
         out.println("alert('Logged Out');");  
         out.println("</script>");

         System.out.println("Logout "+ck.getValue() );


    }
}

There may be issue with your if condition...try to debug . 您的if条件可能存在问题...尝试调试。

if(!name.equals("")||name!=null){  
            res.sendRedirect("ProfileServlet");

        }  

you can write it eg: 您可以编写它,例如:

if(name!=null && !name.trim().isEmpty()){  
                res.sendRedirect("ProfileServlet");

 } 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM