- 浏览: 462969 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (369)
- javascript html (20)
- java (31)
- jquery (15)
- jcrop (0)
- JEECG (1)
- ajax (3)
- 反射 (3)
- VI (1)
- mysql (48)
- easyui (1)
- svn (2)
- MD5 加密 (1)
- spring (14)
- ORACLE (8)
- 经验总结 (1)
- TCP/IP协议 (1)
- ICMP协议 (1)
- eclipse (1)
- Reflect (1)
- linux (21)
- android (5)
- excel 操作 (1)
- java tree (1)
- html (1)
- plupload (1)
- mongodb (9)
- aes (1)
- python (1)
- java relax (1)
- highcharts (2)
- json (2)
- java 多线程 (30)
- maven (2)
- 设计模式 (1)
- jsp+js (2)
- 面向对象 (1)
- jvm (16)
- 缓存 (1)
- proxy (1)
- 聊侃 (1)
- 面经 (1)
- java 字节 (1)
- java 类加载器 (2)
- java 基础 (2)
- java 语法糖 (1)
- java 位运算 (1)
- 排序 (3)
- java 服务器性能优化 (19)
- 网络编程 (2)
- jvm 参数设置 (0)
- jersey (1)
- webservice (2)
- nginx+多tomcat 集成 (5)
- nginx (16)
- squid (3)
- memcached (5)
- 正则表达式 (1)
- 常用免费接口 (1)
- jpa (1)
- win7 (1)
- java处理大文件 (1)
- js正则表达式 (1)
- tomcat (1)
- java 敏感字 (1)
- 系统架构优化 (4)
- 学习 (1)
- 本地测试QQ微博第三方登陆 (1)
- java 错误 (1)
- 微信支付 (1)
- https (1)
- httpclient (1)
- awk (2)
- loadrunner (1)
- sql server 2008 (3)
- git (4)
- sql server2008 (1)
- solr (2)
- centos (1)
- 数据存储架构 (3)
- log4j (1)
- weboffice (1)
- 并发编程 (1)
- postgreSQL (0)
- ssl (1)
- openssl (1)
- activeMQ (2)
- IDEA (1)
- shell (1)
- ansible (4)
- docker (2)
- grafana (1)
- jmeter (1)
- TLS (1)
- 将博客搬至CSDN (1)
最新评论
-
dida1990:
啊喔,过去了这么久,不过还是评一个。谁说uuid的hashCo ...
高并发生成订单号(二) -
annan211:
yclovesun 写道使用了uuid,为什么还要machin ...
高并发生成订单号(二) -
yclovesun:
使用了uuid,为什么还要machineId?uuid已经可以 ...
高并发生成订单号(二) -
u013280917:
太深奥,看不懂
mysql优化特定类型的查询
第一步 写一个cookieUtil工具类
第二步 写一个 自定义类 校验
第三步 写一个 校验工具类
第四步 直接调用即可
package com.gdiex.sts.util; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Cookie操作类 * * @author */ public class CookieUtil { private HttpServletRequest request; private HttpServletResponse response; private String path = "/"; // 默认路径 private String domain = ".zzzzzz.com"; // 域 private int maxAge = 0; // 最大有效期 public CookieUtil(HttpServletRequest request, HttpServletResponse response) { this.request = request; this.response = response; } /** * @param name * @return */ public Cookie getCookie(String name) { Cookie[] cookies = request.getCookies(); if (cookies != null) { for (int i = 0; i < cookies.length; i++) { //System.out.println(cookies[i].getName()+":"+cookies[i].getValue()); if (name.equals(cookies[i].getName())) { return cookies[i]; } } } return null; } /** * 删除cookie * * @param name */ public void deleteCookie(String name) { //setCookie(name, "", -1); setCookie(name, "", 0); } /** * @param name * @param value */ public void setCookie(String name, String value) { setCookie(name, value, maxAge); } /** * 增加cookie * * @param name * @param value * @param maxage */ public void setCookie(String name, String value, int cookieMaxAge) { setCookie(name, value, cookieMaxAge, path, domain); } /** * 增加cookie * * @param name * @param value * @param path * @param domain * @param cookieMaxAge */ public void setCookie(String name, String value, int cookieMaxAge, String path, String domain) { try { Cookie cookie = new Cookie(name, URLEncoder.encode(value, "UTF-8")); if (path != null) { cookie.setPath(path); } if (domain != null) { cookie.setDomain(domain); } if (cookieMaxAge != 0) { cookie.setMaxAge(cookieMaxAge); } response.addCookie(cookie); } catch (Exception e) { } } /** * 得到COOKIE中的字符串 * * @param name * @return */ public String getString(String name) { Cookie cookie = getCookie(name); if (cookie == null) return null; String value = cookie.getValue(); if ("null".equals(value)) return null; if (value != null) { try { value = URLDecoder.decode(value, "UTF-8"); } catch (UnsupportedEncodingException e) { } } return value; } /** * 返回整数型cookie值 * * @param name * @return 异常返回-1 */ public int getInt(String name) { return Integer.parseInt(getString(name)==null || "".equals(getString(name))?"-1":getString(name)); } /** * 返回浮点数cookie值 * * @param name * @return 异常返回 -1.0d; */ public double getDouble(String name) { return Double.parseDouble(getString(name)==null || "".equals(getString(name))?"-1":getString(name)); } /** * 设置默认的PATH * * @param path */ public void setPath(String path) { this.path = path; } /** * 设置默认的DOMAIN * * @param domain */ public void setDomain(String domain) { this.domain = domain; } /** * 设置默认的MAX_AGE * * @param age */ public void setMaxAge(int age) { this.maxAge = age; } public static void main(String[] args) { } }
第二步 写一个 自定义类 校验
package com.gdiex.sts.util; import java.net.URLDecoder; import java.net.URLEncoder; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 用户校验类 * * @author * */ public class FrontAuthencation { private CookieUtil cookieUtil = null; // added public FrontAuthencation(HttpServletRequest request, HttpServletResponse response) { cookieUtil = new CookieUtil(request, response); cookieUtil.setDomain(SysopConstant.SYSTEM_DOMAIN); cookieUtil.setPath("/"); } /** * 保存用户名到 cookie * * @param userId * - 用户ID * @param userName * - 用户名 */ public void saveUserName(int userId, String userName, String nickName) { if (null == userName) { userName = ""; } userName = userName.trim(); if (null == nickName) { nickName = ""; } nickName = nickName.trim(); String code = AuthencationHelper.getCode(userName, userId); cookieUtil.setCookie(SysopConstant.KEY_USER_NAME_FRONT, userName); cookieUtil.setCookie(SysopConstant.KEY_NICK_NAME_FRONT, URLEncoder.encode(nickName)); cookieUtil.setCookie(SysopConstant.KEY_USER_ID_FRONT, "" + userId); cookieUtil.setCookie(SysopConstant.KEY_IDENTIFYING_CODE_FRONT, code); } /** * 删除cookie会话数据 */ public void clearCookie() { cookieUtil.setPath("/"); cookieUtil.setMaxAge(0); cookieUtil.deleteCookie(SysopConstant.KEY_USER_NAME_FRONT); cookieUtil.deleteCookie(SysopConstant.KEY_NICK_NAME_FRONT); cookieUtil.deleteCookie(SysopConstant.KEY_USER_ID_FRONT); cookieUtil.deleteCookie(SysopConstant.KEY_IDENTIFYING_CODE_FRONT); } /** * 保存需要强行检验的code * * @param code */ public void saveVerifyCode(String code) { cookieUtil.setCookie(SysopConstant.KEY_VERIFY_CODE, code); } /** * 是否为合法用户 * * @return */ public boolean isValidUser() { String userName = getUserName(); int userId = getUserId(); //KEY_IDENTIFYING_CODE_FRONT String code = cookieUtil.getString(SysopConstant.KEY_IDENTIFYING_CODE_FRONT); if (code == null) { return false; } String idCode = AuthencationHelper.getCode(userName, userId); return (idCode.equals(code)); } /** * 获取是否第一次访问的标识 * * @return */ public static String getFirstRequest(HttpServletRequest request, HttpServletResponse response) { // 需要配置为进程内的域名cookie CookieUtil cookie = new CookieUtil(request, response); String domain = request.getServerName(); // 设置的域名不能带http协议与端口 cookie.setDomain(domain); cookie.setPath("/"); cookie.setMaxAge(-1); return cookie.getString(SysopConstant.FIRST_REQUEST); } /** * 设置第一次访问的标识 */ public static void setFirstRequest(HttpServletRequest request, HttpServletResponse response) { // 需要配置为进程内的域名cookie CookieUtil cookie = new CookieUtil(request, response); String domain = request.getServerName(); // 设置的域名不能带http协议与端口 cookie.setDomain(domain); cookie.setPath("/"); // 设置了该值不会生效 cookie.setMaxAge(-1); cookie.setCookie(SysopConstant.FIRST_REQUEST, SysopConstant.FIRST_REQUEST); } /** * 标识需要清除菜单缓存 * * @param request * @param response */ public static void setClearMenu(HttpServletRequest request, HttpServletResponse response) { // 需要配置为进程内的域名cookie CookieUtil cookie = new CookieUtil(request, response); String domain = request.getServerName(); // 设置的域名不能带http协议与端口 cookie.setDomain(domain); cookie.setPath("/"); // 设置了该值不会生效 cookie.setMaxAge(-1); cookie.setCookie("clearMenu", "clearMenu"); } /** * 删除第一次访问设置的缓存 */ public static void removeFirstRequest(HttpServletRequest request, HttpServletResponse response) { // 需要配置为进程内的域名cookie CookieUtil cookie = new CookieUtil(request, response); String domain = request.getServerName(); // 设置的域名不能带http协议与端口 cookie.setDomain(domain); cookie.setPath("/"); cookie.setMaxAge(0); cookie.deleteCookie(SysopConstant.FIRST_REQUEST); } /** * 获得用户名 * * @return */ public String getUserName() { return cookieUtil.getString(SysopConstant.KEY_USER_NAME_FRONT); } /** * 获得用户呢称 * * @return */ public String getNickName() { return URLDecoder.decode(cookieUtil .getString(SysopConstant.KEY_NICK_NAME_FRONT)); } /** * 获得用户ID * * @return */ public int getUserId() { return cookieUtil.getInt(SysopConstant.KEY_USER_ID_FRONT); } /** * 设置 cookie,浏览器进程有效 * * @param name * - 名称 * @param value * - 值 */ public void setCookie(String name, String value) { cookieUtil.setCookie(name, value); } }
第三步 写一个 校验工具类
package com.gdiex.sts.util; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 权限验证工具类 * @author * */ public class AuthencationHelper { /** * 用于加密用户名的 key */ private static final String HASH_KEY = "$ILKLKOI*-UU&^%GKJ-2EOI-LKKP-JUJKJ9"; /** 一年有多少秒 */ public static final int YEAR_SECONDS = 365 * 24 * 3600; /** * 保存用户名到 cookie * @param response * @param userName - 用户名 */ public static void saveUserName(HttpServletResponse response, String userName, int userId) { if (userName == null) { throw new IllegalArgumentException("userName"); } String code = getCode(userName, userId); CookieUtil cookieUtil = new CookieUtil(null, response); cookieUtil.setDomain(SysopConstant.SYSTEM_DOMAIN); cookieUtil.setPath("/"); cookieUtil.setCookie(SysopConstant.KEY_USER_NAME, userName); cookieUtil.setCookie(SysopConstant.KEY_USER_ID, "" + userId); cookieUtil.setCookie(SysopConstant.KEY_IDENTIFYING_CODE, code); // 保存一个固定时间的 cookie cookieUtil.setCookie(SysopConstant.KEY_GLOBAL_USER_ID, "" + userId, AuthencationHelper.YEAR_SECONDS); } /** * 是否为合法用户 * @param request * @return true - 合法 */ public static boolean isValidUser(HttpServletRequest request) { CookieUtil cookieUtil = new CookieUtil(request, null); cookieUtil.setDomain(SysopConstant.SYSTEM_DOMAIN); cookieUtil.setPath("/"); String userName = cookieUtil.getString(SysopConstant.KEY_USER_NAME); if (userName == null) { return false; } int userId = cookieUtil.getInt(SysopConstant.KEY_USER_ID); String code = cookieUtil.getString(SysopConstant.KEY_IDENTIFYING_CODE); if (code == null) { return false; } String idCode = getCode(userName, userId); return (idCode.equals(code)); } /** * 获得用户名 * @param request * @return */ public static String getUserName(HttpServletRequest request) { CookieUtil cookieUtil = new CookieUtil(request, null); cookieUtil.setDomain(SysopConstant.SYSTEM_DOMAIN); cookieUtil.setPath("/"); return cookieUtil.getString(SysopConstant.KEY_USER_NAME); } /** * 获得验证码 * @param request * @return */ public static String getIdCode(HttpServletRequest request) { CookieUtil cookieUtil = new CookieUtil(request, null); cookieUtil.setDomain(SysopConstant.SYSTEM_DOMAIN); cookieUtil.setPath("/"); return cookieUtil.getString(SysopConstant.KEY_IDENTIFYING_CODE); } /** * 获得用户ID * @param request * @return */ public static int getUserId(HttpServletRequest request) { CookieUtil cookieUtil = new CookieUtil(request, null); cookieUtil.setDomain(SysopConstant.SYSTEM_DOMAIN); cookieUtil.setPath("/"); return cookieUtil.getInt(SysopConstant.KEY_USER_ID); } /** * 返回一个加密后的字符串 * @param userName * @param userId * @return */ public static String getCode(String userName, int userId) { return EncryptUtil.getSHA1(userName + "|" + userId + HASH_KEY); } /** * 删除所有cookie * @param request */ public static void clearAllCookie(HttpServletRequest request,HttpServletResponse response) { CookieUtil cookieUtil = new CookieUtil(request, response); cookieUtil.setDomain(SysopConstant.SYSTEM_DOMAIN); cookieUtil.setPath("/"); cookieUtil.deleteCookie(SysopConstant.KEY_USER_NAME); cookieUtil.deleteCookie(SysopConstant.KEY_USER_ID); cookieUtil.deleteCookie(SysopConstant.KEY_IDENTIFYING_CODE); cookieUtil.deleteCookie(SysopConstant.FIRST_REQUEST); } }
第四步 直接调用即可
FrontAuthencation auth = new FrontAuthencation(request, response); // 保存用户信息到cookie auth.saveUserName(1, PropertyUtils.getProperty(bean, "object.body.userCode").toString(), ""); 简单的思路就是 HttpServletRequest 把请求来的数据 放在指定的域名的cookie下面,以键值对的形式保存,下次需要使用的时候 根据键拿出来校验,通常写在拦截器里面,执行操作之前 先检查用户合法性。
发表评论
-
log4j.xml配置文件
2017-08-15 21:19 495<?xml version="1.0& ... -
java 实现多文件压缩导出操作
2017-06-26 14:28 6791 controller @RequestMapping ... -
java dos窗口打包
2017-02-17 19:22 609指定编码 cmd jar包 > jar -cvf xxx ... -
互联网面试实例
2016-12-01 22:34 01 hibernate 原理机制 2 解释1-2个你最熟悉 ... -
java 枚举 根据key获取value
2016-10-26 14:28 3839package com.utcip.crm.common.co ... -
高并发 生成订单号(一)
2015-12-08 15:31 41001 设置主键自增为何不可取 这样的话,数据库本身是单点, ... -
double 浮点数据精确度
2014-12-29 14:45 828/* * * * * 版权 ... -
Java 实现深拷贝
2014-10-10 11:47 724http://developer.51cto.com/art/ ... -
如何计数一个字符在某个字符串中出现的次数?
2014-08-29 12:00 849如何计数一个字符在某个字符串中出现的次数? 使用 ... -
java 内部类作用分析
2014-08-25 13:46 471http://blog.csdn.net/ilibaba/ ... -
dos窗口 编译java工程
2014-07-22 11:54 345cd sts-web mvn jetty:run ... -
设计权限读写系统的思想
2014-05-26 18:54 802读写权限系统的设计 ... -
java 二进制十六进制互转
2014-05-26 15:15 1910/**将16进制转换为二进制 * @param hexS ... -
java 有小数时返回小数,无小数时返回整型
2014-05-22 15:42 1157/** * 对double类型数据操作 忽略. ... -
java 竟态条件与临界区
2014-05-20 15:15 1056竞态条件 & 临界区 当两个线程竞争同一资源 ... -
java 将 json字符串 返回到调用页面成为json
2014-05-15 18:35 1699@MethodResourceDesc(name = ... -
java 处理 大 json 字符串
2014-05-15 18:31 2560java 代码处理 json 字符串,存在很多种方法,最直接的 ... -
达内到底好不好? 达内培训怎么样? 达内培训效果如何? 达内培训出来好找工作吗?谁来为我负责?
2014-05-14 13:35 144达内到底好不好 达内培 ... -
java 实现生产者消费者模式
2014-05-09 10:20 1198package cosu_pro.pc; impor ... -
java 删除服务器附件
2014-03-19 12:06 582request.getSession().getSer ...
相关推荐
【基于Java Web的超市管理系统】是一个综合性的应用项目,它利用了Java Web技术来实现对小型超市日常运营的数字化管理。这个系统的核心功能是管理用户会员、供应商以及账单等关键信息,支持基本的增删改查操作,从而...
【Java Web图书管理系统源代码详解】 Java Web技术是开发基于Web的应用程序的一种强大工具,尤其在构建企业级应用中有着广泛的应用。这个“图书管理系统”是利用Java Web技术实现的一个典型示例,它包含了数据库的...
【Java Web学生管理系统详解】 Java Web技术是一种广泛应用于构建企业级Web应用的开发平台,它结合了Java语言的强大功能和Web应用的灵活性。本项目基于Java Web的学生管理系统提供了一个简单的实例,适合初学者进行...
这是一个基于Java Web技术的驾校学员管理系统,用于课程设计目的,包含源码和数据库配置文件。系统的核心功能包括学籍管理、体检管理、成绩管理和驾照管理,涵盖了驾校日常运营中的主要环节。 首先,从技术栈来看,...
数据库管理系统通常是存储投票记录的关键组件,可能会使用如MySQL这样的关系型数据库来存储用户投票信息。此外,会话管理也是必不可少的,以确保用户只能投一次票,防止重复投票。这可能通过使用HTTP Session或者...
【Java Web新闻管理系统】是一个基于Java企业版(Java EE)技术构建的应用,旨在提供一个集新闻发布、管理、检索于一体的在线平台。这个项目的核心在于利用Web技术与数据库交互,实现新闻数据的存储、更新和展示。...
java web cookie 详解
【Java Web 图书管理系统】是一种基于Java技术的Web应用程序,旨在提供一个全面的图书管理解决方案。这个系统通常包括用户界面、后端数据库以及中间层服务,用于处理图书的添加、查询、借阅、归还等一系列操作。对于...
8. **Session/Cookie管理**:用于跟踪用户购物车状态和登录信息。 9. **安全性**:可能涉及到HTTPS、CSRF令牌、XSS防护等安全措施。 10. **Tomcat服务器**:作为Java Web应用的部署环境。 11. **版本控制**:如Git,...
这个项目的核心是使用Java Web技术栈来构建一个功能完善的交友系统,其中包括用户注册、登录、个人信息管理、好友查找与添加、消息交互等功能。通过分析这个项目的源代码,我们可以深入理解Java Web开发的基本流程和...
通过学习和分析这个Java教材管理系统,开发者可以掌握完整的Web应用开发流程,从需求分析到设计、编码、测试和上线。同时,对于理解Java企业级应用的架构设计、数据库管理和Web交互机制等方面,都有极大的帮助。对于...
2. Session和Cookie管理:用于跟踪用户状态,如登录状态,通过Session存储用户信息,Cookie则可以设置用户的一些偏好。 四、前端界面 前端界面通常由HTML、CSS和JavaScript组成。HTML定义页面结构,CSS控制样式,...
### 关于Java应用Cookie知识点详解 #### 一、Cookie简介 Cookie是一种常用的技术,用于存储用户的访问信息。在Web开发中,服务器可以将少量的信息发送到客户端浏览器,并存储在客户端,这种信息就是Cookie。当...
《Java Web电子商务管理系统详解》 Java Web技术在电子商务领域的应用广泛且深入,它以其稳定、高效和可扩展性成为构建大型商务系统的重要选择。本文将围绕"java web电子商务管理系统.rar"这一主题,深入探讨其中...
【Java Web课程设计:机房管理系统】 在Java Web开发领域,课程设计往往旨在让学生实践理论知识,提升实际操作技能。本机房管理系统就是一个典型的例子,它涵盖了多种关键技术和概念,对于学习者来说具有很高的学习...
总结来说,"基于Java web的书店系统"是一个综合性的项目,涵盖了Web开发的多个方面,包括前端交互、后端服务、数据库设计、用户管理、支付集成等,对学习和提升Java Web开发技能非常有帮助。通过实践这个项目,...
Cookie 是一种小型文本文件,用于存储 Web 应用程序的状态信息。当用户访问某个网站时,该网站可能会将 Cookie 信息写入到用户的浏览器中,以便下次用户访问该网站时能够快速识别用户的身份。 为什么需要模拟 ...
在本节"【Java web实战员工管理系统】第十一讲"中,我们将深入探讨如何利用Java Web技术构建一个功能完备的员工管理系统。这个系统的核心目标是实现对企业内部员工信息的有效管理和操作,包括添加、删除、修改和查询...
Java Web BBS论坛系统是一种基于Java技术构建的网络交流平台,它允许用户进行在线讨论、分享信息和资源,是Web应用程序的一种典型应用。这个系统通常包括用户注册与登录、主题发布、帖子回复、搜索功能、用户管理等...