java Web(4)

Web 应用程序状态管理

  通过隐藏表单域 hidden,cookie,session,重写URL来实现;

  cookie存在于客户端,浏览器关闭时失效

  cookie原理:服务器在响应请求时将一些数据以“键-值”对的形式通过响应信息保存在客户端

  Servlet中提供了如下一系列操作Cookie的API
  Cookie(name, value):构造方法用于创建一个或多个Cookie
  setMaxAge(int lifetime):设置Cookie的过期时间(以秒为单位)。默认值为负值(Cookie将在浏览器关闭时过期)
  getMaxAge():获取Cookie的过期时间。
  getName():获取Cookie的名字
  setValue(String value):指定Cookie的值。
  getValue():获取Cookie的值

  要将Cookie发送到客户端,Servlet应该按照下列的操作步骤执行:
  创建一个或多个Cookie,使用构造方法指定Cookie的名字和值
  使用setValue方法为Cookie设置属性值
  使用HttpServletResponse对象的addCookie()方法将Cookie插入到响应头中
  要读取客户端传入的Cookie,Servlet执行下列操作步骤:
  使用HttpServletRequest对象的getCookies方法返回一个Cookie对象数组
  Servlet遍历该数组(调用getName()方法),直到找到与名称相匹配的Cookie值

  

  Session存在于服务器

  Session原理 

  服务器可以为客户端创建并维护一个Session对象,用于存放数据。
  在创建Session对象的同时,服务器将会为该 Session对象产生一个唯一编号,这个编号称之为SessionID
  服务器以Cookie的方式将SessionID存放在客户端。
  当浏览器再次访问该服务器时,会将SessionID作为Cookie信息带到服务器,服务器可以通过该SessionID检索到以前的Session对象,并对其进行访问

  创建Session

  HttpSession session = request.getSession();

  HttpSession接口常用的一些方法
  setAttribute(java.lang.String, java.lang.Object):在Session对象中用一个名字绑定一个对象。
  getAttribute(java.lang.String):通过名字获取Session对象中保存的对象。
  removeAttribute(java.lang.String):在Session中删除与一个名字对应的对象。
  getCreationTime():返回第一次创建会话的时间。
  getLastAccessedTime():返回容器最后一次得到该会话ID的请求时间。
  setMaxInactiveInterval(int interval):对于会话指定客户请求的最大间隔时间,以秒为单位。-1表示永不过期
  getMaxInactiveInterval(int interval):返回客户请求的最大间隔时间。
  invalidate():会话结束,当前存在在会话中的所有会话属性也会解除绑定。
  getId():此方法返回每个session唯一的标识

  

  Session的存在依赖于cookie

  当cookie被禁用时,采用URL重写,及在地址后面添加SessionId;

  URL重写

  response.encodeURL()
  response.encodeRedirectURL(“/lovobook/sucess.html” )

  总结:  

  HTTP协议使用的是无状态的连接,连接只针对一个请求/响应
  状态管理方案:表单隐藏字段、Cookie、Session、URL重写
  Cookie是Web服务器发送到客户端浏览器并保存的简短文本信息
  Session对象就是服务器为客户端创建并维护的用于存放客户状态数据的对象
  用户会禁用Cookie。这时我们可以使用URL地址重写来解决
  通过HttpServletResponse的addCookie方法将该Cookie信息添加到响应信息中
  Session对象是某个Servlet调用HttpServletRequest.getSession()这样的语句时才被创建
  Session对象是保存在服务器端,浏览器关闭时并不意味着Session对象被删除
  Session只认SessionID不认人
  应当尽量使用维护时间短的域对象
  在向客户返回第一个响应时,会同时尝试设置Cookie和URL重写两种做法

  

时间: 2024-10-13 17:22:05

java Web(4)的相关文章

java web环境搭建

1. 根据自己电脑版本下载对应的tomcat和eclipse安装包 2. 在eclipse中找到preferences 找到 runtime environments 找到add 3. 选择tomcat的版本 next 4. 选择browse  tomcat解压的地方选择对应的版本,最后finsih 5. 数据库方面 只需要下载Mysql的安装包即可. 最后完成了java web环境的搭建.

Java Web -- Servlet(1) 必备知识

