J2EE 应用服务器下各登录用户共享对象的实现 源码下载
来源:互联网 发布:英雄无敌5 宝物数据 编辑:程序博客网 时间:2024/05/17 01:33
有时要在Java Web 应用服务器下实现一些监控开发,同时又是多终端操作,通过数据库共享信息效率会非常低,而且很不方便,所以必须在内存中建立一个可以被共享的对象供终端访问,
实现过程:
设置 web.xml,指定一个Servlet在 Web 应用启动时自动创建一个该Servlet的全局对象,各用户访问该 Servlet 可实现在 Servlet 下的对象共享,再通过session传递对象到 JSP 可对 JSP 下也实现对象共享。
将要共享的对象 ShareInfo.java,私有变量 val 累加和提取。
/** * */package test;/** * @author Administrator * */public class ShareInfo{ private int val = 0; /** * */ public ShareInfo() { // TODO Auto-generated constructor stub } /** * 累加 */ public void add() { val = val + 1; } /** * 取值 * * @return */ public int getVal() { return val; }}
启动时加载的 Servlet
package servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import test.ShareInfo;/** * Servlet implementation class Info */@WebServlet(name = "info", urlPatterns = { "/info" })public class Info extends HttpServlet{ private static final long serialVersionUID = 1L; // 声明共享对象 这样每一个终端访问的对象都将是同一个 private ShareInfo shareInfo = null; /** * @see HttpServlet#HttpServlet() */ public Info() { super(); // TODO Auto-generated constructor stub } /** * @see Servlet#init(ServletConfig) */ public void init(ServletConfig config) throws ServletException { // TODO Auto-generated method stub // 共享对象初始化,初始化由 web.xml 指定 servlet 在部署或者服务启动时执行与用户无关 shareInfo = new ShareInfo(); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse * response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doPost(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub // 对象得到共享 // 对象内数字累加 shareInfo.add(); // 存入 session,jsp 页面也将获得共享 // 注意:每一个需要在 jsp 下访问该对象的终端都必须完成这个 servlet 的首次访问,将对象存于自己的 session 中才能在自己的 jsp 中取到该对象。 HttpSession httpSession = request.getSession(); httpSession.setAttribute("INFO", shareInfo); // 字符信息返回浏览器 processRequest(String.valueOf(shareInfo.getVal()), request, response); } /** * return text to explorer * * @param strMessage * @param request * @param response * @throws ServletException * @throws IOException */ protected void processRequest(String strMessage, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { out.print(strMessage); } finally { out.close(); } }}
设置启动 Servlet 的 web.xml,无需申明 map,关键句 load-on-startup,1为优先级,0最高。
<servlet><servlet-name>Info</servlet-name><servlet-class>servlet.Info</servlet-class><load-on-startup>1</load-on-startup></servlet>
获得共享的 jsp,前提是用户通过 Servlet 登录或者先访问过 Servlet。
<%@page import="test.ShareInfo"%><%@page contentType="text/html" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><%@ page import="test.ShareInfo"%><% ShareInfo shareInfo = null; Object object = session.getAttribute("INFO"); if (object != null) { shareInfo = (ShareInfo) object; shareInfo.add(); } else { out.print("没有找到对象,用户需要访问一次 servlet 获取 session 赋值"); return; }%><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>GlassFish JSP Page</title></head><body><%=shareInfo.getVal()%></body></html>
多个 Servlet 之间也可通过类似方法实现 Servlet 之间的对象共享。
源码下载
http://download.csdn.net/detail/joyous/5345508
Q群讨论:236201801
- J2EE 应用服务器下各登录用户共享对象的实现 源码下载
- 同一tomcat下实现多应用session共享 单点登录
- J2ME/J2EE实现用户登录交互
- J2ME/J2EE实现用户登录交互
- J2EE HttpSessionAttributeListener实现登录用户在线记录
- j2ee实现强行挤掉重复登录用户
- 不需要应用服务器的J2EE
- 不需要应用服务器的J2EE
- 通用的用户登录过滤器(j2ee)
- jsprequst对象的应用,用户登录和身份验证
- ubuntu下的git服务器禁止用户shell登录
- 在Forms验证模式下,实现多个站点(SubDomain相同)共享同一用户登录状态
- 在Forms验证模式下,实现多个站点(SubDomain相同)共享同一用户登录状态
- 基于Ajax+J2EE的MicroERP源码下载
- 基于Ajax+J2EE的MicroERP源码下载
- 基于Ajax+J2EE的MicroERP源码下载
- 基于Ajax+J2EE的MicroERP源码下载
- 基于Ajax+J2EE的MicroERP源码下载
- 2013年4月学习总结
- javaweb_获取用户真实ip地址
- 处理何时按下按钮,何时松开按钮
- IOS开发(50)之GCD的一些小应用
- 写了 10 年 Javascript 未必全了解的连续赋值运算
- J2EE 应用服务器下各登录用户共享对象的实现 源码下载
- 如何在dotConnect for Oracle中使用BLOB和CLOB数据
- 世上最全的Android开源项目
- Android应用程序框架
- linux 环境安装配置subversion
- 改革需要“狮子型”官员
- 树状数组
- Redis(ZADD)使用Java API实现简单排名
- COCOS2D-X全局定时器