javaweb自动登录(cookie)

来源:互联网 发布:matlab 随机字符串数组 编辑:程序博客网 时间:2024/06/05 15:36

Javaweb中的自动登陆利用cookie实现


首先我们要明确目标,然后设计方法。关于自动登录应该要达到的效果是:登陆时勾选了自动登录复选框之后,再一次访问该页面时不需要再一次点击登陆,直接跳转到登陆之后的界面。

我们需要设计的步骤是:
  1. 编写登陆jsp文件;
    <%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>login</title></head><!-- 页面的样式文件 --><style type="text/css">body{background-color : #eee;}#first{width:500px;margin:30px auto;}</style><body><div id="first"><form action="loginservlet" method="post" ><table><tr><td>用户名:</td><td><input type="text" name="username"></td></tr><tr><td>密 码:</td><td><input type="password" name="password"></td></tr><tr><td><input type="checkbox" name="check" value="check"/>自动登录<br></td></tr><tr><td><input type="submit" value="确认"></td><td><input type="reset" value="取消"></td></tr></table></form></div></body></html>

  2. 进行登陆验证;
    package king;import java.io.IOException;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;@WebServlet("/loginservlet")//接收表单信息public class loginservlet extends HttpServlet {private static final long serialVersionUID = 1L;String message = "";       protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");String value1 = "",value2 = "";Cookie cookie = null;Cookie[] cookies = request.getCookies();//获得Cookie对象数组if(cookies!=null){for(int i = 0;i<cookies.length;i++){cookie = cookies[i];if(cookie.getName().equals("username")){value1 = cookie.getValue();}if(cookie.getName().equals("password")){value2 = cookie.getValue();}}if(value1.equals("admin") && value2.equals("1234")){message = "欢迎您!" + value1 + "再次登录该页面!";request.getSession().setAttribute("message", message);response.sendRedirect("logintest.jsp");return;}else{response.sendRedirect("login.jsp");return;}}else{response.sendRedirect("login.jsp");return;}}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");/**********************自动登录***********************************///获得用户的用户名和密码String username = request.getParameter("username").trim();String password = request.getParameter("password").trim();//Cookie代码if(!username.equals("admin") || !password.equals("1234")){message = "用户名或密码错误,请重试!";request.getSession().setAttribute("message", message);response.sendRedirect("login.jsp");return;}else{//如果用户选中了“自动登陆”复选框,向浏览器发送两个Cookieif(request.getParameter("check")!=null && (request.getParameter("check").equals("check"))){//新建cookieCookie namecookie = new Cookie("username",username);Cookie passwordcookie = new Cookie("password",password);//设置cookie在网页上的最大存活时间namecookie.setMaxAge(60*60);passwordcookie.setMaxAge(60*60);//将cookie对象发送到客户端response.addCookie(namecookie);response.addCookie(passwordcookie);}message = "欢迎"+username+"你已成功登陆!";request.getSession().setAttribute("message", message);response.sendRedirect("logintest.jsp");return;}}}

  3. 显示页面。
    <%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>login_test</title></head><body>${message }</body></html>
以上代码中特别标注的内容需要特别注意。
在浏览器中输入相关的URL:http://localhost:8080/kingsystem/loginservlet
进行相关的验证。
原创粉丝点击