在线用户列表的维护
Login.jsp
-
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
-
pageEncoding="UTF-8"%>
-
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
-
<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
- <title>Inserttitlehere</title>
- </head>
- <body>
-
<formname="LoginForm"action="doLogin.jsp"method="post">
-
用户名:<inputtype="text"name="user">
- <br/>
-
<inputtype="submit"value="submit">
- </form>
- <p>
- 示例演示在线用户的维护:用户登录,放入session,并放入list,把list放入application保存
- 查看时可从list中取出所有在线用户,点注销会从session删除该用户记录并减少在线的用户
- 问题:当用户不点注销而是关闭浏览器或出现故障时退出,会使application用户无法删除,从而永远在线
- </p>
- </body>
- </html>
dologin.jsp
-
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
-
pageEncoding="UTF-8"%>
-
<%@pageimport="com.webtest.eus.util.*,java.util.*"%>
-
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
-
<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
- <title>Inserttitlehere</title>
- </head>
- <body>
- <h1>doLogin</h1>
- <hr/>
- <%
-
-
Stringuser=HttpUtil.getParam(request,"user");
-
-
session.setAttribute("user",user);
-
ListonlineList=(List)application.getAttribute("onlineList");
-
if(onlineList==null){
-
onlineList=newArrayList();
-
application.setAttribute("onlineList",onlineList);
- }
- onlineList.add(user);
-
response.sendRedirect("./result.jsp");
- %>
- </body>
- </html>
result.jsp
-
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
-
pageEncoding="UTF-8"%>
-
<%@pageimport="java.util.*"%>
-
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
-
<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
- <title>Inserttitlehere</title>
- </head>
- <body>
- <%!
-
Stringuser="";
- %>
- 在线的用户有:
- <%
-
ListonlineList=(List)application.getAttribute("onlineList");
-
for(inti=0;i<onlineList.size();i++){
-
user=(String)onlineList.get(i);
- %>
-
<tableborder="1">
- <tr>
- <td><%=user%></td>
- </tr>
- <%
- }
- %>
- </table>
- <hr/>
-
<ahref="./Login.jsp">登录</a>
- <br/>
-
<ahref="./cancel.jsp">注销</a>
- </body>
- </html>
cancel.jsp
-
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
-
pageEncoding="UTF-8"import="java.util.*,com.webtest.eus.util.*"%>
-
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
-
<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
- <title>Inserttitlehere</title>
- </head>
- <body>
- <%
-
Stringuser=(String)session.getAttribute("user");
- session.invalidate();
-
ListonlineList=(List)application.getAttribute("onlineList");
- onlineList.remove(user);
-
response.sendRedirect("../index.jsp");
- %>
- </body>
- </html>
dologin.jsp处理登录请求:
首先将USER放入session中session.setAttribute("user",user);将list放入application中,如果没有此list则先初始化,然后将用户添加到list中;
result.jsp
用于显示在线用户
calcel.jsp:
在session中删除此账户信息,并在list中删除onlineList.remove(user);这样在application中的list就不包括此用户信息,再回到result.jsp时就看不到此用户在线了
分享到:
相关推荐
Session 作用域是指一个用户会话的生命周期内,用于存储会话相关的数据。Session 对象是 JSP 中的一个隐含对象,通过它可以设置和获取会话的属性。Session 作用域的生命周期与会话相同,会话超时或服务器端强制使...
JSP 九个内置对象及四个作用域 JSP(Java Server Pages)是一种基于Java的服务器端脚本语言,用于生成动态网页。在JSP中,九个内置对象是指不需要预先声明就可以在脚本代码和表达式中使用的对象,这些对象都是javax...
jsp四个作用域 jsp作为一个动态网页技术,在web开发中起着重要的作用。了解jsp的四个作用域是mastering jsp技术的基础。本文将对jsp的四个作用域:pageScope、requestScope、sessionScope和applicationScope进行...
2. **request**作用域:比page作用域稍大,一个请求中的所有资源(如Servlet、JSP)都能访问在此作用域内设置的属性。这意味着,如果一个请求经过了多个Servlet或JSP,这些对象依然可用。`request.setAttribute()`...
四大作用域包括page、request、session和application四个作用域,每个作用域都有其特定的生命周期和使用场景。 page作用域是指当前页面的生命周期,以JSP页面为单位,页面销毁后页面作用域的变量将被销毁。 ...
在编程中,作用域是一个非常重要的概念,它定义了变量、函数等标识符在程序中的有效范围。正确理解和运用作用域有助于编写出更加清晰、高效且易于维护的代码。本文将详细介绍作用域的基本概念及其在实际编程中的应用...
// 全局作用域:在script之间或者一个独立的js文件 script之间或者一个独立的js文件里的内容区域,在全局作用域中定义的作用域 全局作用域。 在任何位置都可以访问 // 局部变量:在函数作用域之间里的一个或者...
作用域是编程语言中的一个重要概念,它定义了变量或者标识符的可见性和生命周期。简而言之,作用域确定了一个变量在哪些部分的代码中是可以被访问和使用的。 ### 变量作用域定义 在程序中,变量的作用域指的是变量...
本文将从JavaScript权威指南出发,深入探讨变量作用域的相关知识点,包括全局作用域、局部作用域、以及闭包等高级概念。 #### 二、全局作用域与局部作用域 1. **全局作用域** - 定义:在JavaScript中,如果一个...
对象的作用域决定了一个对象在何处可以被访问,以及它何时被创建和销毁。在大多数编程语言中,对象的作用域主要有以下几种类型: 1. **全局作用域**:在所有函数和类外部定义的对象,可以在程序的任何地方被访问。...
JavaScript 变量作用域详解 JavaScript 变量作用域是基于其特有的作用域链的。...JavaScript 变量作用域是JavaScript语言的一個重要特性,了解变量作用域的规则对于编写高效、可维护的代码非常重要。
当数据改变时,`$digest`循环会遍历整个作用域树,确保所有相关的视图得到更新。 - `$apply`: 当在AngularJS外部(比如JavaScript事件处理函数)修改了作用域中的数据时,需要调用`$apply`来触发`$digest`循环。...
Python 中的变量作用域可以分为四个层次:局部作用域(Local scope)、外部作用域(Enclosing scope)、全局作用域(Global scope)和内置作用域(Built-in scope)。 局部作用域是指当前函数或代码块中的变量作用...
7. 作用域创建:在 DHCP 服务器中,可以创建多个作用域,每个作用域包含不同的 IP 地址信息。在创建完成以后,可以根据网络需求更改 IP 地址范围、租用服务器期限等。 8. 作用域管理:DHCP 服务器可以管理多个作用...
变量作用域可以分为四个级别:局部作用域(Local Scope)、外部作用域(Enclosing Scope)、全局作用域(Global Scope)和内建作用域(Built-in Scope)。 在 Python 中,变量查找遵循 LGB 原则,即优先在局部作用...
作用域链是JavaScript中另一个核心概念,它是由函数创建时的作用域决定的,包含了函数被创建时所有可访问的数据对象。这个链由内部属性[[Scope]]定义,它包含了函数定义时所在作用域的对象集合。当函数执行时,会...
变量的有效作用域从它的定义点开始,到和定义变量之前最邻近的开括号配对的第一个闭括号。下面是 C++ 中各种类型的变量的作用域规则: 1. 全局变量 全局变量是在所有函数体的外部定义的,程序的所有部分(甚至其它...
JavaBean四个作用域范围的详解 JavaBean是一种特殊的Java类,遵循JavaBean架构规范,具有 getter 和 setter 方法,可以在JSP页面中使用useBean标签来实例化JavaBean对象,并通过scope属性指定JavaBean的作用域范围...
在Vue.js框架中,作用域插槽(Scoped Slots)是一个非常重要的特性,它允许我们更加灵活地控制组件的渲染内容。这个特性使得父组件能够传递复杂的数据结构到子组件,并控制子组件内部如何呈现这些数据。现在,我们将...
例如,如果在一个脚本文件或全局作用域中声明了一个变量,没有使用`var`、`let`或`const`关键词,则该变量会成为`window`对象的一个属性。这种变量在整个程序中都可以被访问到。 **示例代码**: ```javascript var ...