springmvc配置视图解析器和重定向

为什么需要配置视图解析器

看图

在这里插入图片描述

配置步骤

第一步:需要在springmvc.xml配置

<!-- 配置SpringMVC的视图解析器: 配置前缀和后缀 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<!-- 配置视图跳转的前缀 -->
		<property name="prefix" value="/WEB-INF/view/"/>
		<!-- 配置视图跳转的后缀 -->
		<property name="suffix" value=".jsp"/>
	</bean>

第二步:配置视图解析器后的controller代码

Controller方法返回字符串表示逻辑视图名,通过视图解析器解析为物理视图地址。 此时默认的物理视图地址为:视图前缀+返回值+视图后缀
	/*
	 * 方法返回ModelAndView 方式
	 * ModelAndView
	 * 	Model : 模型,数据
	 *  View :视图
	 * 将需要共享的数据也跳转的视图封装到ModelAndView对象中,方法直接返回即可
	 *  
	 *  默认只能使用请求转发
	 */
	@RequestMapping("/method2")
	public ModelAndView method2() {
		
		ModelAndView mv = new ModelAndView();
		//共享数据
		mv.addObject("username", "莉莉");
		//设置视图地址
		//配置视图解析器前后缀之前
		//mv.setViewName("/WEB-INF/view/hello.jsp");
		//配置视图解析器前后缀之后
		mv.setViewName("hello");
		
		return mv;
	}
	/*
	 * 方法返回String 字符串方式
	 * 
	 * 方法返回的字符就是要跳转的地址
	 * 
	 * 在方法中注入一个Model 对象,在Model中共享数据
	 * 
	 * 默认使用请求转发
	 */
	@RequestMapping("/method3")
	public String method3(Model m) {
		System.out.println(m.getClass().getName());
		//共享数据
		m.addAttribute("username", "吉姆");
		//配置视图解析器前后缀之前
		//return "/WEB-INF/view/response.jsp";
		//配置视图解析器前后缀之后
		return "response";
	}

解决配置视图解析器带来的问题

如果直接使用视图解析器的配置开发,那么必须保证视图解析器前缀目录下面有对应的页面文件才能跳转,否则报错
默认页面跳转也只能使用请求转发跳转,不能使用重定向
需要解决问题: 除了使用视图解析器对应规则的开发,用户还得自定义跳转方式,和自定义跳转页面 方案: 使用视图解析器的 请求转发和重定向配置,可以打破默认的规则 public static final String REDIRECT_URL_PREFIX = "redirect:"; public static final String FORWARD_URL_PREFIX = "forward:";
	/*
	 * 
	 * 问题1:上述两种方法默认只能进行请求转发跳转,如何进行重定向跳转?
	 * 问题2: 跳转的页面永远只能按照视图解析的前后缀路径放,如何页面放在其他目录下面也能跳转
	 * 
	 * 解决方案:使用视图解析器中自定义的页面跳转功能(使用这种,只适用返回String字符串的方式)
	 *  在返回的字符串前面加上前缀 
	 *  重定向
	 *  	redired:跳转的页面
	 *  请求转发
	 *  	forward:要跳转的页面
	 *  
	 *  	
	 */
	
	//自定义请求转发页面(打破默认的视图解析器前后缀规则跳转的页面)
	
	@RequestMapping("/method4")
	public String method4(Model m) {
		m.addAttribute("username", "韩梅梅");
		return "forward:/WEB-INF/user_list.jsp";
	}

重定向

	//自定义重定向
	@RequestMapping("/method5")
	public String method5() {
		return "redirect:http://www.jd.com";
	}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值