JSP Session处理

原创 2003年06月23日 13:47:00

ASP程序员经常要在global.asa文件内处理Application_start,Session_Start

事件,如:用户验证、重定向不同编码页面等,十分方便,然而一向颇受欢迎的JSP并不很支持这种处理,除了商业化服务器JRun支持global.jsa以外,竟连应用率极高的开放源码服务器Tomcat都不支持,这给JSP的开发造成不小障碍,虽然早期Tomcat(5.0以前版本)下可以通过以下方式实现Session-start事件处理

1.       添加Session

session.put(“bind.listener”,new MyListener(getServletContext())

2.       定义MyListener

import javax.servlet.http.*;

import javax.servlet.*;

public class MyListener implements HttpSessionBindingListener

{

        ServletContext context;

        public ODSessionListener(ServletContext context)

        {

               this.context=context;

        }

       

        public void valueBound(HttpSessionBindingEvent event)

        {

               System.out.println(“bound”);

        }

              

        public void valueUnBound(HttpSessionBindingEvent event)

        {

               System.out.println(“unbound”);

        }

}

 

但处理前提是Session已经建立,并且不能在Session创建时处理验证等事件,通过研究Servlet 2.4Tomcat5.0内建)终于找到一种可行方法,实现方法如下:

//---------------------- SessionListener.java----------------------------------------------------

package listeners;

import javax.servlet.ServletContext;

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;

import javax.servlet.http.HttpSessionAttributeListener;

import javax.servlet.http.HttpSessionBindingEvent;

import javax.servlet.http.HttpSessionEvent;

import javax.servlet.http.HttpSessionListener;

// ServletRequestListenerServlet2.4新增接口

import javax.servlet.ServletRequestListener;

import javax.servlet.ServletRequestEvent;

import javax.servlet.http.HttpServletRequest;

 

public final class SessionListener

implements HttpSessionListener,ServletRequestListener {

private  HttpServletRequest  request;

public void requestDestroyed(ServletRequestEvent sre) { }

 

public  void requestInitialized(ServletRequestEvent sre)

 {

          request=(HttpServletRequest)sre.getServletRequest();

    }

    public void sessionCreated(HttpSessionEvent event) {

        String logMsg=event.getSession().getId()

            +"'  '"+request.getRemoteAddr()

            +":"+request.getRemotePort();

        log("sessionCreated('" + logMsg + "')");

    }

 

    public void sessionDestroyed(HttpSessionEvent event) {

        log("sessionDestroyed('" + event.getSession().getId() + "')");

    }

 

    private void log(String message) {

          System.out.println("SessionListener: " + message);

    }

}

 

在开始接到客户端请求(requestInitialized)时,获得当前的HttpRequest对象保存在私有成员 request ,这样在Session创建时可以实现对Session用户进行验证,以及关闭Session,限制IP地址访问等,这里仅以记录Session来源为例(SessionListener.java

编译这个类后还要在web.xmlhost元素内加入以下行:

  <listener>

    <listener-class>listeners.SessionListener</listener-class>

  </listener>

              本文适用环境:Tomcat 5.02,J2SE1.41(不支持商业服务器)

 

 

jsp页面session超时

 在web.xml里面设置session的有效时间! 加上如下代码  30
  • yuese123456
  • yuese123456
  • 2014年08月09日 10:15
  • 1151

jsp的session介绍 (转)

摘要:虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一技术。本文将详细讨论session的工作机制并且对在Java ...
  • JeamKing
  • JeamKing
  • 2014年01月16日 14:08
  • 5814

JSP中Session的使用

JSP session用法%@page contentType="text/html;charset=GB2312"%>            你的session对象ID是:      int Num...
  • princewong
  • princewong
  • 2007年07月19日 09:27
  • 94839

请教:我用的jbuilder,struts架构,在action中的session赋中文值以后,回到jsp中,从session中取出的值为乱码,如何解决?

转载网上找到的文章: 现在有很多人都碰到过乱码问题,不停的发贴问,那么究竟有没有一种完全的解决方案呢?看看banq这位中国一流的java程序员是怎么说的。 Java/J2EE中文问题终极解...
  • evilcry2012
  • evilcry2012
  • 2014年10月29日 11:25
  • 924

jsp基础之--使用Session完成简单的登陆操作

今天来说说Session,Session也叫实域,能够保存一些信息,并且再页面跳转的时候不会丢失,常用作登陆,可以保存已经登陆用户的信息。今天就利用Session在不连接数据库的情况下实现简单的登陆操...
  • mgsky1
  • mgsky1
  • 2016年08月20日 10:46
  • 7405

JSP内置对象session 常用方法及案例

首先我先说一下session的常用方法 1>setAttribute  2>getAttribute 3>sendRedirect //重定向 这是login.jsp代码及效果图 ...
  • qq_36074042
  • qq_36074042
  • 2017年05月10日 15:01
  • 450

jsp清除页面session、cookies缓存

一、清除页面缓存在jsp页里response.setHeader("Cache-Control","no-cache");response.setDateHeader("Expires", 0);re...
  • ofofw
  • ofofw
  • 2010年04月20日 14:49
  • 5686

jsp 清空 session

session.invalidate();   清空了session中的所有的值  而session.removeAttribute("aaaa")只清空了session 对应的的某个属性...
  • zwhfyy
  • zwhfyy
  • 2007年09月04日 19:34
  • 8236

Session原理之jsp

在web开发中,session是个非常重要的概念。在许多动态网站的开发者看来,session就是一个变量,而且其表现像个黑洞,他只需要将东西在合适的时机放进这个洞里,等需要的时候再把东西取出来。这是开...
  • hanghangde
  • hanghangde
  • 2016年07月27日 14:27
  • 1811

JSP中获取session

jsp获取action传来的session值问题有一下几种方法: 比如我action中有个session ("sessionid","11111111") 一、用struts标签获取: ...
  • funi16
  • funi16
  • 2012年10月16日 10:37
  • 32009
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JSP Session处理
举报原因:
原因补充:

(最多只允许输入30个字)