1.常用操作:

package cn.zzsxt.lee.web.cookie;

import java.io.IOException;

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 GetCookieServlet extends HttpServlet { @Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 获取cookie信息
Cookie[] cookies = req.getCookies();
for (int i = 0; i < cookies.length; i++) {
System.out.println(cookies[i].getName() + ":" + cookies[i].getValue());
} } }
package cn.zzsxt.lee.web.cookie;

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; /**
* @description
*
* cookie:
* 在服务器被创建,返回给客户端,并且保存客户端
* 如果设置了SETMAXAGE(int seconds),会把cookie保存在客户端的硬盘中
* 如果没有设置,会默认把cookie保存在浏览器的内存中
* 一旦设置setPath():只能通过设置的路径才能获取到当前的cookie信息
* @author Seven Lee
* @date
*
*/
@WebServlet("/cookie.sxt")
public class CookieServlet extends HttpServlet { @Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 创建cookie对象
Cookie compCookie = new Cookie("computer", "HP");
// 服务器把cookie响应给客户端,所有的cookie对象,都会在服务器端创建,通过http响应给客户端(浏览器) Cookie keyCookie = new Cookie("key", "doubleflybird"); Cookie mouseCookie = new Cookie("mouse", "leishe");
mouseCookie.setMaxAge(60*60*24*30);//如果不设置使用时间,那么将取不到Cookie的值 System.out.println(req.getContextPath());// 项目名(在tomcat中部署的项目名)
// /zzsxt/shopping.jsp
keyCookie.setPath(req.getContextPath()+"/getCookie.sxt");// 一旦设置了cookie的路径,就只能通过这一个路径才能获取到cookie信息 resp.addCookie(compCookie);
resp.addCookie(mouseCookie);
resp.addCookie(keyCookie);
} }

 2.Cookie和Session登录实例:

  注册:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head> <title>My JSP 'register.jsp' starting page</title>
<script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
<script type="text/javascript"> var sexFlag = false;
var untFlag = false;
function checkSex() {
var sex = $(":checked").val();
if (sex != null) {
// 验证成功
alert(111);
sexFlag = true;
} else {
// 验证失败
alert(222);
sexFlag = false;
}
} function checkUniversity() {
var unt = $(":selected").val();
if (unt != 0 && unt != null) {
// 验证成功
untFlag = true;
} else {
untFlag = false;
}
} $(function() { $("form").submit(function() {
checkSex();
checkUniversity();
return sexFlag && untFlag;
}); });
</script> </head> <body> <h1>注册页面</h1>
<form action="register.sxt" method="post"> 用户名:
<input type="text" name="username" id="uname" />
密码:
<input type="password" name="pwd" id="pawd" />
性别:
<input class="sexes" type="radio" name="sex" value="male" />

<input class="sexes" type="radio" name="sex" value="female" />
女 院校:<select name="unt">
<option value="0">请选择院校</option>
<option value="zzsxt">天津大学</option>
<option value="bjsxt">北京大学</option>
</select>
<input type="submit" value="提交" /> </form> </body>
</html>

  注册处理:

package cn.zzsxt.lee.web.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import cn.zzsxt.lee.web.dao.IUserDao;
import cn.zzsxt.lee.web.dao.impl.UserDaoImpl;
import cn.zzsxt.lee.web.entity.User;
import cn.zzsxt.lee.web.utils.BASE64;
import cn.zzsxt.lee.web.utils.MD5;
import cn.zzsxt.lee.web.utils.UUIDUtils; @WebServlet("/register.sxt")
public class RegisterServlet extends HttpServlet { private IUserDao userDao = new UserDaoImpl(); @Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String username = request.getParameter("username");
String pwd = request.getParameter("pwd");
String sex = request.getParameterValues("sex")[0];
String university = request.getParameterValues("unt")[0];
User user = new User();
user.setId(UUIDUtils.getUUid());
user.setUsername(username);
user.setRealPassword(pwd);
pwd = MD5.getMD5(pwd);
user.setPassword(pwd);
user.setSex(sex);
user.setUniversity(university);
user.setAuthority(0);
int result = 0;
try {
result = userDao.registerUser(user);
} catch (Exception e) {
e.printStackTrace();
}
if (result > 0) {
response.sendRedirect("login.jsp");
return;
} } }

 

 

  登录之前必须先判断获取Cookie:

 

