Spring Mvc那點事---(6)Spring Mvc @ModelAttribute屬性和@SessionAttribute屬性
阿新 • • 發佈:2019-01-10
@ModelAttribute屬性和@SessionAttribute屬性主要用來在不同控制器和模型之間共享資料.預設情況下,map的資訊只是在request當前請求有效,如果想在一個controller中共享資料,可以使用這兩個屬性。
@ModelAttribute可以用在action方法上,也可以用在Controller上,一個Controller中標記@ModelAttribute的方法在其他方法執行前先執行。在呼叫所有方法之前先執行@ModelAttribute標記的方法
可以在前臺頁面訪問到ModelAttribute標記的方法@Controller @RequestMapping("/User") public class UserController { @RequestMapping(value="userdetail") public String userdetail() { return "userdetail"; } @ModelAttribute("username") public String GetUserName() { //訪問controller之前,先執行@ModelAttribute標記的方法,可以在前臺頁面訪問到共享資料 return "公用賬戶"; } }
2.@SessionAttributes<%@ 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> ${username} </body> </html>
使用SessionAttributes可以將map中的資訊放置到session中共享,通常情況下SessionAttributes主要標記在controller上,指定哪些資訊需要存放到session中,下面的程式碼我們將id存放到session中
package com.springfirst.Controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
@Controller
@RequestMapping("/User")
@SessionAttributes("id")
public class UserController {
@RequestMapping(value="userdetail")
public String userdetail(ModelMap model)
{
model.addAttribute("id", "0001");
return "userdetail";
}
@ModelAttribute("username")
public String GetUserName()
{
//訪問controller之前,先執行@ModelAttribute標記的方法,可以在前臺頁面訪問到共享資料
return "公用賬戶";
}
}
區別
1.使用SessionaAttributes標記的屬性主要把資訊放到session中,主要標記在Controller上
2.使用ModelAttribute標記的主要用在方法上,然後在Action的方法引數裡面加上ModelAttribute標記可以訪問到
@RequestMapping(value="userdetail")
public String userdetail(@ModelAttribute("username") String name,ModelMap model)
{
System.out.print(name);
model.addAttribute("id", "0001");
return "userdetail";
}