首页 > 移动平台 > 详细

session与application的用法;以及简单聊天室功能

时间:2017-01-27 18:42:09      阅读:759      评论:0      收藏:0      [点我收藏+]

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();

再会话中移除指定的对象: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秒刷新一次

 

<%@ 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);
    }

}

 

session与application的用法;以及简单聊天室功能

原文:http://www.cnblogs.com/AnswerTheQuestion/p/6353943.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!