学习Java WEB开发必备的基本概念: 1.WEB 本意是蜘蛛网和网的意思,在网页设计中我们称为网页的意思.现广泛译作网络.互联网等技术领域.表现为三种形式,即超文本(hypertext).超媒体(hypermedia).超文本传输协议(HTTP)等. 2.静态网页(可简单理解为html) 是指网页的内容是固定的,不会根据浏览器者的不同需求而改变.(实实在在保存在服务器上的文件) 3.动态网页 是指在接到用户访问要求后动态生成的页面,页面内容会随着访问时间和访问者发生变化(并不是独立存在于服务

[Java Web]2\Web开发中的一些架构

1.企业开发架构: 企业平台开发大量采用B/S开发模式,不管采用何种动态Web实现手段,其操作形式都是一样的,其核心操作的大部分都是围绕着数据库进行的.但是如果使用编程语言进行数据库开发,要涉及很多诸如事务.安全等操作问题,所以现在开发往往要通过中间件进行过渡,即,程序运行在中间件上,并通过中间件进行操作系统的操作,而具体一些相关的处理,如事务.安全等完全由中间件来负责,这样程序员只要完成具体的功能开发即可. 2.Java EE架构: Java EE 是在 Java SE 的基础上构建的,.NE

在java web项目中集成webservice

公司要求在项目中加入webservice服务,因为项目中使用了spring框架,所以在这里使用与spring兼容性较好的cxf来实现 cxf所需jar包 spring的jar包就不贴了 一:创建webservice服务器 1)创建一个服务接口 package com.service; import javax.jws.WebParam; import javax.jws.WebService; @WebService public interface IHelloWorld { public S

Java Web项目中缺少Java EE 6 Libraries怎么添加

具体步骤如下: 1.项目名称上点击鼠标右键,选择"Build Path-->Configure Build Path-->Java Build Path" 2.单击"Add Library..." 3.选择"User Library",单击"Next" 4.单击"User Libraries...",选择需要的Java EE 6 Libraries Java Web项目中缺少Java EE 6

java web 程序---购物车选商品,购买,付款

虚函数使用的时机 为什么虚函数不总是适用? 1. 虚函数有事会带来很大的消耗: 2. 虚函数不总是提供所需的行为: 3. 当我们不考虑继承当前类时,不必使用虚函数. 必须使用虚函数的情况: 1. 当你想删除一个表面上指向基类对象,实际却是指向派生类对象的指针,就需要虚析构函数. java web 程序---购物车选商品,购买,付款,布布扣,bubuko.com

使用Struts框架的Java Web项目中的两个Session的区别和常见的Session取值为空的错误

我的百度知道回答,感觉这个知识很有意义,专门贴出来. 不过还有待验证的地方,就是 ActionContext.getContext().getSession("name", "Tom"); //如果在JSP中通过 EL 或者 Struts2 标签怎么显示? 以下是回答正文. 很多初学Java Web的同学因为使用 Strut2框架而分不清两个 Session的区别. 1.   JSP/Servlety有个原生的 session 对象,这是9大内置对象中的一个,书上写

java Web(2)

Servlet与web容器的配合: 1)客户端向Web服务器发起一个HTTP请求. 2)HTTP请求被Web服务器接受,如果请求的是静态页面,则由Web服务器负责处理.如果请求的是Java Web组件(Servlet或者JSP),则移交给Web容器.Web容器可以在主               机的同一个进程.不同的进程或其他的Web服务主机的进程中启动. 3)Web容器根据Servlet的配置文件确定调用的具体Servlet类,并把request对象.response对象传给它. 4)Ser

java web 数据库开发1

一个完整的数据库部署架构通常由客户端和服务器端两部分组成.客户端封装数据库请求将其发送给服务器端,服务器端执行完毕将其及结果返回给服务器端. 以mysql为例 介绍java应用程序对数据库的访问 JDBC意义:应用程序通过调用统一接口实现对任意数据库的访问,为我们屏蔽了客户端与服务器端交互协议的实现细节. 对java而言,JDBC是一个类库,对数据库而言,JDBC是接口规范. 有了JDBC,应用程序变得更加简单,提高了程序开发的效率,使java web面向不同的数据库时,具有跨平台性,基于JDB

使用InteIIiJ IDEA开发Java web 项目

1.介绍 IntelliJ IDEA是一款非常强大的集成开发环境,基本上可以做任何事情,它的强大大大降低了我们的工作量,提高了工作效率.那么它如何开发Java web呢?下面就为大家介绍使用IntelliJ IDEA开发Java web. 首先去官网下载安装包:http://www.jetbrains.com/idea 它有两个版本Ultimate(收费)和Community(免费),作者选择的是Ultimate 2.安装 点击下载即可,然后开始安装,一直Next就可以了,途中可以选择创建一个6