在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Linux/ Servlet HttpSession會話
Servlet web.xml welcome-file-list
Servlet從數(shù)據庫讀取記錄性能優(yōu)化
Servlet URL重寫帶參數(shù)
War文件
Web技術基礎
Servlet GenericServlet類
Servlet API
Servlet ServletInputStream類
使用MyEclipse創(chuàng)建Servlet
Servlet增刪改查
Servlet ServletConfig配置信息
Servlet Cookies
Servlet重定向
Servlet生命周期
Servlet HttpSession會話
Servlet HttpServlet類
Servlet注冊表單示例
Servlet表單隱藏字段
Servlet下載文件
Servlet教程
Servlet身份驗證過濾器
Servlet ServletOutputStream類
Servlet HttpSession登錄注銷實例
Servlet啟動時加載
Servlet事件和監(jiān)聽器
使用Eclipse創(chuàng)建Servlet
Servlet ServletContextEvent事件
Servlet HttpSessionEvent統(tǒng)計在線用戶數(shù)實例
Servlet RequestDispatcher請求轉發(fā)
Servlet使用注釋
Servlet過濾器示例
Servlet過慮器
Servlet ServletContext配置信息
Servlet登錄注銷Cookies實例
Servlet工作流程
Servlet會話跟蹤
Servlet登錄實例
Servlet ServletRequest接口
Servlet ServletRequestEvent類和接口
Servlet入門程序
Servlet查詢搜索數(shù)據示例
Servlet FilterConfig應用示例
Servlet顯示所有頭信息
Servlet屬性設置
使用NetBeans創(chuàng)建Servlet
Servlet接口實現(xiàn)
Servlet上傳文件

Servlet HttpSession會話

在本節(jié)中,我們將介紹Servlet中的HttpSession對象的使用,在應用容器中,它為每個用戶創(chuàng)建會話ID。容器使用此標識來識別特定的用戶。HttpSession的一個對象可用于執(zhí)行兩個任務:

  1. 綁定對象
  2. 查看和操作有關會話的信息,如會話標識符,創(chuàng)建時間和上次訪問時間。

如何獲取HttpSession對象?

HttpServletRequest接口提供了兩種獲取HttpSession對象的方法:

  • public HttpSession getSession():返回與此請求相關聯(lián)的當前會話,或者如果請求沒有會話,則創(chuàng)建一個會話。
  • public HttpSession getSession(boolean create): 返回與此請求相關聯(lián)的當前HttpSession,如果沒有當前會話,并且create的值為true,則返回一個新會話。

HttpSession接口的常用方法

  1. public String getId() - 返回一個包含唯一標識符值的字符串。
  2. public long getCreationTime() - 返回創(chuàng)建此會話的時間,以1970年1月1日GMT格林尼治時間以來的毫秒為單位。
  3. public long getLastAccessedTime() - 返回客戶端發(fā)送與此會話相關聯(lián)的請求的最后一次,為1970年1月1日GMT以來的毫秒數(shù)。
  4. public void invalidate() - 使此會話無效,然后取消綁定綁定到該對象的任何對象。

HttpSession應用示例

在本示例中,我們將在會話范圍中的屬性設置在一個servlet中,并從另一個servlet中的會話范圍獲取該值。要在會話范圍內設置屬性,可使用HttpSession接口的setAttribute()方法設置屬性,并使用getAttribute()方法獲取屬性。

打開Eclipse,創(chuàng)建一個動態(tài)Web項目:HttpSession,其完整的目錄結構如下所示 -

以下是這個項目中的幾個主要的代碼文件。

文件:index.html -

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HttpSession會話跟蹤示例</title>
</head>
<body>
    <div style="text-algin: center; padding-top: 12px;">
        <form action="servlet1" method="get">
            名字:<input type="text" name="username" value="maxsu"/><input type="submit"
                value="提交" />
        </form>
    </div>
</body>
</html>

文件:FirstServlet.java -

package com.yiibai;

import java.io.IOException;
import java.io.PrintWriter;

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;

/**
 * Servlet implementation class FirstServlet
 */
public class FirstServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        try {
            PrintWriter out = response.getWriter();
            String username = request.getParameter("username");
            out.print("你好, " + username);

            HttpSession session = request.getSession();
            session.setAttribute("username", username);
            session.setAttribute("age", "22");
            out.print("<hr/><a href='servlet2'>在第二個Servlet訪問Session屬性值</a>");

            out.close();

        } catch (Exception e) {
            System.out.println(e);
        }
    }

}

文件:SecondServlet.java -

package com.yiibai;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class SecondServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) {
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        try {
            PrintWriter out = response.getWriter();
            HttpSession session = request.getSession(false);
            String n = (String) session.getAttribute("username");
            String age = (String) session.getAttribute("age");
            out.print("您好, " + n + " !<br/> ");
            out.print("你的年齡是: " + age + " 歲 ");
            out.close();

        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

文件:web.xml -

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    id="WebApp_ID" version="3.1">
    <display-name>HttpSession</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <servlet>
        <servlet-name>serv1</servlet-name>
        <servlet-class>com.yiibai.FirstServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>serv1</servlet-name>
        <url-pattern>/servlet1</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>s2</servlet-name>
        <servlet-class>com.yiibai.SecondServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>s2</servlet-name>
        <url-pattern>/servlet2</url-pattern>
    </servlet-mapping>
</web-app>

在編寫上面代碼后,部署此Web應用程序(在項目名稱上點擊右鍵->”Run On Server…”),打開瀏覽器訪問URL: http://localhost:8080/HttpSession/ ,如果沒有錯誤,應該會看到以下結果 -

在上面輸入框中輸入:maxsu,提交應該會看到以下結果 -

注意:此時FirstServletHttpSession的對象調用了setAttribute()方法,設置了兩個屬性:usernameage的值。

點擊上面的“在第二個Servlet訪問Session屬性值”鏈接,可以看到讀取Session屬性的結果如下 -