我是靠谱客的博主 传统母鸡,最近开发中收集的这篇文章主要介绍自动登陆、Cookie的清除、登陆页面中文的处理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

使用场景,当一个登陆页面登陆时输入的账号或者密码错误时清除Cookie;

另一种场景当用户退出的时候,清除Cookie,即使勾选的自动登陆,退出了系统,下次登陆就必须重写输入账号和密码。

登陆时处理在请求方式的方法内设定编码外(doGet()和doPost()方法内设置UTF-8或者其他),在创建Cookie时也要对中文进行编码,如果没有处理,存到Cookie里面的是乱码。

自动登陆时也要在jsp页面对取到的Cookie对象中的中文进行解码,不然取出来的还是乱码


--------------------登陆的jsp页面--------------------

<%@ page import="java.net.*" 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>Insert title here</title>
</head>
<%

Cookie[] cookies = request.getCookies();  //获取Cookie所有存的值


String username = null;
String password = null;
    if(cookies != null)   //在这里加判断是为了防止空指针异常,如果cookies为null的或for循环中的cookies.length会报空指针异常
    {
   for(int i=0;i<cookies.length;i++)
   {
    Cookie cookie = cookies[i];
   
    String name = cookie.getName();//cookie的名称
    String value = URLDecoder.decode(cookie.getValue(),"utf-8");   //cookie的值  解码(针对中文)
    //解码URLDecoder.decoder("需要解码的内容" ,"编码样式");     (j)
    //System.out.println(name + "  : " + value);
   
    if("c_username".equals(name))
    {
    username = value;
    }
    else if("c_password".equals(name))
    {
    password = value;
    }
   }
   
   System.out.println(username + "  "+ password);
   
   //自动登录
   if((username!=null && !"".equals(username)) && (password != null && !"".equals(password)))

   {   

    session.setAttribute("username", username);       //用session存Cookie存的username和password
    session.setAttribute("password", password);
    response.sendRedirect(request.getContextPath() + "/loginServlet");  //跳转到Servlet的使用的是doGet()
   }
    }


%>


<body>
<form action="loginServlet" method="post">
用户名:<input type="text" name="username" value='<%=(username!=null && !"".equals(username))?username:""%>'><br/><br/>
密    码:<input type="text" name="password" value='<%=(password!=null && !"".equals(password))?password:""%>'><br/><br/>
<input type="checkbox" name="autoLogin" value="autoLogin">自动登录<br/><br/>

<input type="submit" value="登陆">
</form>

<font color="red" size="-1"> <%=request.getAttribute("errorMsg")%> </font>

</body>
</html>


-------------------登陆Servlet-------------------------

package servlet;

import java.io.IOException;
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;

import javax.servlet.http.HttpSession;

/**
 * 登陆的servket(自动登录测试)
 */
@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;


/**
* 自动登录
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.获取参数
HttpSession session = request.getSession();
String username = (String)session.getAttribute("username");
String password = (String)session.getAttribute("password");

System.out.println(username + ":" + password);

//2.数据库校验,校验用户名、密码是否正确
//伪校验  合法
if("123456".equals(password))
{
response.sendRedirect(request.getContextPath() + "/main.jsp");
}
//不合法
else
{
//退出登陆,清空Cookie与session
request.getRequestDispatcher("/exitServlet").forward(request, response);
}
}


/**
* 手动登录
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");

//1.获取参数
String username = request.getParameter("username");
String password = request.getParameter("password");
String autoLogin = request.getParameter("autoLogin");

System.out.println(username + ":" + password + ":"+ autoLogin);

//2.数据库校验,校验用户名、密码是否正确
//伪校验  合法
if("123456".equals(password))
{

//3.判断用户是否需要自动登录功能
if(autoLogin != null && "autoLogin".equals(autoLogin))
{
//1.创建cookie对象

Cookie cookie = new Cookie("c_username", URLEncoder.encode(username, "UTF-8")); //需对 中文 进行编码

                                 ////解码URLEncoder.encode("需要编码的内容" ,"编码样式");     (解码和编码用的不是同一个方法) 这里如果不对中文进行编码,则在做自动登陆的时候取出来的是乱码

Cookie cookie2 = new Cookie("c_password", password);

//2.设置有效期
cookie.setMaxAge(7*24*60*60);//以秒为单位  一周
cookie2.setMaxAge(7*24*60*60);//以秒为单位  一周

//3.设置保存路径
cookie.setPath(request.getContextPath()+"/");
cookie2.setPath(request.getContextPath()+"/");

//4.添加到响应报头中
response.addCookie(cookie);
response.addCookie(cookie2);
}

response.sendRedirect(request.getContextPath() + "/main.jsp");
}
//不合法
else
{
request.setAttribute("errorMsg", "用户名或密码不匹配");
request.getRequestDispatcher("/login.jsp").forward(request, response);
}

}


}

-------------------------清除CookieServlet------------------------------

package servlet;
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;
import javax.servlet.http.HttpSession;

/**
 * 退出登陆Servlet:
 * 
 * 1.清空session
 * 2.清空cookie
 */
@WebServlet("/exitServlet")
public class ExitServlet extends HttpServlet {
private static final long serialVersionUID = 1L;


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

//1.清空session
HttpSession session = request.getSession();
session.invalidate();//销毁session   

//2.清空cookie
Cookie[] cookies = request.getCookies();  //获取到cookie存的所有(比如自动登录记住账号和密码,那么获得的cookie就有两个)
for (int i = 0; i < cookies.length; i++) {
Cookie cookie = cookies[i];   //这里可以不创建新的Cookie对象存数组,只是为了方便使用

//将有效期设置为0秒
cookie.setMaxAge(0);

//清空cookie的值
cookie.setValue(null);

//设置保存路径
cookie.setPath(request.getContextPath()+"/");  //路径必须与之前设置的Cookie的路径一致

//添加到响应报头
response.addCookie(cookie);
}

//3.跳转到登陆页面login.jsp
response.sendRedirect(request.getContextPath()+"/login.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>Insert title here</title>
</head>
<body>
欢迎访问!!   <a href="exitServlet">退出</a>
</body>
</html>

最后

以上就是传统母鸡为你收集整理的自动登陆、Cookie的清除、登陆页面中文的处理的全部内容,希望文章能够帮你解决自动登陆、Cookie的清除、登陆页面中文的处理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部