举个例子:
@Controller
@RequestMapping("/book")
public class BookController {
//controller层 调 service层(其中,service层调用dao层)
@Autowired
@Qualifier("BookServiceImpl") //确定注入实现类是BookServiceImpl
private BookService bookService;
//查询全部的书籍,并且返回到一个书籍展示页面
@RequestMapping("/allBook")
public String list(Model model){
List<Books> list = bookService.queryAllBook();
model.addAttribute("list",list);
return "allBook";
}
//跳转到增加书籍页面
@RequestMapping("/toAddBook")
public String toAddPaper(){
return "addBook";
}
//添加书籍的请求
public String addBook(Books books){
System.out.println(books);
bookService.addBook(books);
return "redirect:/book/allBook";//重定向到我们@RequestMapping("/allBook")请求
}
}
return "allBook" 、return "addBook"作用是通过视图解析器加上前缀"/WEB-INF/jsp/"及后缀".jsp"找到WEB-INF/jsp/下的allBook.jsp、addBook.jsp文件,然后响应到前端页面去显示。说白了就是,跳转到对应的allBook.jsp及addBook.jsp页面。
return "redirect:/book/allBook"作用是重定向到@RequestMapping("/allBook")请求,然后再根据所请求方法中的逻辑去处理业务。
总结,return+文件的名字,就是纯粹用于跳转页面,将该资源响应给前端, 而return+"redirect:"就用于再次向服务器发起请求。