package cn.zzsxt.lee.web.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 cn.zzsxt.lee.web.utils.MD5; @WebServlet("/checkLogin2.sxt")
public class CheckLogin2 extends HttpServlet { @Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { String username = "";
String password = ""; // 1.获取cookie的值
Cookie[] cookies = request.getCookies();
// 2.判断cookie数组是否为null
if (cookies != null) {
// 3.判断cookie中是否有用户名和密码
for (int i = 0; i < cookies.length; i++) {
if ("uname".equals(cookies[i].getName())) {
// 4.如果cookie中有用户名和密码,就获取
username = cookies[i].getValue();
}
if ("pwd".equals(cookies[i].getName())) {
password = cookies[i].getValue();
}
}
}
request.getSession().setAttribute("name", username);
request.getSession().setAttribute("pwd", password);
response.sendRedirect("login.jsp");
return;
}
}

    登录:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head> <title>My JSP 'login.jsp' starting page</title> </head> <body> <form action="login.sxt" method="post">
用户名:
<input type="text" name="username" value="${name }" />
密码:
<input type="password" name="pwd" value="${pwd }" />
<input type="submit" value="提交" /> </form> </body>
</html>

  登录处理:

package cn.zzsxt.lee.web.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 cn.zzsxt.lee.web.dao.IUserDao;
import cn.zzsxt.lee.web.dao.impl.UserDaoImpl;
import cn.zzsxt.lee.web.entity.User;
import cn.zzsxt.lee.web.utils.MD5; @WebServlet("/login.sxt")
public class LoginServlet extends HttpServlet { private IUserDao userDao = new UserDaoImpl(); @Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8"); String username = request.getParameter("username");
String pwd = request.getParameter("pwd");
pwd = MD5.getMD5(pwd);
User user = new User();
user.setUsername(username);
user.setPassword(pwd); try {
User u = userDao.selectUserByUsernameAndPassword(user);
if (u.getId() != null && !"".equals(u.getId())) {
// 登录成功
// 存入session
request.getSession().setAttribute("user", u);
Cookie usernameCookie = new Cookie("uname", u.getUsername());
Cookie pwdCookie = new Cookie("pwd", u.getRealPassword());
usernameCookie.setMaxAge(60 * 60 * 24);
pwdCookie.setMaxAge(60 * 60 * 24);
response.addCookie(usernameCookie);
response.addCookie(pwdCookie);
response.sendRedirect("index.jsp");
} else {
// 登录失败
}
} catch (Exception e) {
e.printStackTrace();
}
} }

  frameset框架主页:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head> <title>My JSP 'index.jsp' starting page</title>
</head> <frameset rows="100,*">
<frame src="top.jsp" name="top" />
<frameset cols="200,*">
<frame src="left.jsp" name="left" />
<frame src="right.jsp" name="right" />
</frameset>
</frameset>
</html>

    Filter内Cookie的设置:

package cn.zzsxt.lee.web.filter;

import java.io.IOException;

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.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
* @description 编码过滤器
* @author Seven Lee
* @date 2017年7月28日下午4:48:59
*
*/
public class GlobalFilter implements Filter { @Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
// 如果是设置编码,就必须添加chain.doFilter();
// chain.doFilter(request, response); //放这里有BUG,登录的时候第一次不会出现账号密码,刷新一次才会出现
// 获取cookie数组
Cookie[] cookies = request.getCookies();
if (cookies != null) {// 防止空指针
String username = "";
String password = "";
for (int i = 0; i < cookies.length; i++) {
System.out.println(cookies[i].getValue());
if ("username".equals(cookies[i].getName())) {
username = cookies[i].getValue();
}
if ("password".equals(cookies[i].getName())) {
password = cookies[i].getValue();
}
}
request.getSession().setAttribute("username", username);
request.getSession().setAttribute("password", password);
        chain.doFilter(request, response); //放最后没BUG
} else {
for(int i = 0; i < cookies.length; i++){
System.out.println(cookies[i].getValue());
}
response.sendRedirect("login.jsp");
return;
} } @Override
public void init(FilterConfig filterConfig) throws ServletException { } @Override
public void destroy() { } }

  Top处登录成功:

  

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head> <title>My JSP 'top.jsp' starting page</title>
<script type="text/javascript"> function trunLogin() {
window.top.location.href = "login.jsp";
}
</script> </head> <body>
<c:choose>
<c:when test="${sessionScope.user.username != null }"> //指的是登录时user对象的属性
<h1>欢迎:${sessionScope.user.username }</h1>
<a href="">注销</a>
</c:when>
<c:when test="${sessionScope.username != null }"> //指的是当前Cookie的属性
<h1>欢迎:${sessionScope.username }</h1>
<a href="">注销</a>
</c:when>
<c:otherwise>
<a href="javascript:void(0);" onclick="trunLogin();">请登录</a>
</c:otherwise>
</c:choose>
</body>
</html>

