Session对象的获取有两种: ●  有参方法: HttpSession request.getSession(boolean isNew) 参数: true:获取一个Session对象,如果之前Session存在,则拿来使用,如果之前不存在,则创建一个新的使用. false:获取一个Session对象,如果之前Session存在,则拿来用,如果不存在则返回null. ●  无参方法: HttpSession request.getSession() 推荐使用这种方法获取Session对象,其…
方式一:修改所有的session默认时长,修改tomcat目录下的conf文件夹下的web.xml文件. <session-config> <session-timeout>希望存活的时长,单位是分钟</session-timeout> </session-config> 方式二:修改单个session存活时长: 使用session对象,调用setMaxInactiveInterval(int 秒).…
案例需求:编写一个servlet,可以向session中存放一个消息,再编写一个servlet可以从session取得session中存放的这个消息. 案例实现: package com.xdl.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpSe…
Servlet提供了HttpSession接口,该接口提供了一种跨多个页面请求或访问网站时识别用户以及存储有关用户信息的方式. Servlet容器使用这个接口来创建一个HTTP客户端和HTTP服务器之间的session会话.会话持续一个指定的时间段,跨多个连接或页面请求. Session技术原理 当浏览器访问服务器时,我们可以操作创建Session,在Session创建时,服务器会自动创建一个Cookie,发送给客户端,用于存储sessionid,这个Sessionid的值是唯一的! 当浏览器再…
1.描述Cookie的作用 Cookie是网站保存在浏览器客户端的信息,也就是说保存在访客的机器里的变量,一般随着HTTP头发送到客户端.在Cookie生效之后及失效之前,客户每次发出页面请求的时候,都会把Cookie -块发送到服务器,只要我们针对它进行相应的处理,就可以改变它的值. 2.描述Session的作用 Session的中文译名叫做”会话”,其本来的含义是指有始有终的一系列动作/消息,比如用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间…
●  public Object getAttribute(String name) 该方法返回在该session会话中具有指定名称的对象,如果没有指定名称的对象,则返回null. ●  public void setAttribute(String name,Object value) 该方法使用指定的名称绑定一个对象到该session会话. ●  public void removeAttribute(String name) 该方法将从该session会话移除指定名称的对象. ●  pub…
以下是在Servlet中操作Cookie时可使用的有用的方法列表 ●  public void setDomain(String pattern) 该方法设置cookie适用的域,例如 itxdl.cn ●  public String getDomain() 该方法获取cookie适用的域,例如 itxdl.cn ●  public void setMaxAge(int expiry) 该方法设置cookie过期的时间(以秒为单位),如果不这样设置,cookie只会在当前session会话中持…
操作Cookie时,需要注意路径问题: 设置操作:任何路径都可以设置Cookie,但是有时我们也是用设置进行替换Cookie和删除Cookie(maxAge=0)! 替换:只能由完全相同的路径来操作!父路径,子路径都不可操作! 删除:只能由完全相同的路径来操作!父路径,子路径都不可操作! 读取操作: 子路经的Cookie,父路径无法读取! 父路径的Cookie,子路经可以读取! 例如:拥有如下三个Servlet: a.  http://localhost/项目名/xx/a.do 域名:local…
Tomcat作为Web服务器,对Cookie提供了良好的支持.那么,运行在Tomcat的Servlet该如何访问Cookie呢?幸运的是,Servlet无需直接和HTTP请求或响应中的原始Cookie数据打交流,这项工作由Servlet容器来完成.Java Servlet API为Servlet访问Cookie提供了简单易用的接口,Cookie用javax.servlet.http.Cookie类来表示,每个Cookie对象包含一个Cookie名字和Cookie值. 通过Servlet设置Coo…
Cookie使用HTTPHeader传递数据.Cookie机制定义了两种报头,Set-Cookie报头和Cookie报头.Set-Cookie报头包含于Web服务器的响应头(ResponseHeader)中,Cookie报头包含在浏览器客户端请求头(RequestHeader)中.其原理如下: Cookie 1.客户端在浏览器的地址栏中键入Web服务器的URL,浏览器发送读取网页的请求. 2.服务器接收到请求后,产生一个Ser-Cookie报头,放在HTTP报文中一起回传客户端,发起一次会话.…
Cookie的英文原意是“点心”,它是在客户端访问Web服务器时,服务器在客户端硬盘上存放的信息,好像是服务器送给客户的“点心”.服务器可以根据Cookie来跟踪客户状态,这对于需要区别客户的场合(如电子商务)特别有用. 为了便于直观的理解Cookie的作用,可以用健身馆向会员发送的会员卡来做比方.健身馆首先向来报名的客户发送一张会员卡,会员卡上存储了客户的编号.姓名和照片等信息.以后每次客户到健身馆来健身,先要出示会员卡,健身馆依据会员卡的信息来判断是否允许客户健身. 以上会员卡就类似于服务器…
●  数据存储在服务器,安全. ●  session能保存Object类型数据,也就是说能存储任意数据. ●  可存储的数据大小,理论上是无限制的. ●  因为数据存储在服务器端,当用户比较多时,会占用服务器大量的内存空间,服务器资源很容易被耗尽.…
Cookie技术存储的数据类型只能是字符串,且不支持中文 ●  保存的数据大小有限,4kb ●  太依赖用户浏览器的设置,用户可以禁用Cookie! ●  数据存储在客户端的文本文件中,不安全,不建议存储敏感数据! String转换后的文本 = URLEncoder.encode(正常的文本, "utf-8"); 在读取Cookie时,需要将url编码,转换为正常文字: String 正常文字 = URLDecoder.decode(url编码文字, "UTF-8"…
Java Servlet是运行在带有支持Java Servlet规范的解释器的web服务器上的Java类. Servlet可以使用javax.servlet和javax.servlet.http包创建,它是Java企业版的标准组成部分,Java企业版是支持大型开发项目的Java类库的扩展版本. 这些类实现Java Servlet和JSP规范.在编写本书时,Servlet的最新版本是4.0,JSP的最新版本是2.3. 在javax.servlet包中定义了Servlet接口及相关的通用接口和类:在…
HTTP协议是无状态的,我们的客户端与服务器的每一次请求与响应,我们服务器都没有记忆能力将客户端与服务器的多次交互数据进行存储与管理共有两种技术实现: ●  基于客户端实现:Cookie,将状态保存在客户端中 ●  基于服务器实现:Session,将状态保存在服务器中…
很多情况下,需要传递一些信息,从浏览器到Web服务器,最终到后台程序.浏览器使用两种方法可将这些信息传递到Web服务器,分别为GET方法和POST方法. 1.GET方法 GET 方法向页面请求发送已编码的用户信息.页面和已编码的信息中间用“?”字符分隔,如下所示: http://www.test.com/hello?key1=value1&key2=value2 GET方法是默认的从浏览器向Web服务器传递信息的方法,它会产生一个很长的字符串,出现在浏览器的地址栏中.如果您要向服务器传递的是密码…
在使用原生的Servlet进行Web应用开发时经常会遇到一些中文乱码问题,造成乱码问题的原因只有一个:即客户端与服务端的字符编码不一致所导致的. 请求参数乱码问题 服务器端获取客户端传递过来的数据出现乱码的问题(即使用get获取post向服务器发送请求时出现乱码): get与post请求的乱码处理时不一致的,当get请求时,其传递给服务器的数据时附加在URL地址之后的:而post的请求时,其传递给服务器的数据是作为请求正文传递给服务器. ●  post请求的乱码处理: 用户在表单中填写的内容在请…
随着网络技术的不断发展,单机的软件程序已难以满足网络计算机的需求.为此,各种各样的网络程序开发体系结构应运而生.其中,运用最多的网络应用程序开发体系结构可以分为两种,一种是基于客户端/服务器的C/S结构,另一种就是基于浏览器/服务器的B/S结构.下面将对这两种结构进行介绍. C/S体系结构介绍 C/S是Client/Server的缩写,即客户端/服务器结构.在这种结构中,服务器通常采用高性能的PC机或工作站,并采用大型数据库系统(如Oracle或SQL Server),客户端则需要安装专用的客户…
在Internet中,一个Web应用可能被来自西面八方的客户并发访问(即同时访问),而且有可能这些客户并发访问的是Web应用中的同一个Servlet,Servlet容器为了保证能同时相应多个客户端要求访问的同一个Servlet的HTTP请求,通常会为每个请求分配一个工作线程,这些工作线程并发执行同一个Servlet对象的service()方法. 当多个线程并发执行同一个Servlet对象的service()方法时,可能会导致并发问题. 例:下面的案例用于演示导致并发问题的情形. public c…
Servlet对象由Servlet容器创建,并且Servlet对象的service()方法也由容器调用,一个Servlet对象可否直接调用另一个Servlet对象的service()方法呢?答案是否定的,因为一个Servlet对象无法获得另一个Servlet对象的引用. Web应用在响应客户端的一个请求时,有可能响应过程很复杂,需要多个Web项目组件共同协作,才能生成响应结果.尽管一个Servlet对象无法直接调用另一个Servlet对象的service()方法,但Servlet规范为Web组件…
Servlet的定义 Java Servlet是运行在Web服务器或应用服务器上的程序,它是作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层. 使用Servlet,可以收集来自网页表单的用户输入,呈现来自数据库或者其它源的记录,还可以动态创建网页. Java Servlet通常情况下与使用CGI(Common Gateway Interface,公共网关接口)实现的程序可以达到异曲同工的效果.但是相比于CGI,Servlet有以下几点优势: ●  性…
在Java语言中,局部变量和实力变量有着不同的作用于,它们的区别如下: 局部变量在一个方法中定义,每当一个线程执行局部变量所在的方法时,在线程的堆栈中就会创建这个局部变量,当线程执行完该方法,局部变量就会结束生命周期,如果有多个线程同时执行该方法,那么每个线程都拥有自己的局部变量. 实例变量在类中定义.类的每一个实例都拥有自己的实例变量,如果一个实例结束生命周期,那么属于它的实例变量也就结束生命周期.如果有多个线程同时执行一个实例的方法,而这个方法会访问一个实例变量,那么这些线程访问的是一个实例…
关于servlet会话跟踪,一搜都能搜出很多.我也不免落入俗套,也总结了一把.希望我所总结的知识尽量是知识海洋里的一汪清泉.能帮助到我自己和哪怕一个人,那也是值得的. 故事由来: 我们知道,http协议是个无状态的协议,所谓无状态就是指此时刻我们的状态是保持连接,下一刻我们的状态可能就是断开连接,状态是不稳定的,这就导致很多用户在上网时遇到问题,比如购物,我添加几次商品到购物车,如果没有会话跟踪,那么这些商品是没办法添加到一个购物车中的.再比如登录,每次访问同一个网站时,我每次都要输入用户名和密…
在MVC的WebApi中默认是没有开启Session会话支持的.需要在Global中重写Init方法来指定会话需要支持的类型 public override void Init() { PostAuthenticateRequest += MvcApplication_PostAuthenticateRequest; base.Init(); } void MvcApplication_PostAuthenticateRequest(object sender, EventArgs e) { H…
先调用request的getSession()方法获取一个HttpSession的对象,然后将这个对象进行强制类型转换成原本封装的对象,这样就能获取Session对象中的对象了 1.调用request的getSession()方法 HttpSession session = request.getSession(); 2.强制类型转换 User user = (User) session.getAttribute("session_user"); Session注销后,浏览器后退仍显示…
Servlet 标签 : Java与Web 会话跟踪 HTTP本身是"无状态"协议,它不保存连接交互信息,一次响应完成之后即连接断开,下一次请求需要重新建立连接,服务器不记录上次连接的内容.因此如果判断两次连接是否是同一用户, 就需要使用会话跟踪技术来解决.常见的会话跟踪技术有如下几种: URL重写: 在URL结尾附加会话ID标识,服务器通过会话ID识别不同用户. 隐藏表单域: 将会话ID埋入HTML表单隐藏域提交到服务端(会话ID不在浏览器页面显示). Cookie: 第一次请求时服…
会话只是指一段指定的时间间隔. 会话跟踪是维护用户状态(数据)的一种方式.它也被称为servlet中的会话管理. Http协议是一个无状态的,所以我们需要使用会话跟踪技术来维护用户状态. 每次用户请求服务器时,服务器将请求视为新请求. 所以需要保持一个用户的状态来识别特定的用户. HTTP是无状态的,这意味着每个请求被认为是新的请求. 为什么使用会话跟踪? 因为需要用于识别特定的用户. 会话跟踪技术 会话跟踪中使用的技术有四种: Cookies 隐藏表格域 网址重写 HttpSession Co…
一.会话跟踪: 不管操作多少功能,都是与当前登录用户相关的信息,当前的登录用户始终没有改变,也就是用户名和密码都没有丢失.但HTTP协议是一个无状态的协议,当一个客户向服务器发出请求(request),在服务器返回响应(response)后,连接就关闭了.这时,在服务器端不保留连接相关的信息,因此当下一次请求连接时,服务器已没有以前连接的信息了,也就无法判断这一次连接和以前的连接是否属于同一客户,也就是说Web服务器无法跟踪客户状态.在 Servlet 规范中,常用以下两种机制完成会话跟踪: a…
1.请说明cookie.request.session.application的作用域和声明周期? 并说明它们适用与什么场景? request的生命周期是一次请求.可以用于JSP表单提交数据. session会话可以设置它的超时时间,Tomcat中的默认时间为30分钟,session对象的典型应用时用来对用户的身份进行验证,进而进行权限设置. cookie存放的载体在客户端的浏览器中,生命周期默认时根据服务器返回的Set-Cookie头设置的,共两大类: 会话cookie:浏览器一关闭就清除了.…
JSP内置对象定义 JSP提供了由容器实现和管理的内置对象,也可以称之为隐含对象,这些内置对象不需要通过JSP页面编写来实例化,在所有的JSP页面中都可以直接使用,它们起到了简化页面的作用,JSP的内置对象广泛应用于JSP的各种操作中. JSP九大内置对象 由于JSP使用Java作为脚本语言,所以JSP将具有强大的对象处理能力,并且可以动态创建Web页面内容.但Java语法在使用一个对象前,需要先实例化这个对象,这其实是一件比较繁琐的事情.为了简化开发,JSP提供了一些内置对象,用来实现很多JS…