SpringMVC 控制器中方法之间的跳转(客户端跳转(redirect)和服务器端跳转(forward))

SpringMVC 控制器中方法之间的跳转(客户端跳转(redirect)和服务器端跳转(forward))

示例代码:


package cn.sz.hcq.control;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import cn.sz.hcq.pojo.Users;

@Controller
@RequestMapping("uc")
public class UserController {

	// 处理登录的控制器
	@RequestMapping(value = "islogin", method = RequestMethod.POST)
	public ModelAndView checkLogin(Users users) {
		ModelAndView mav = new ModelAndView();
		if (users.getLoginname().equals("lisi")
				&& users.getLoginpwd().equals("123")) {
			users.setRealname("李四");
			// 返回的数据
			mav.addObject("users", users);
			// 服务器跳转(转发)
			// mav.setViewName("forward:/uc/showinfo");
			// 客户端跳转(重定向)
			mav.setViewName("redirect:/uc/showinfo");
		} else {
			mav.addObject("msg", "用户名或者密码错误");
			// 跳转的页面
			mav.setViewName("login");
		}
		return mav;
	}

	// 显示信息的控制器
	@RequestMapping(value = "showinfo", method = RequestMethod.GET)
	public String showInfo(Model model) {
		System.out.println("showinfo控制器...");
		String msg = "showinfo提示的信息";
		model.addAttribute("msg", msg);
		return "show";
	}

}


SpringMVC 控制器中方法之间的跳转总结:


服务器跳转和客户端跳转的区别:
1.服务器跳转时,地址栏的地址不改变;而客户端跳转的时候,地址栏的地址是会变化的;
2.服务器跳转的时候,能够通过request(或者是 model)来传递数据;而客户端跳转的时候是不能传递数据的


对于服务器端跳转(前后两个控制器的处理方式必须一致,要么都是get,要么都是post):
第一个控制器是post,那么就只能跳转到其他post方式的控制器里面
第一个控制器是get,那么就只能跳转到其他get方法的控制器里面 

对于客户端跳转(不管原来是get,还是post,都只能跳转到其他get方式的控制器里面)
第一个控制器是get,那么只能跳转到其他get方式的控制器里面
第一个控制器是post,只能跳转到其他get方式的控制器里面



你可能感兴趣的:(SpringMVC)