`
alchimie
  • 浏览: 20396 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Jsp、Session

 
阅读更多

(参考http://www.blogjava.net/redcoatjk/archive/2011/08/25/357247.html

http://xgw1008.blog.163.com/blog/static/56757356200921754025374 整理)

 

一,Jsp执行过程 

     在一个JSP文件第一次被请求时,JSP引擎把该JSP文件转换成为一个servlet。而这个引擎本身也是一个servlet,JSP引擎先把该JSP文件转换成一个Java源文件,在转换时如果发现jsp文件有任何语法错误,转换过程将中断,并向服务端和客户端输出出错信息;如果转换成功, JSP引擎用javac把该Java源文件编译成相应的class文件。然后创建一个该SERVLET的实例,该SERVLET的jspInit()方法被执行,jspInit()方法在servlet的生命周期中只被执行一次。然后jspService()方法被调用来处理客户端的请求。对每一个请求,JSP引擎创建一个新的线程来处理该请求。

 

    如果有多个客户端同时请求该JSP文件,则JSP引擎会创建多个线程。每个客户端请求对应一个线程。以多线程方式执行可大大降低对系统的资源需求,提高系统的并发量及响应时间.但应该注意多线程的编程限制,由于该servlet始终驻于内存,所以响应是非常快的。如果.jsp文件被修改了,服务器将根据设置决定是否对该文件重新编译,如果需要重新编译,则将编译结果取代内存中的servlet,并继续上述处理过程。

 

     虽然JSP效率很高,但在第一次调用时由于需要转换和编译而有一些轻微的延迟。此外,如果在任何时候如果由于系统资源不足的原因,JSP引擎将以某种不确定的方式将servlet从内存中移去。当这种情况发生时 jspDestroy()方法首先被调用, 然后servlet实例便被标记加入"垃圾收集"处理。 jspInit()及jspDestory()格式如下:可在jspInit()中进行一些初始化工作,如建立与数据库的连接,或建立网络连接,从配置文件中取一些参数等,在jspDestory()中释放相应的资源。


二,Sessin

1.Session的创建和销毁
    session是保存在内存中的,所以会有一些性能上的影响。因此本着这个原则,session是只有在使用到的时候才会被创建,如果始终没有用到session,这个session是永远不会被创建的。
    比如: 访问servlet ,只要你代码中没有 request.getSession()或request.getSession(true);这两行是等价的,那session是不会创建。又当你访问静态页面时,根本不会生成servlet,所以也不会创建session。
(jsp中有个<%@ page session="true/false"%> 这个开关表示是否创建session,当你不写这行时,它会默认给你加上这句。)

    Session只能在服务端销毁,有三种途径:
①到达session的最大请求间隔时间时,
②session.invalidate()
③服务器进程当掉

 

2.Session的使用

①浏览器禁用cookie

     这就没办法保存sessionid了,可以采用url重写,转发,加隐藏字段等方法来将sessionid传给服务器。

     例: baidu.com:jsessionid=adfasdfasdfasdfasdfafdadf?asdfasdf

           baidu.com?jsessionid=asdfasdfasdfadsfad&&adfdf

 

②多人共用session的问题

     例: a 访问 baidu.com ,但他没有帐号,于是他将连接 baidu.com/login.jsp?jsessionid=adsfasdfad(这个a的sessionid) 发给B, B登录后,a就相当于用b的帐号登录了。

     解决方法: 当发现通过sessionid从url指定时, 创建一个新的session,将旧session的信息复制到 新sessoin中,然后将新session注销。就能防止上面那种情况了。

 

③一个帐号多地方登录

     例: 你用abc帐号登录了baidu.com,有打开了一个浏览器,又用abc帐号登录了一次。当不设计敏感操作时,这无所谓,而当你做一些敏感操作时就必须禁止这样情况,防止同时操作,造成重复操作,或者数据损坏。

     解决方法: 监听session(HttpSessionListener),将username和sessionid对应起来,当username再次登录时,注销掉以前的session,保存现在的session。

 

  • 大小: 31.5 KB
分享到:
评论

相关推荐

    JSP1.rar_Major_jsp session login_login.jsp_session jsp

    在这个名为"JSP1.rar"的压缩包中,包含了一系列与JSP session登录相关的文件,让我们逐一解析这些文件及其背后的编程知识点。 首先,`login.jsp`是登录界面,用户输入用户名和密码后,通常会通过HTTP请求发送到...

    JSPsession超时提示

    ### JSP Session超时提示知识点解析 #### 一、背景介绍 在Web应用程序中,`session` 是一种常用的技术手段,用于保存用户的状态信息。它能够帮助开发者在多个页面请求之间保持用户的数据一致性。然而,为了提高安全...

    jsp-session测试

    【JSP Session 测试】是Java初学者在学习如何在JSP页面中使用Session对象时的一个常见实践案例。在这个练习中,我们将深入了解JSP Session的概念、工作原理以及如何在实际项目中有效地应用它。 首先,Session是Java...

    jsp session

    jsp session jsp session 对象是 Java 服务器页面(JSP)技术中的一种机制,用于维护会话状态,跟踪客户端用户的状态。下面是 jsp session 对象的详细介绍: 一、session 对象的概念 session 对象是 javax....

    jsp 的session实现小的购物车的功能

    在Java服务器页面(JSP)中,Session是用于在用户会话之间存储数据的重要机制,尤其在实现诸如购物车这样的功能时。购物车通常需要跟踪用户的选购商品,即使用户在不同页面之间导航,这些信息也需要被保留。在这个...

    JSP Session 学习笔记---JSP Session 学习笔记

    JSP Session 学习笔记

    jsp中session的用法详解

    "jsp中session的用法详解" jsp 中 session 的使用方法可以帮助开发者追踪用户的操作过程,而不需要担心追踪的实现细节。Session 是一种服务器端的机制,用于存储用户的信息,以便在多个页面之间共享数据。 在 jsp ...

    Jsp内置对象session总结

    JSP 内置对象 Session 总结 Session 对象是一种 JSP 内置对象,用于管理客户端与服务器端之间的会话期。下面是 Session 对象的详细介绍。 什么是 Session Session 对象是一个 JSP 内置对象,它在第一个 JSP 页面...

    JSP Session超时设置的实现方法

    在Java Web开发中,JSP Session是用于跟踪用户状态的重要工具。它允许服务器保存特定用户的数据,以便在多个页面请求之间保持这些数据。当客户端(浏览器)与服务器交互时,服务器会创建一个Session对象,该对象包含...

    jsp事例jsp usebean session

    在JavaServer Pages (JSP) 技术中,`useBean` 指令和 `session` 对象是两个核心概念,它们对于构建动态、数据驱动的Web应用程序至关重要。在这个事例中,我们将深入探讨如何在JSP中利用 `useBean` 指令创建并管理...

    JSP session&application;.ppt

    什么是JSP的内置对象 JSP的内置对象有哪些? request对象 与 response对象 session对象 application对象 out对象

    jsp的session介绍

    **JSP Session 详解** 在Web开发中,Session是一种用于保持用户状态的关键技术。它允许在用户的不同请求之间存储和检索信息,使得服务器能够识别并跟踪用户的状态,即便用户在浏览网页时页面重载或跳转。这个概念...

    JSP实验-购物车(用session实现)

    **JSP实验-购物车(用session实现)** 在Web开发中,购物车是一个常见的功能,它允许用户选择商品并暂时存储,直到他们准备结账。在这个实验中,我们将使用JavaServer Pages (JSP) 技术来创建一个简单的购物车,主要...

    Jsp_Session详解.

    在Web开发领域,Session是一种保持客户端与服务器之间状态的机制,它在许多现代编程语言和框架中得到了广泛的应用。Session机制的出现,主要是为了解决HTTP协议的无状态性问题。HTTP协议本身是无状态的,这意味着每...

    jsp页面间通过request/session传值

    ### JSP 页面间通过 Request/Session 传值详解 #### 一、背景介绍 在 Web 开发中,尤其是在 JavaServer Pages (JSP) 技术中,数据在不同页面之间的传递是一项基本且重要的功能。本篇文章将详细介绍如何利用 JSP 的 ...

    jsp和servlet之中的session详细介绍

    本文将深入探讨JSP和Servlet中的session概念,以及它们如何在Web应用程序中实现状态管理。HTTP协议本身是无状态的,这意味着每次客户端(浏览器)向服务器发送请求时,服务器无法识别请求是否来自同一个会话。为了...

    jsp中session做的考试系统

    在JavaServer Pages (JSP) 中,Session 是一种用于跟踪用户状态的重要机制,特别是在构建一个考试系统这样的Web应用程序时。这个“jsp中session做的考试系统”描述了一个利用JSP技术来设计的在线考试平台,该平台...

    JSP Session

    JSP Session HTTP是无状态协议,这意味着每次客户端检索网页时,都要单独打开一个服务器连接,因此服务器不会记录下先前客户端请求的任何信息。 有三种方法来维持客户端与服务器的会话: Cookies 网络服务器...

    jsp实验代码,使用session

    本实验代码主要围绕如何在JSP页面中有效地使用Session进行讲解和实践。 1. **Session的基本概念** Session是HTTP协议无状态特性的补充,因为HTTP协议本身不保存任何关于客户端的信息,而Session就是在服务器端为每...

Global site tag (gtag.js) - Google Analytics