java:Cookie(常用操作),Cookie和Session免登录实例
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免登录实例的更多相关文章
- jquery.cookie.js 操作cookie实现记住密码功能的实现代码
jquery.cookie.js操作cookie实现记住密码功能,很简单很强大,喜欢的朋友可以参考下. 复制代码代码如下: //初始化页面时验证是否记住了密码 $(document).ready( ...
- Java中Cookie常用操作类(Spring中操作Cookie)
说明:Cookie下用Key取值没有快速的方法,只能便利循环去取. 技巧:置0则cookie会立即删除,设置-1,负值则会在关闭浏览器后删除.切记一定要增加路径:setPath("/&quo ...
- jquery.cookie.js && java后台代码 操作cookie实现记住当前用户输入信息代码
下载jquery.cookie.js地址看这里:http://pan.baidu.com/s/1gdCPaN5 //初始化页面时验证是否记住了密码 $(document).ready(function ...
- cookie 常用操作
Cookie:指网站为了辨别用户身份.进行会话跟踪而储存在用户本地的 key/value 型数据(通常经过加密), cookie key/value 型数据可以由服务器端自己定义. Cookie是由服 ...
- Cookie常用操作以及属性
概述 最近项目要用到cookie存储部分用户信息;研究了一下做一下分享 Cookie 是服务器保存在浏览器的一小段文本信息,每个 Cookie 的大小一般不能超过4KB.浏览器每次向服务器发出请求,就 ...
- 利用Cookie保存用户身份信息实现免登录
<%@page import="sun.misc.BASE64Encoder"%> <%@page import="java.util.Base64.E ...
- Java Map常用操作
Java之map常用操作 package basic; import java.util.HashMap; import java.util.Map; /** *Map常用操作方法 */ public ...
- Java 线程常用操作
继Java线程生命周期继续学习Java线程其他常用操作 线程的常用操作 设置线程名字:setName() 获取线程名称:getName() 线程唯一Id:getId() // 自定义线程名称 Stri ...
- jquery.cookie.js操作cookie实现“记住密码”,很简单很强大
//初始化页面时验证是否记住了密码 $(document).ready(function() { if ($.cookie("rmbUser") == "true&quo ...
随机推荐
- Redis持久化(转载)
原文地址:http://www.jianshu.com/p/2f14bc570563?from=jiantop.com 数据持久化 Redis提供了将数据定期自动持久化至硬盘的能力,包括RDB和AOF ...
- Redis集群方案(来自网络)
参考: https://www.zhihu.com/question/21419897 http://www.cnblogs.com/haoxinyue/p/redis.html 为什么集群? 通常, ...
- poj2182 Lost Cows[BIT二分]
blog题解鸽了许久了..本来说好的切一题写一个题解的说 一个$1 \sim n$数列,已知每个数前面比他小的数个数,试确定该序列. 相当的一道水题.可以发现数列最后一个数是首先可以确定下来的.然后把 ...
- 【HDU5890】Eighty seven
题目大意:给定 N 个数,M 个询问,每次询问如果去掉三个数(可能相同),能否选择恰好 10 个数字,凑出 87 这个数. 题解:骚操作.. 集合凑数问题是一个很经典的模型,即:背包问题. 先进行预处 ...
- Coding 账户与 本地 Git 客户端的配置
1.先创建cooding账户 ,注册地址:https://coding.net/ 2.创建好账户后登陆,在个人设置中 验证邮箱 和 验证手机 (邮箱很重要配置需要用到) 3.安装git 客户端 (在 ...
- python 的pip安装
C:\Python27>C:\Python27\Scripts\pip.exe install gevent gevent是安装的模块名
- python 可更改(mutable)与不可更改(immutable)对象
在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象. 不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际 ...
- 洛谷 P1546 最短网络 Agri-Net x
题目背景 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当然,他需要你的帮助. 题目描述 约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其 ...
- 18.Python格式化字符串(格式化输出)
Python 提供了“%”对各种类型的数据进行格式化输出,例如如下代码: price = 108 print ("the book's price is %s" % price) ...
- git远程相关
git remote add origin git仓库地址 // 添加了远程仓库 git remote remove origin // 移除远程仓库 git push -u origin maste ...