- 浏览: 453842 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wjs876046992:
后来我下载了Eclipse Indigo版本,同样操作却成功了 ...
myeclipse2014中安装spket-1.6.23 -
wjs876046992:
我的是myEclipse2014,将那两个文件夹拷贝到drop ...
myeclipse2014中安装spket-1.6.23 -
lucky8060:
应该不是每次请求都产生一个action吧?应该是每个sessi ...
Struts2 action的单例与多例
2.验证码:
createcode代码如下:
package com.ru.dao; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.PrintWriter; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class CreateCode extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 7.禁止浏览器缓存随机图片 response.setDateHeader("Expires", -1); response.setHeader("Cache-Control", "no-cache"); response.setHeader("Pragma", "no-cache"); // 6.通知客户机以图片方式打开发送过去的数据 response.setHeader("Content-Type", "image/jpeg"); // 1.在内存中创建一副图片 BufferedImage image = new BufferedImage(60, 30, BufferedImage.TYPE_INT_RGB); // 2.向图片上写数据 Graphics g = image.getGraphics(); // 设背景色 g.setColor(Color.BLACK); g.fillRect(0, 0, 60, 30); // 3.设置写入数据的颜色和字体 g.setColor(Color.RED); g.setFont(new Font(null, Font.BOLD, 20)); // 4.向图片上写数据 String num = makeNum(); //这句话就是把随机生成的数值,保存到session request.getSession().setAttribute("checkcode", num); //通过session就可以直接去到随即生成的验证码了 g.drawString(num, 0, 20); // 5.把写好数据的图片输出给浏览器 ImageIO.write(image, "jpg", response.getOutputStream()); } //该函数时随机生成7位数字 public String makeNum() { Random r = new Random(); //9999999 可以生成7位 String num = r.nextInt(9999) + ""; StringBuffer sb = new StringBuffer(); //如果不够4位,前面补零 for (int i = 0; i < 4 - num.length(); i++) { sb.append("0"); } num = sb.toString() + num; return num; } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } 。。。。。。。。。。。。。。。。。。。。。。。 out.println("验证码 :<input type='input' name='vcode'><img src='/verificationcode/CreateCode'>");验证码的使用。 验证: public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); request.setCharacterEncoding("utf-8"); String userid=request.getParameter("userid"); String password=request.getParameter("password"); String vcode=request.getParameter("vcode"); //获取session HttpSession session=request.getSession(); String vcodenum=(String)session.getAttribute("checkcode"); if (session!=null&&vcode.equals(vcodenum)) { request.getRequestDispatcher("/logsuccess").forward(request, response); } else{ request.setAttribute("errinf", "vcodeerror"); request.getRequestDispatcher("/login").forward(request, response); System.out.println("错误"); } }
3.如果在ie中访问一个web,创建了一个session,我们想在关闭ie后再打开ie浏览器时得到这个session,
那么需要将ie中创建的session的JSESSIONID存储到cookie中去
4.加入禁用了cookie,那么浏览器无法从cookie中得到jsessionid,就无法得到原来的session,我们可以认为的在url中传递jsessionid。(因为jsessionid存在为cookie中。但是禁用cookie后,无法保存 jsessionid 的cookie,所以当浏览器再发送请求时无法得到 jsessionid ,也就无法得到原来的session)
那么需要将ie中创建的session的JSESSIONID存储到cookie中去
需要注意的是。当创建一个session服务器就会将这个session的 JSESSIONID 传到cookie中。但是由于这个cookie没有设置时间。所以当关闭浏览器,cookie就会消失。
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); //获取session HttpSession httpsession=request.getSession(); //给session赋值 Users user=new Users(); user.setUsername("如"); user.setPassword("123456"); httpsession.setAttribute("userinf",user); //将Jsessionid放到cookie中,这样关闭浏览器,在打开也可以直接访问创建好的session,用其他浏览器无法访问这个cookie Cookie cookie=new Cookie("JSESSIONID",httpsession.getId()); cookie.setMaxAge(30*60); response.addCookie(cookie); //session的生命周期默认是30分钟 //httpsession.setMaxInactiveInterval(60); out.println("session 'username' 已经创建<a href='/MySession1/session2'>跳转到session2</a>"); }
4.加入禁用了cookie,那么浏览器无法从cookie中得到jsessionid,就无法得到原来的session,我们可以认为的在url中传递jsessionid。(因为jsessionid存在为cookie中。但是禁用cookie后,无法保存 jsessionid 的cookie,所以当浏览器再发送请求时无法得到 jsessionid ,也就无法得到原来的session)
//保证可以得到jsessionid,要先调用session request.getSession(); //url地址重写 String url=response.encodeURL("/shopingcart/BuyBook?bookid="+books.getBookid()); for (Books books : al) { out.print("<strong>"+books.getBookname()+"</strong><a href='"+url+"'> 点击购买</a><br/>"); }
5、session的持久化
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://zhaobest.blog.51cto.com/973281/957985
1.修改的文件: $\Tomcat_HOME\conf\context.xml
2.在context.xml文件根节点下面添加以下内容:
- <Manager className="org.apache.catalina.session.PersistentManager" >
- debug=0
- saveOnRestart="true"
- maxActiveSession="-1"
- minIdleSwap="-1"
- maxIdleSwap="-1"
- maxIdleBackup="-1"
- <Store className="org.apache.catalina.session.FileStore" directory="D:/" />
- </Manager>
3.如果session中存有javabean对象,需要该javabean实现Serializable接口、且包含空构造函数。
发表评论
-
linux安装jdk
2014-12-18 13:33 865注:JAVA_HOME=/usr/java/jdk1 ... -
linux启动jar程序-后台执行方法
2014-06-11 11:52 2078例如有我自己写了一个jar程序可以像下面这样执行: ... -
java程序以及打成jar加载log4j.properties的方法
2014-06-10 11:34 1816这个方法可以防止jar运行时找不到配置文件 1、创建 ... -
equals和==以及hashcode的区别
2014-05-10 12:35 8231、== 比较两个对象的地址,地址相同返回true ... -
使用class创建对象工程
2014-04-29 11:38 860通过class类创建类实例(泛型) 代码: packag ... -
java类加载的过程
2014-04-29 11:35 806一个java文件从被加载 ... -
java获得class对象的3中方法
2014-04-29 10:33 808Class类(在java.lang包中 ... -
java动态加载jar为什么使用Thread.getContextClassLoader()
2014-04-28 16:56 2126这个问题经常出现在编写框架代码 , 需要动态加载很多类和资 ... -
jvm和类
2014-04-28 11:45 743当执行java程序时,jvm会为该程序启动 ... -
java接口的意义
2013-07-19 15:08 8311、(举个例子)假如有一个Service类,一个Da ... -
java各种集合的性能对比
2013-07-16 16:32 805注:通常情况下ArrayList性能都要优于linked ... -
collection集合继承
2013-07-04 09:16 836f -
基本类型变量和引用型类型变量
2013-06-18 17:03 9781、所有局部变量都放在栈内存中保存,不管其是基本类型的变量 ... -
key证书管理
2013-04-09 11:06 17161.根证书:就是服务器端密钥库生成的证书。 根证书 ... -
list列表分页
2013-03-31 18:20 821/** * 从list中获取分页后的list。 * ... -
static变量和方法的生命周期
2013-03-06 16:45 34161.static变量对每个类来说都只有一份存储空间,而非s ... -
各进制转换bit(位)bytes(字节)M、G、TB、PB
2012-12-06 10:08 381071Byte = 8 Bit 1KB = 1,0 ... -
字符串的split方法
2012-11-26 22:03 11181.一个简单实例 package string; ... -
多线程同步问题
2012-11-26 15:32 8641.Resource.java package ... -
java线程
2012-11-23 14:47 893一、线程的两种实现方式,一是继承Thread类,二是实现Run ...
相关推荐
Servlet Session机制详解,如题,详细描述Session的原理,及使用方法,附部分代码
### Cookie与Session机制详解 #### 一、Cookie与Session的概念及区别 在Web开发中,为了保持用户的状态信息,通常会用到两种技术:Cookie和Session。这两种技术都是用来跟踪用户的浏览活动,但它们的工作原理有所...
Cookie、Session机制详解 Cookie机制是Web程序中常用的技术,用来跟踪用户的整个会话。Cookie通过在客户端记录信息确定用户身份。Cookie机制可以弥补HTTP协议的无状态特性,使服务器可以从客户端获取用户信息,以便...
【跨服务器session应用详解】 在Web开发中,session机制是一种至关重要的技术,它允许服务器在多个请求之间跟踪用户的状态,从而实现动态交互和个性化服务。本文将深入探讨session的工作原理,以及如何在Java Web...
SpringBoot 中 Session 超时原理说明 在 SpringBoot 中,Session 超时是指在一定时间内没有任何操作,Session 就会超时失效,导致用户需要重新登录才可以继续访问页面。这是因为 Session 的超时时间是有限制的,...
### Session详解 #### 一、引言 在Web开发领域,`Session`是一个核心概念,尤其是在涉及用户状态管理和个性化体验的场景中。虽然Session的概念和技术已经存在多年,但很多开发者仍对其工作原理和最佳实践不够熟悉...
### Session详解:深入探讨Web应用中的状态管理 #### Session的本质及其在Web开发中的角色 Session,中文常译为...然而,这也要求开发者对Session的工作原理有深入的理解,以便在实际项目中做出明智的设计决策。
### Cookie-Session机制详解 #### 一、引言 在Web开发中,为了实现服务器与客户端之间的会话管理,常用的技术之一就是Cookie-Session机制。本文将深入剖析Cookie-Session的工作原理及其在实际应用中的作用。 ####...
根据提供的文件信息,以下是对文件《Cookie,Session,Token详解.pdf》中知识点的详细解读: 1. Cookie的相关知识 1.1 Cookie不是缓存。它是由服务器创建并存储在客户端的一小段文本信息,通常以字典(键值对)的...
Cookie-Session 机制详解 Cookie 机制是 Web 程序中常用的技术,用来跟踪用户的整个会话。Cookie 通过在客户端记录信息确定用户身份。Cookie 的工作原理是当客户端请求服务器,如果服务器需要记录该用户状态,就...
#### 二、Session 的工作原理 - **Session ID**:服务器会为每个用户分配一个唯一的标识符(Session ID),用来区分不同的用户会话。 - **Session 数据存储**:服务器端会创建一个存储空间来保存每个用户的会话数据...
在本文中,作者详细解释了Session的概念、工作原理以及在Java Web应用中的实现方式,并对常见的问题进行了解答。同时,作者也探讨了HTTP协议、Cookie机制以及它们与Session机制的关系。最后,文章还讨论了跨应用程序...
### PHP5 Session 详解 #### 一、HTTP 协议与 Session 的必要性 HTTP(HyperText Transfer Protocol)协议作为 Web 服务器与客户端之间通信的基础协议,其本质特征之一是无状态性。这意味着每次 HTTP 请求都是独立...
### Session与Cookie的区别详解 #### 一、Session与Cookie的基本概念 **Session**与**Cookie**都是Web开发中用于在客户端与服务器之间维持状态的重要工具。它们各自具有独特的特性和应用场景,下面我们将深入探讨...
本文将深入讲解JSP中Session的原理和使用方法,并对比它与Cookie的区别。 首先,我们来了解Session的基本概念。Session是服务器端的一种机制,用于存储特定用户会话期间的信息。每当用户打开浏览器访问网站,服务器...
【Session机制详解】 Session机制是Web应用程序中用于保持客户端与服务器之间状态的一种技术。在HTTP协议下,由于其无状态的特性,每次请求之间是相互独立的,这意味着服务器无法识别同一用户的不同请求。为了实现...
### Session详解 #### 一、术语session 在讨论session机制之前,有必要先澄清“session”这一术语的不同含义。在IT领域尤其是Web开发中,“session”的概念常常被提及,但其确切含义却因上下文的不同而有所变化。 ...
### Session与Cookie详解 #### 一、Session与Cookie的基本概念 **Session** 和 **Cookie** 是Web开发中用于保持客户端与服务器之间会话状态的重要技术。由于HTTP协议本身是无状态的,即服务器无法自动记录客户端的...