1. 程式人生 > >@SessionAttribute示例及伺服器跳轉和重定向寫法

@SessionAttribute示例及伺服器跳轉和重定向寫法

package com.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.bind.support.SessionStatus;

import com.entity.Person;

@Controller
@RequestMapping(value="/model/")//前面有過m1映射了,可以通過這種方式模組化
@SessionAttributes(value="person")//自動將ModelAttribute或方法裡的person屬性放到session作用域了
public class HelloAnnotation2 {
	@ModelAttribute("person")//它先於其他處理方法執行,將封裝的資料一次提交給檢視了,不用在每個方法裡,寫同樣的提交程式碼
	public Person getPerson(){
		Person person = new Person();
		person.setName("zhongbencong");
		person.setSex("男");
		return person;
	}

	@RequestMapping("/m1")
	public String m1(){
		return "index";
	}
	
	@RequestMapping("/m2")
	public String m2(SessionStatus sessionStatus){
		//@SessionAttribute是session作用域,但不等同HttpSession,用session.removeAttribute無法刪除
		//只能通過接收SessionStatus實現類引數,按如下程式碼刪除
		if(!sessionStatus.isComplete())
			sessionStatus.setComplete();
		return "index";
	}
	
	//跳過檢視解析器的伺服器跳轉
	@RequestMapping("/m3")
	public String m3(){
		return "forward:/index.jsp";
	}
	
	//重定向(跳過檢視解析器)
	@RequestMapping("/m4")
	public String m4(){
		return "redirect:/index.jsp";
	}
}