Penelitian utama dalam artikel ini adalah konten yang relevan dari Spring Learning @SessionAttributes, sebagai berikut.
Secara default, ruang lingkup atribut di ModelMap adalah tingkat permintaan, yaitu, ketika permintaan selesai, atribut dalam ModelMap akan dihancurkan. Jika Anda ingin berbagi properti di ModelMap dalam beberapa permintaan, Anda harus mentransfer properti mereka ke sesi sehingga properti ModelMap dapat diakses di seluruh permintaan.
Spring memungkinkan kami untuk secara selektif menentukan properti mana dalam ModelMap yang perlu ditransfer ke sesi sehingga properti ini juga dapat diakses dalam daftar properti ModelMap yang sesuai dengan atribut yang diminta berikutnya. Fungsi ini diimplementasikan dengan memberi label anotasi @SessionAttributes pada definisi kelas.
Buat sifat spesifik objek model memiliki ruang lingkup lingkup sesi
Paket com.baoBaotao.web;… impor org.springframework.ui.modelmap; impor org.springframework.web.bind.annotation.SessionAttributes; @controller @requestmapping ("/bbtforum.do") @SESSESTRIBUTS (" Daftar atribut sesi sehingga atribut ini dapat mengakses kelas publik bbtforumController {... @RequestMapping (params = "method = listboardtopic") public string listboardtopic (@RequestParam ("id") int topicid, model, modelmap) {bbtForumservice.getboardopics (topicid) (topicid) {bBtForumService.getboardtopics) (Topicid); " TopicId); System.out.println ("Pengguna:" + Pengguna); Model.AdDattribute ("Curruser", User); // ②Ardd Properti ke ModelMap Return "ListTopic";}} Kami menambahkan atribut ModelMap di ②, yang atributnya adalah Curruser, dan di ①, kami menempatkan atribut bernama Curruser di ModelMap ke dalam sesi melalui @SessionAttributes anotasi. Oleh karena itu, kami tidak hanya dapat memperoleh objek pengguna melalui request.getAttribute(“currUser”) dan session.getAttribute(“currUser”) di halaman tampilan JSP yang sesuai dengan permintaan ListBoardTopic (), tetapi juga mengakses atribut ini melalui session.getAttribute(“currUser”) atau ModelMap#get(“currUser”) di JSP Tampilan Jsp.
Di sini kami hanya memasukkan atribut ModelMap ke dalam sesi. Bahkan, @SessionAttributes memungkinkan beberapa atribut untuk ditentukan. Anda dapat menentukan beberapa atribut melalui array string, seperti @SessionAttributes({“attr1”,”attr2”}) . In addition ,@SessionAttributes can also specify the ModelMap attribute to be sessionized through the attribute type, such as @SessionAttributes(types = User.class) , and of course, multiple classes can also be specified, such as @SessionAttributes(types = {User.class,Dept.class}) , and can also use the attribute name and attribute type specification in conjunction with: @SessionAttributes(types = {User.class,Dept.class},value={“attr1”,”attr2”}) .
Kami dapat menambahkan @SessionAttributes ke pengontrol yang perlu mengakses properti sesi, dan kemudian menambahkan @ModelAttribute ke parameter pengguna yang diperlukan oleh tindakan, dan memastikan bahwa nama atribut keduanya konsisten. SpringMVC akan secara otomatis menyuntikkan atribut yang ditentukan oleh @SessionAttributes ke dalam objek ModelMap. Saat mengatur daftar parameter tindakan, buka ModelMap untuk mendapatkan objek seperti itu dan menambahkannya ke daftar parameter. Selama kami tidak menyebut metode setComplete() dari sessionStatus, objek ini akan disimpan dalam sesi, dengan demikian mewujudkan berbagi informasi sesi.
@Controller @SessionAttributes ("CurrentAser") </span> Public Class Salam Kontrol {@Requestmapping public void hello (@modelattribute ("CurrentUser") pengguna pengguna) {// user.sayhello ()}}Di atas adalah semua konten dari artikel ini tentang analisis instance @SessionAttributes dari Spring Learning. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!