我想要Java Servlet中的登录应用程序。 如果用户以前登录过站点,我想在其中自动登录的系统自动重定向到欢迎页面,而不是登录页面。一切正常,但是当我单击注销按钮并将cookie设置为“”时,它仍然不会删除cookie,并且注销后仍然每次将我转发到个人资料页面而不是登录页面。 我在这里添加2个servlet,其中一个包含有关重定向机制的信息,另一个是注销servlet。 谁能帮我解决我的问题?
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
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() );
}
}
答案 0 :(得分:0)
您的if条件可能存在问题...尝试调试。
if(!name.equals("")||name!=null){
res.sendRedirect("ProfileServlet");
}
您可以编写它,例如:
if(name!=null && !name.trim().isEmpty()){
res.sendRedirect("ProfileServlet");
}