Spring实战(第四版)读书笔记14——基本的控制器

1、编写基本控制器

例子:

@Controller
@RequestMapping({"/", "/homepage"})
public class HomeController {
	
	@RequestMapping(method=GET)
	public String home() {
		return "home";
	}
}

2、测试控制器

例子:

package spittr.web;


import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.*;
import org.junit.Test;
import org.springframework.test.web.servlet.MockMvc;

public class HomeControllerTest {
	
	@Test
	public void testHomePage() throws Exception{
		HomeController controller = new HomeController();
		MockMvc mockMvc = standaloneSetup(controller).build();
		mockMvc.perform(get("/")).andExpect(view().name("home"));
	}
}

3、传递模型数据到视图中

不指定Model中key的例子:

@Controller
@RequestMapping("/spittles")
public class SpittleController {
	
	private SpittleRepository spittleRepository;
	
	@Autowired
	public SpittleController(SpittleRepository spittleRepository){
		this.spittleRepository = spittleRepository;
	}
	
	@RequestMapping(method=RequestMethod.GET)
	public String spittles(Model model) {
		model.addAttribute(spittleRepository.findSpittles(Long.MAX_VALUE, 20));
		return "spittles";
	}
}

显示声明模型的key的例子:

@RequestMapping(method=RequestMethod.GET)
	public String spittles(Model model) {
		model.addAttribute("spittleList", spittleRepository.findSpittles(Long.MAX_VALUE, 20));
		return "spittles";
	}

使用非Spring类型的java.util.Map代替Model的例子:

@RequestMapping(method=RequestMethod.GET)
	public String spittles(Map model) {
		model.put("spittleList", spittleRepository.findSpittles(Long.MAX_VALUE, 20));
		return "spittles";
	}

不返回视图名称,也不显示设定模型的例子:

@RequestMapping(method=RequestMethod.GET)
public List<Spittle> spittles(){
    return spittleRepository.findSpittles(Long.MAX_VALUE, 20));
}

当处理器方法返回对象或者集合时,这个值会放到模型中,模型的key会根据其类型推断得出(本例中为spittleList)。而逻辑视图的名称将会根据请求路径推断得出,因为这个方法处理针对"/spittles"的GET请求,因此视图的名称将会时spittles(去掉开头的斜线)。

猜你喜欢

转载自blog.csdn.net/Nemoosi/article/details/107354802