เซสชันเริ่มต้นใน struts 2.0

ใน asp.net global.asax สามารถมีเหตุการณ์ session_start ได้ เมื่อผู้ใช้เยี่ยมชมเว็บไซต์ครั้งแรก เซสชั่นเริ่มต้น เหตุการณ์จะทริกเกอร์ สิ่งที่คล้ายกันใน struts หรือ java ระบุไว้หรือไม่?


person user1883329    schedule 11.05.2013    source แหล่งที่มา


คำตอบ (3)


คุณสามารถใช้อินเทอร์เฟซ javax.servlet.http.HttpSessionListener และลงทะเบียนใน web.xml วิธีการของคลาสการใช้งานของคุณจะถูกเรียกใช้ในการสร้าง/ทำลายเซสชัน ฯลฯ

รายการใน web.xml จะมีลักษณะดังนี้

<listener>
    <description>sessionListener</description>
    <listener-class>
        your.com.HttpSessionListenerImplementation
    </listener-class>
</listener>

สิ่งนี้ไม่เกี่ยวข้องกับ struts แต่เป็นส่วนหนึ่งของ servlet API และพร้อมใช้งานในคอนเทนเนอร์เซิร์ฟเล็ตใดๆ

person Dev Blanked    schedule 11.05.2013

ไม่ได้อยู่ใน Struts2 และไม่ใช่คุณสมบัติในตัว แน่นอนคุณสามารถแก้ไขได้ด้วยสแต็ก interceptor/interceptor

ใน Java EE เซสชันเป็นหน้าที่ของแอปพลิเคชันเซิร์ฟเวอร์ ด้วยเหตุนี้ เราจึงควรสรุปได้ว่าเรามีเซสชันอยู่เสมออย่างน้อยจากมุมมองของ struts2

ผู้ชายคนนี้แสดงตัวอย่างที่ชัดเจนของวิธีสร้าง interceptor: http://www.mkyong.com/struts2/struts-2-creating-own-interceptor/

สำหรับรายละเอียดมากมายเกี่ยวกับ interceptors โปรดดู: http://struts.apache.org/release/2.1.x/docs/interceptors.html

ที่ด้านล่างสุดของลิงค์สุดท้ายจะมีลิงค์นี้: เราจะเข้าถึงเซสชันได้อย่างไร (จาก Interceptor เพราะในการดำเนินการเราจะใช้ SessionAware แม้ว่าเราจะเข้าถึงเซสชันด้วยวิธีนี้ได้เช่นกัน)

โดยทั่วไป คุณอาจต้องการดำเนินการบางอย่างที่พิเศษเมื่อมีคนเข้าสู่ระบบ และการลงชื่อเข้าใช้จะเป็นที่ที่ดีในการใส่สิ่งที่คุณต้องการลงในเซสชัน ด้วยเหตุผลบางอย่าง คุณจึงต้องการให้บางสิ่งบางอย่างเข้าที่เร็วขึ้น เพื่อย้ำ:

  1. สร้าง Interceptor SessionSetup แบบกำหนดเอง
  2. ลงทะเบียน interceptor ของคุณและสร้าง interceptor stack แบบกำหนดเองใน struts.xml
  3. ให้แพ็คเกจทั้งหมดของคุณใช้สแต็กนี้
person Quaternion    schedule 11.05.2013

คุณสามารถใช้ตัวดักขอบเขตเซสชันที่ให้ไว้ใน struts 2 สำหรับการจัดการเซสชัน ต่อไปนี้เป็นการใช้งานที่ดี คุณสามารถระบุว่าคุณต้องการเริ่มเซสชันด้วยพารามิเตอร์ "start" หรือไม่

<interceptor-ref name="scope">
                <param name="type">start</param>
                <param name="session">revisionList,revisionManagmentDetails</param>
                <param name="key">revisionManagementSessionKey</param>
            </interceptor-ref>
person user3820414    schedule 02.05.2018