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 ...
随机推荐
- Java 实现《编译原理》中间代码生成 -逆波兰式生成与计算 - 程序解析
Java 实现<编译原理>中间代码生成 -逆波兰式生成与计算 - 程序解析 编译原理学习笔记 (一)逆波兰式是什么? 逆波兰式(Reverse Polish notation,RPN,或逆 ...
- 人人商城返回Json格式的数据
人人商城返回Json格式的数据 1.找到该插件对应的 core/mobile 路径 2.新建一个 api.php 文件 <?php header('Content-Type:applicatio ...
- Springboot项目全局异常统一处理
转自https://blog.csdn.net/hao_kkkkk/article/details/80538955 最近在做项目时需要对异常进行全局统一处理,主要是一些分类入库以及记录日志等,因为项 ...
- nginx在一个服务器上配置两个项目,并通过两个不同的域名访问
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,由俄罗斯的程序设计师Igor Sysoev所开发,其特点是占有内存少,并发能力强. 话不多说,先从最基 ...
- 从收发消息能力来理解TCP建立连接时的三次握手
TCP是一个全双工协议,意味着在Client和Server都可以接收和发送数据. 所以,从另一个角度理解建立连接的目的就是要确保双方都要知道对端的收发消息的能力是正常的
- 如何在IntelliJ Idea中同时启动不同端口
配置多实例: 选择Idea右上角启动按钮边上的Edit Configurations,在打开的对话框中,去掉Single Instance Only的选项,VM Options中增加-Dserver. ...
- THUWC 2019游记
坑先占着QwQ 不太喜欢写Blog, 因此我的Blog一直很冷清,但是还是想写写这种游记啦,反正是给自己看的 Day -4 颓了一整天,一道题都没写 于是无聊用GL写了一个海战游戏,让两个程序对打-- ...
- TC-SRM391-div2-SortingGame(BFS,STL)
Problem Statement for SortingGame Problem Statement In The Sorting Game, you are given a sequence co ...
- Unity3D_(游戏)卡牌04_游戏界面
启动屏界面.主菜单界面.选关界面.游戏界面 卡牌01_启动屏界面 传送门 卡牌02_主菜单界面 传送门 卡牌03_选关界面 传送门 卡牌04_游戏界面 传送门 选关界面效果 (源代码在文 ...
- sqli-labs(38)
0X01 ?id=' and 1=1%23 正确 ?id=1' and 1=2%23 错误 存在注入 0x1 堆叠注入讲解 (1)前言 国内有的称为堆查询注入,也有称之为堆叠注入.个人认为称之为堆叠注 ...