刚做了一个小作业,用Cookie保存登录时的用户名和密码,在登录成功页面从Cookie中读取用户名和密码,第一次没问题,
然而第二次登录换一个用户名和密码登录,成功页面读取的还是上一次的用户名和密码,这个怎么解决啊。
有经验的大神帮帮忙,谢了。
下面是代码:
登录页面
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class AddUserView
*/
@WebServlet("/Login")
public class Login extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Login() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
//response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
String username = "";
String password = "";
Cookie[] cookies = request.getCookies();
if(cookies!=null&&cookies.length>0) {
for(Cookie c:cookies) {
if(c.getName().equals("username")) {
username = URLDecoder.decode(c.getValue(), "utf-8");
}
if(c.getName().equals("password")) {
password = URLDecoder.decode(c.getValue(), "utf-8");
}
}
}
out.println("<form action='doLogin' method='post'>");
out.println("<h2>登录</h2>");
out.println("<input type='text' name='username' placeholder='账户' value='"+username+"' style='width:200'><br>");
out.println("<input type='password' name='password' placeholder='密码' value='"+password+"' style='width:200'><br>");
out.println("记住我<input type='checkbox' name='checkbox' >");
out.println("<input type='submit' value='登录'>");
out.println("</form>");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
成功页面
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class AddUserView
*/
@WebServlet("/doLogin")
public class doLogin extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public doLogin() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
//response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
String[] checkbox = request.getParameterValues("checkbox");
String username="";
String password="";
//
if(checkbox!=null&&checkbox.length>0) {
username = URLEncoder.encode(request.getParameter("username"), "utf-8");
password = URLEncoder.encode(request.getParameter("password"),"utf-8");
Cookie cusername = new Cookie("username",username);
Cookie cpassword = new Cookie("password",password);
cusername.setMaxAge(2000);
cpassword.setMaxAge(2000);
response.addCookie(cusername);
response.addCookie(cpassword);
}else{
Cookie[] cookies = request.getCookies();
if(cookies!=null&&cookies.length>0) {
for(Cookie c : cookies) {
if(c.getName().equals("username")||c.getName().equals("password")) {
c.setMaxAge(0);
response.addCookie(c);
}
}
}
}
//从cookie中读取数据,然后用URLDecoder函数解码!
Cookie [] cookies = request.getCookies();
if(cookies!=null&&cookies.length>0) {
for(Cookie c1:cookies) {
if(c1.getName().equals("username")) {
username = URLDecoder.decode(c1.getValue(),"utf-8");
}
if(c1.getName().equals("password")) {
password = URLDecoder.decode(c1.getValue(),"utf-8");
}
}
out.println("恭喜"+username+"登录成功!");
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}