zoukankan      html  css  js  c++  java
  • session与application的用法;以及简单聊天室功能

    Servlet中的9大内置对象:

    作用域:area(区域,范围)
    作用域占有的两个方法:
    set、get
    1.page:在当前页面有效,(object类型,this)页面对象
    2.request:再一次请求范围有效
    3.session:再一次会话范围有效(一次会话可能包含多次请求,当页面重定向时也会失效)
    4.application:在整个应用程序范围有效
    5.out输出对象
    6.response:重定向
    7.pageContext:页面上下文对象
    8.confing:配置对象
    9.exception异常对象

    其中

    session:(存放用户自己的信息)

    application:(存放全局需要的信息)

    Session基于Cookie技术,也是通过键-值对来存储信息。

    通过HttpSession session = request.getSession(); 来获得session(通常用于判断是否是新用户)

    设置session属性:session.setAttribute(String name, Object obj);

    获取session值:session.getAttribute(name);

    返回客户端最后一次与会话相关的请求时间:session.getLastAccessedTime();

    以秒为单位返回一个会话内两个请求最大时间间隔:session.getMaxInactiveInterval();

    以秒为单位设置session的有效时间:session.setMaxInactiveInterval();【Tomcat的默认时间是30分钟,当然我们可以自己在xml中给该默认配置】

    再会话中移除指定的对象:session.removeAttribute(name);

    销毁session:session.invalidate();当session对象被销毁后将不可以再使用该session对象了。

    application对象:

    1.当Web服务器启动时,Web服务器会自动创建一个application对象。application对象一旦创建它将一直存在,知道关闭Web服务器。一个Web服务器通常有多个Web目录(网站)当Web服务器启动时它自动为每一个目录创建一个application,并且每个application与目录是一一对应的。

    访问同一个(目录)网站的用户都共享一个application对象,因此application对象可以实现多用户之间的数据共享。

    2.application对象的作用范围:application对象是一个应用程序级别的对象,它作用于当前网站,所有访问当前网站的用户都共享一个application对象。因此,当在application对象中存储数据后,所有访问网站的用户都能对其存储的数据进行访问(所以在一个项目中application是可以被当前所有工程中的servlet调用的)

    3.application对象的基类是:java.servlet.ServletContext

    ServletContext application=this.getServletContext();创建一个application对象

    简单的聊天室功能:

    使用作用域,可以实现一个聊天室的功能:
    一般使用框架把页面分为三个部分:
    left.jsp:用户列表界面
    send.jsp:信息发送页面
    content.jsp:聊天记录

    session的作用域:(存放用户自己的信息)
    application的作用域:(存放全局需要的信息)

    用户列表:需要List集合(需要放到application中)

    页面自动刷新:
    <meta http-equiv="fefresh" content="1"/>
    页面1秒刷新一次

    一: <Frameset>为框架标记,说明该网页文档为框架组成,并设定文档中组成框架集的框架的布局,用来划分框架,每一个框架由<Frame></Frame>标记。
    <Frame>用以设置组成框架集中各个框架的属性。<Frame></Frame>必须在<Frameset></Frameset>之内使用。
    注意:<Frame></Frame>标记的框架顺序为从左至右或从上到下。

    二: Iframe是Inline Frame的缩写,称为内联框架,它和frame如同兄弟。frame是帧标记,Iframe叫浮动帧标记,它不同于Frame标记最大的特征即这个标记所引用的HTML文件不是与另外的HTML文件相互独立显示,而是可以直接嵌入在一个HTML文件中,与这个HTML文件内容相互融合,成为一个整体;因为它可以多次在一个页面内显示同一内容,而不必重复写内容,所以人们形象称这种效果为“画中画”。

    三:

    <frameset>框架,必须要去掉boday才能使用frameset。
    其中rows="100,*"表示上下分,第一行为100像素,其余为第二行;
    cols="100,*"表示左右分,
    每个页面用户<frame></frame>包裹,设置其src属性

    四:

    页面自动刷新:
    <meta http-equiv="fefresh" content="1"/>
    页面1秒刷新一次

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <frameset cols="150,*">
        <frame src="left.jsp"></frame>
        
        <frameset rows="*,150">
            <frame src="content.jsp"></frame>
            <frame src="send.jsp"></frame>
        </frameset>
    </frameset>
    <!-- 
    <frameset>框架,必须要去掉boday才能使用frameset。
    其中rows="100,*"表示上下分,第一行为100像素,其余为第二行;
        cols="100,*"表示左右分,
    每个页面用户<frame></frame>包裹,设置其src属性
     -->
    
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <form action="SendServlet" method="post">
            <input type="text" size="100" name="cont">
            <input type="submit" value="发送">
        </form>
    </body>
    </html>
    
    
    <%@page import="java.util.ArrayList"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="refresh" content="1"/>
    <title>Insert title here</title>
    </head>
    <body>
        <%
        ArrayList<String> list=(ArrayList<String>)application.getAttribute("userlist");
        for(int i=0;i<list.size();i++){
        %>
            <%=list.get(i)+"<br><br>" %>
        <%    
        }
        %>
    </body>
    </html>
    
    
    
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="refresh" content="1"/>
    <title>Insert title here</title>
    </head>
    <body>
        <%
        request.setCharacterEncoding("utf-8");
        %>
        <%=application.getAttribute("cont")    %>
    </body>
    </html>

    Servlet类

    package com.cookie;
    
    import java.io.IOException;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * Servlet implementation class SendServlet
     */
    @WebServlet("/SendServlet")
    public class SendServlet extends HttpServlet {
        
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.setCharacterEncoding("utf-8");
            String cont=request.getParameter("cont");
            ServletContext application=this.getServletContext();
            
            String s=(String)application.getAttribute("cont");
            if(s==null){
                s="";
            }
            
            String user=(String)request.getSession().getAttribute("user");
            cont=user+":<br>"+cont+"<br>";
            s+=cont;
            
            this.getServletContext().setAttribute("cont", s);
            response.sendRedirect("send.jsp");
        
        }
    
        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            doGet(request, response);
        }
    
    }
  • 相关阅读:
    Subway POJ
    Invitation Cards POJ
    Cow Contest POJ
    MPI Maelstrom POJ
    Wormholes POJ
    Currency Exchange POJ
    Codeforces Round #608 (Div. 2) D Portals
    AcWing 1052. 设计密码
    AcWing 1058. 股票买卖 V 状态机模型dp
    AcWing 1057. 股票买卖 IV 状态机模型dp
  • 原文地址:https://www.cnblogs.com/AnswerTheQuestion/p/6353943.html
Copyright © 2011-2022 走看看