我是靠谱客的博主 活力期待,最近开发中收集的这篇文章主要介绍JavaWeb中cookie的设置,实现在cookie有效期内自动登录,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

不需要独立jar包

创建包:testcookie        创建类:SetCookiesServlet

jsp页面自动填充cookie的用户名和密码

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>实现登录Cookie自动填充测试</title>
</head>
<body> 
    <form action="SetCookiesServlet" method="post">
	    用户名:<input type="text" name="username" value="${cookie.username.value}"> <br>
	    密码:<input type="text" name="userpwd" value="${cookie.userpwd.value}" ><br>
	    <input type="submit" value="提交">
    </form>
</body>
</html>

登陆验证,判断账号密码是否正确,如果正确:设置cookie,并跳转到下一个界面

此模块只展示设置cookie

if(password.equals(pwd)) {			
//	设置cookie
	Cookie username = new Cookie("username", name);
	Cookie userpwd = new Cookie("userpwd", password);
	username.setMaxAge(24*60);
	resp.addCookie(username);
					
	userpwd.setMaxAge(24*60);//(秒数)1.正数:指定秒数后过期 2.负数:浏览器关闭cookie删除 3.0:马上删除
	resp.addCookie(userpwd);//  响应给客户端
					
	System.out.println("登陆成功...............");
	resp.sendRedirect("in/HH.jsp");
}
else {
	System.out.println("登陆失败,密码错误!");
	}

LoginFilter登录过滤,过滤login.jsp

package com.filter;

import java.io.IOException;
import java.sql.SQLException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.dao.User;

public class LoginFilter implements Filter {

    public LoginFilter() {
    	
    }
	public void destroy() {
		
	}
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		HttpServletRequest req=(HttpServletRequest) request;
		HttpServletResponse resp=(HttpServletResponse) response;
//		=====================
//		req.getSession();
//		=====================
		
//		设置编码格式
		req.setCharacterEncoding("utf-8");
		resp.setContentType("text/html;charset=utf-8");

//		获取cookie的值存入数组
		Cookie[] cookies = req.getCookies();
		String n1 = null;//代表用户名
		String n2 = null;//代表密码
		for(int i=0;cookies!=null && i<cookies.length;i++) {//如果cookie存在
			if(cookies[i].getName().equals("username")) {//获取cookie中username对应的用户名
				n1=cookies[i].getValue();
				System.out.println(n1);
			}
			if(cookies[i].getName().equals("userpwd")) {//获取cookie中userpwd对应的密码
				n2=cookies[i].getValue();
				System.out.println(n2);
				break;
			}
		}
		
//		获取数据库中的用户名和密码比对cookie中的用户名和密码
		String password = null;
		try {
			//获取数据库中对应用户名的密码 赋值给password
			password = User.getPassword(n1);
//			System.out.println(password);
			//对比数据库中的密码与cookie中的密码
			if(password!=null && n2.equals(password)) {	//如果得到cookie 得到cookie对应的用户名,查找这个用户名对应数据库中的密码 如果密码不为空
				resp.sendRedirect(req.getContextPath()+"/in/HH.jsp");//req.getContextPath()获取当前工程路径
			}
		} catch (ClassNotFoundException | SQLException e) {
			e.printStackTrace();
		}
		chain.doFilter(request, response);//继续执行
//		============
//		return;
//		============
	}
	public void init(FilterConfig fConfig) throws ServletException {

	}

}

配置xml登陆过滤的配置,每次访问login.jsp时都需要进行LoginFilter的过滤

  	<!-- 登录过滤 -->
	<filter>
		<filter-name>LoginFilter</filter-name>
		<filter-class>com.filter.LoginFilter</filter-class><!-- 过滤器 -->
	</filter>
	<filter-mapping>
		<filter-name>LoginFilter</filter-name>
		<url-pattern>/login.jsp</url-pattern><!-- 过滤的内容 -->
	</filter-mapping>

最后

以上就是活力期待为你收集整理的JavaWeb中cookie的设置,实现在cookie有效期内自动登录的全部内容,希望文章能够帮你解决JavaWeb中cookie的设置,实现在cookie有效期内自动登录所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部