jsp/servlet学习三之会话管理初解

  由于http的无状态性,使得会话管理或会话跟踪成为web应用开发一个无可避免的主题。默认下,一个web服务器无法区分一个http请求是否为第一次访问。例如,一个web邮件应用要求用户登陆后才能查看邮件,因此,当用户输入了相应的用户名和密码后,应该不应该再次提示需要用户登陆,应该必须记住那些用户已经登陆。换句话说,应该必须能管理用户的会话。

  URL重写

  URL重写是一种会话跟踪技术,它将一个或者多个token添加到URL的查询字符串中,每个token通常为key=value形式,如下:

  url?key-1=value-1&key-2=value-2

  注意,URL和tokens间用问好(?)分割,token间用与号(&)分割。

  url重写适合于tokens无须在太多url间传递的情况下,然而它有如下限制:

    url在某些浏览器上最大长度为2000字符串;

    若要传递到下一个资源,需要将值插入到链接中,换句话说,静态页面很难传值;

    url重写需要在服务端上完成,所有的链接都必须带值,因此当一个页面存在很多链接时,处理过程会是一个不小的挑战。

    某些字符,例如空格,与和问号等必须用base64编码;

    所有信息都是可见的,某些情况不合适。

    因为存在如上限制,url重写仅适合于信息仅在少量页面间传递,且信息不敏感。

  cookies

  cookies是一个很少的信息片段,可以自动在浏览器和web服务器间交互,因此cookies可存储在多个页面间传递信息。cookies作为HTTP header的一部分,其传输由HTTP协议控制。此外,你可以控制cookies的有效时间。浏览器通常支持每个网站高达20个cookies。

  cookies的问题在于用户可以通过改变其浏览器设置来拒绝接受cookies。

  要使用cookies,需要熟悉javax.servlet.http.coockie类以及httpServletRequest和httpServletResponse两个接口。

  可以通过传递name和value两个参数给cookie类的构造函数来创建一个cookies:

  Cookie cookie = new Cookie(name,value);

  如下是一个创建语言选择的cookie示例:

  Cookie languageSelectionCookie = new Cookie(“language”,”Italian“);

  创建完一个Cookie对象后你可以设置domain,path和maxAge属性。其中maxAge属性决定Cookie何时过期。

  HttpSession对象

  在所有的会话跟踪技术中,httpSession对象是最强大和最通用的。一个用户可以有且最多有一个httpSession,并且不会被其他用户访问到。httpSession对象在用户第一次访问网站的时候自动被创建,你可以通过调用HttpServletRequest的getSession方法获取该对象。

  ps:这是对会话的初步了解后续会发布详解博文

原文地址:https://www.cnblogs.com/onsim/p/8987501.html

时间: 2024-10-11 00:22:31

jsp/servlet学习三之会话管理初解的相关文章

JSP Servlet学习笔记

在面试Java程序员工作时,经常会被问到JSP Servlet中相关的知识.这些知识都是JSP Servlet的基础,这篇文章主要梳理一下JSP Servlet比较基础但是又比较重要的知识. 1 service方法调用过程 在Servlet接口中有一个service方法,这个方法不是有人手动的调动,而是在运行时由tomcat自动调用的.GenericServlet抽象类实现了Servlet接口,当然它也重写了service方法,但是它也没有具体实现.到了HttpServlet类中,service

JSP&&SERVLET学习笔记(三):URL模式设置

//URL模式的设置 //                         环境路径          Servlet路径    路径信息 //requestURI = contextPath + servletPath + pathInfo; //Servlet路径认为/*为空串 package cc.openhome; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletExc

jsp/servlet学习笔记(核心编程)servlet部分

功用:1.读取客户端显示数据2.赌气浏览器隐式请求数据3.生成结果4.向客户发送显示数据(文档)5.发送隐式HTTP相应数据 1.效率:传统CGI对每一个请求都会启动一个进程 servlet使用轻量级的java线程处理2.便利 3.强大 4.廉价 5.可移植 6.安全 jsp作用某种程度上,servlet看作是含有html的java程序将jsp看作是含有java代码的html页面jsp会翻译成servlet,servlet会被编译,在请求期间运行的就是servlet Web目录html以及jsp

jsp/servlet学习笔记(核心编程)jsp部分

jspjsp最终需要转换成servelt,并进行编译,在请求期间实际上是编译的servlet jsp擅长生成大量组织有序的结构化HTML或其他字符数据组成的页面.servlet擅长生成为进制数据,构建数据多样的页面,以及执行输出很少或者没有输出的任务(重定向) 1.jsp仅在修改后第一次访问时才会转换成servlet并进行编译:2.载入到内存中初始化和执行遵循servlet的一般规则 基本语法:第十一章<%...%> jsp调用动态代码策略1.直接调用(使用及少量代码)2.简介调用java代码

Java Web学习(30): Servlet学习(三)

Servlet获取JSP九大内置对象 Servlet与JSP九大内置对象对应关系: Servlet与表单 Servlet如何获取表单数据呢? 我们就不再一一讲解,具体的可以参考:http://www.runoob.com/servlet/servlet-form-data.html 实例:获取表单数据 实体类Users代码: package com.entity; import java.util.Date; /**  * 用户实体类  * @author Administrator  * @d

Servlet学习(三)

servlet线程安全:单实例,多线程. 解决方法:将全局变量改为局部变量. 不安全: package servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRe

JSP&amp;&amp;SERVLET学习笔记(七):Servlet处理上传的文件

package cc.openhome; import java.io.DataInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.se

JSP&amp;&amp;SERVLET学习笔记(一):HelloServlet

package cc.openhome; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.s

JSP的学习三(中文乱码)

1). 在 JSP 页面上输入中文, 请求页面后不出现乱码: 保证 contentType="text/html; charset=UTF-8", pageEncoding="UTF-8" charset 和 pageEncoding 的编码一致, 且都支持中文. 通常建议取值为UTF-8 还需保证浏览器的显示的字符编码也和请求的 JSP 页面的编码一致. 2). 获取中文参数值: 默认参数在传输过程中使用的编码为 ISO-8859-1 ①. 对于 POST 请求: