概述
不需要独立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有效期内自动登录所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复