不使用jsp,在servlet中实现使用cookie实现记住账号密码自动登陆
1个回答
展开全部
简单的代码,
比较简单的登陆的servlet.参考代码
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 Login2 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);//调用doPost方法
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
webLogin(request, response);
}
private void webLogin(HttpServletRequest request,
HttpServletResponse response) throws IOException {
response.setContentType("text/html;charset=utf-8");//设置字符集
Cookie[] cs = request.getCookies();//读取cookie
if (cs != null && cs.length != 0) {//判断是不是有效的cookie
String cookie_uname = null;
String cookie_upswd = null;
for (int i = 0; i < cs.length; i++) {
if (cs[i].getName().equals("uname")) {//得到用户名
cookie_uname = cs[i].getValue();
}
if (cs[i].getName().equals("upswd")) {//得到密码
cookie_upswd = cs[i].getValue();
}
}
//判断用户名和密码都不能为空
if (cookie_uname != null && cookie_upswd != null) {
System.out.println("试图使用cookie登陆"+cookie_uname+"\t"+cookie_upswd);
//把姓名和密码发到ValidateUser2 进行验证,如果验证成功就跳转到登陆后的页面,否则跳回来
response.sendRedirect("ValidateUser2?uname=" + cookie_uname
+ "&upswd=" + cookie_upswd);
// 验证成功就登陆
// 验证失败, 就返回, ,注意这里可能是死循环.. 需要特别解决和注意
// 因为cookie里的数据不对,返回登陆,返回后登陆又检测到cookie又验证登陆,又验证失败,返回登陆...
// 所以登陆失败.就删除掉cookie
}
}
PrintWriter pw = response.getWriter();
pw.print("<form action='ValidateUser2' method='post' >");
pw.print("用户名<input type='text' name='uname' /><br />");
pw.print("密 码<input type='password' name='upswd' /><br />");
pw.print("<input type='checkbox' name='jizhu' value='jizhu'>1分钟内登陆<br />");//为了测试效果,就记住1分钟
pw.print("<input type='submit' value='提交'/>");
pw.print("</form>");
pw.flush();
pw.close();
}
}
下面是验证密码和账号的 ValidateUser2
首先,用户名和密码是否正确.不正确.那么返回登陆,下面的核心代码就是返回重新登陆时,删除用户名和密码的
String uname = (String) req.getParameter("uname");//从request里获得用户名和密码
String upswd = (String) req.getParameter("upswd");
if(验证成功){
跳转到登陆后的界面
}else{
Cookie[] cs = req.getCookies();
if(cs!=null&&cs.length!=0){
for (int i = 0; i < cs.length; i++) {
if(cs[i].getName().equals("uname")){
cs[i] = new Cookie("uname",null);
cs[i].setMaxAge(0);
res.addCookie(cs[i]);
}else if(cs[i].getName().equals("upswd")){
cs[i] = new Cookie("upswd",null);//删除cookie
cs[i].setMaxAge(0);
res.addCookie(cs[i]);
}
}
}
res.sendRedirect("Login2");//返回Login2
}
追问
请问跳转到登陆后的页面怎么写
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询