Servlet中的9大內置對象:html
做用域:area(區域,範圍)
做用域佔有的兩個方法:
set、get
1.page:在當前頁面有效,(object類型,this)頁面對象
2.request:再一次請求範圍有效
3.session:再一次會話範圍有效(一次會話可能包含屢次請求,當頁面重定向時也會失效)
4.application:在整個應用程序範圍有效
5.out輸出對象
6.response:重定向
7.pageContext:頁面上下文對象
8.confing:配置對象
9.exception異常對象java
其中服務器
session:(存放用戶本身的信息)cookie
application:(存放全局須要的信息)session
Session基於Cookie技術,也是經過鍵-值對來存儲信息。app
經過HttpSession session = request.getSession(); 來得到session(一般用於判斷是不是新用戶)框架
設置session屬性:session.setAttribute(String name, Object obj);jsp
獲取session值:session.getAttribute(name);佈局
返回客戶端最後一次與會話相關的請求時間:session.getLastAccessedTime();post
以秒爲單位返回一個會話內兩個請求最大時間間隔: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); } }