[infobox title=”导航”]
在WEB应用程序开发时,页面跳转有几种方式?
① 服务器转发 ② 客户端重定向
在Spring MVC种导航的两种实现方式:
① 返回字符串(推荐) ② 使用ModelAndView
在Spring MVC种两种导航进行跳转时,前缀不同:
1转发: forward:
2重定向: redirect:
[/infobox]
1.转发到页面:
[sourcecode language=”java” title=”com.controller.ForwordController.java”]
package com.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller("ForwordController")
@RequestMapping("/forward")
public class ForwordController {
//使用ModelAndView实现转发到jsp页面
@RequestMapping("demo01")
public ModelAndView demo01(){
System.out.println("demo01 is ran…");
ModelAndView mav = new ModelAndView();
// 如果转发到jsp页面,不用像下面写的这么复杂,因为他是默认方式
// mav.setViewName("forward:/exp.jsp");
mav.setViewName("exp"); //记得创建一个exp.jsp
return mav;
}
//使用String类型转发到Controller
@RequestMapping("demo02")
public String demo02(){
System.out.println("demo02 is ran…");
return "forward:/forward/demo01.xhtml";
}
}
[/sourcecode]
2.重定向:
Spring MVC的规范是不直接访问jsp页面,所以重定向时就只有Controller。
[sourcecode language=”java” title=”com.controller.RedirectController.java”]
package com.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller("RedirectController")
@RequestMapping("/redirect")
public class RedirectController {
@RequestMapping("demo01")
public String demo01(@RequestParam("goodsId") int goodsId){
System.out.println("demo01 is ran…");
System.out.println("goodsId:" + goodsId);
return "exp"; //创建exp.jsp页面
}
@RequestMapping("demo02")
public String demo02(Model model){
System.out.println("demo02 is ran…");
model.addAttribute("goodsId", 6);
return "redirect:/redirect/demo01.xhtml";
//实现demo02重定向到demo01,并且附带了goodsId的参数
}
}
[/sourcecode]
项目源代码:[bdbtn]https://pan.benzhu.xyz/代码/源代码/Spring/源代码/mvc04.rar[/bdbtn]