java:Cookie(常用操作),Cookie和Session免登录实例的更多相关文章

  1. jquery.cookie.js 操作cookie实现记住密码功能的实现代码

    jquery.cookie.js操作cookie实现记住密码功能,很简单很强大,喜欢的朋友可以参考下.   复制代码代码如下: //初始化页面时验证是否记住了密码 $(document).ready( ...

  2. Java中Cookie常用操作类(Spring中操作Cookie)

    说明:Cookie下用Key取值没有快速的方法,只能便利循环去取. 技巧:置0则cookie会立即删除,设置-1,负值则会在关闭浏览器后删除.切记一定要增加路径:setPath("/&quo ...

  3. jquery.cookie.js && java后台代码 操作cookie实现记住当前用户输入信息代码

    下载jquery.cookie.js地址看这里:http://pan.baidu.com/s/1gdCPaN5 //初始化页面时验证是否记住了密码 $(document).ready(function ...

  4. cookie 常用操作

    Cookie:指网站为了辨别用户身份.进行会话跟踪而储存在用户本地的 key/value 型数据(通常经过加密), cookie key/value 型数据可以由服务器端自己定义. Cookie是由服 ...

  5. Cookie常用操作以及属性

    概述 最近项目要用到cookie存储部分用户信息;研究了一下做一下分享 Cookie 是服务器保存在浏览器的一小段文本信息,每个 Cookie 的大小一般不能超过4KB.浏览器每次向服务器发出请求,就 ...

  6. 利用Cookie保存用户身份信息实现免登录

    <%@page import="sun.misc.BASE64Encoder"%> <%@page import="java.util.Base64.E ...

  7. Java Map常用操作

    Java之map常用操作 package basic; import java.util.HashMap; import java.util.Map; /** *Map常用操作方法 */ public ...

  8. Java 线程常用操作

    继Java线程生命周期继续学习Java线程其他常用操作 线程的常用操作 设置线程名字:setName() 获取线程名称:getName() 线程唯一Id:getId() // 自定义线程名称 Stri ...

  9. jquery.cookie.js操作cookie实现“记住密码”,很简单很强大

    //初始化页面时验证是否记住了密码 $(document).ready(function() { if ($.cookie("rmbUser") == "true&quo ...

随机推荐

  1. 批量处理window下^M符号

    #!/bin/ksh #set -x # #去掉文件中的^M 符号 # usage() { echo "Usage : sh ToAscll.sh [Option] [value]" ...

  2. 更换Red Hat Enterprise Linux 7 64位的yum为centos的版本

    查看redhat原有的yum包有哪些: [root@localhost ~]# rpm -qa|grep yum yum-utils-1.1.31-24.el7.noarch yum-langpack ...

  3. Linux性能分析命令工具汇总

    转自:http://rdc.hundsun.com/portal/article/731.html?ref=myread 出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章. ...

  4. 安全框架Shiro和SpringSecurity的比较

    来自:https://www.cnblogs.com/zoli/p/11236799.html 两个基本的概念 安全实体:系统需要保护的具体对象数据 权限:系统相关的功能操作,例如基本的CRUD Sh ...

  5. Spring MVC 文件上传简单示例(form、ajax方式 )

    1.Form Upload SpringMVC 中,文件的上传是通过 MultipartResolver 实现的,所以要实现上传,只要注册相应的 MultipartResolver 即可. Multi ...

  6. electron-vue 升级 从2.x升级到4.x的坑

    子窗口 2.x modal为true let messageRightMenu = new BrowserWindow({ // height: 170, // width: 70, useConte ...

  7. 【leetcode】815. Bus Routes

    题目如下: We have a list of bus routes. Each routes[i] is a bus route that the i-th bus repeats forever. ...

  8. javascript中的原型和原型链(二)

    原型(prototype) 函数的 prototype 属性(图) 每个函数都有一个prototype属性,它默认指向一个Object空对象(即称为:原型对象) 原型对象中有一个属性construct ...

  9. POJ 1995(有关快速幂运算的一道水题)

    Raising Modulo Numbers Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 9745   Accepted: ...

  10. CF 354 div2 B 酒杯金字塔

    B. Pyramid of Glasses time limit per test 1 second memory limit per test 256 megabytes input standar ...