Spring MVC的跳转方式

首先,处理器的实现和url映射,均使用注解方式。

package com.duxd.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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

// 该注解标识了这个类是个Controller,也可用实现Controller接口来获得相同效果
@Controller
public class HelloController {
	// 该注解可将url映射到下面的方法
	@RequestMapping("/Hello")


视图解析器和注解扫描的配置

<!-- 配置视图解析器 -->
	<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
	    <!-- 结果视图的前缀 -->
	    <property name="prefix" value="/WEB-INF/jsp/"/>
	    <!-- 结果视图的后缀 -->
	    <property name="suffix" value=".jsp"/>
	</bean>
	
	<!-- 扫描该包下的注解 -->
	<context:component-scan base-package="com.duxd.controller" />


一.通过设置视图解析器和ModelAndView对象

@RequestMapping("/Hello")
	public ModelAndView Hello(HttpServletRequest req, HttpServletResponse resp) {
		// 重定向,视图解析器的路径设置无效
		// ModelAndView mv = new ModelAndView("redirect:/Index.jsp");
		// 转发,视图解析器的路径设置无效
		// ModelAndView mv = new ModelAndView("forward:/Index.jsp");
		// 也是转发,视图解析器的路径设置有效
		ModelAndView mv = new ModelAndView();
		// 封装要显示到视图的数据
		mv.addObject("msg", "Hello Spring MVC Annotation!");
		// 视图名(根据视图解析器的设置,寻找WEB-INF/jsp/Hello.jsp,而不是寻找根目录下的Hello.jsp)
		mv.setViewName("Hello");
		return mv;
	}


二.通过Servlet API转发和重定向,视图解析器不干扰路径

@RequestMapping("/Hello1")
	public void Hello1(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
		// resp.getWriter().print("Hello Spring MVC use HttpServlet API!");
		// PrintWriter out = resp.getWriter();
		// out.print("Hello Spring MVC use HttpServlet API!");
		// 实现重定向
		resp.sendRedirect("Index.jsp");
		// 实现转发
		// req.getRequestDispatcher("Index.jsp").forward(req, resp);
	}


三.通过Spring MVC转发或重定向,视图解析器干扰路径

@RequestMapping("/Hello2")
	public String Hello2() {
		// 转发
		// return "Index.jsp";
		// 等同于return "forward:Index.jsp"
		// 重定向
		return "redirect:Index.jsp";
	}


四.通过Spring MVC转发,使用视图解析器

@RequestMapping("/Hello3")
	public String Hello3() {
		// 转发,视图解析器的路径设置有效
		return "Index";
		// 没有重定向或者说视图解析器的路径无效
	}

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值