Java学习记录 04SpringMVC 重定向和转发

SpringMVC 重定向和转发

Spring MVC 请求方式 分为:转发、重定向 2种。在Servlet中 请求方式处理都是在 controller层 !!!

转发

客户浏览器发送 http 请求,在内部方法中完成请求处理和转发动作。在这里转发的路径必须是同一个 Web 容器下的 URL,其不能转向到其他的 Web 路径上,中间传递的是自己的容器内的 request

重定向

客户浏览器发送 http 请求,Web 服务器接受后发送 302 状态码响应及对应新的 URL地址 给客户浏览器,客户浏览器发现是 302 响应,则自动再发送一个新的 http 请求,请求 URL 是新的地址,服务器根据此请求寻找资源并发送给客户

重定向与转发的区别

  • 重定向 会改变地址,requset存储的数据会丢失
    转发 时地址会显示请求页面的地址,保存了页面的数据
  • 重定向 两次请求 两次响应
    转发 一次请求 一次响应

应用测试

应用前提&说明

NavigationController类 控制器

@Controller
@RequestMapping ("/navigation")
public class NavigationController {
    ····
}

navigationTest.jsp文件响应形式

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>navigationTest</title>
</head>
<body>
    <h1> 跳转 & 重定向 测试</h1>
    <h2>参数测试</h2>
    
    <h3>requestScope 作用域</h3>
    <div>
        <span>id: ${requestScope.id}</span> <br>
        <span>name: ${requestScope.name}</span>
    </div>
    
    <h3>pageScope 作用域</h3>
    <div>
        <span>id: ${pageScope.id}</span> <br>
        <span>name: ${pageScope.name}</span>
    </div>
    
    <h3>sessionScope 作用域</h3>
    <div>
        <span>id: ${sessionScope.id}</span> <br>
        <span>name: ${sessionScope.name}</span>
    </div>
    
</body>
</html>

转发

/**
 *  String 形式转发
 *  应用前提:前缀 需要 forward关键字
 */
@RequestMapping("forwardString")
public String forwardString(HttpServletRequest request) {
    request.setAttribute("id" , 1);
    request.setAttribute("name" , "柏竹");
    //return "jsp/navigationTest.jsp"
    return "forward:/jsp/navigationTest.jsp";
}
/**
 *  ModelAndView 形式转发
 *  应用前提:前缀 需要 forward关键字
 */
@RequestMapping("forwardMAV")
public ModelAndView forwardMAV(){
    ModelAndView mv = new ModelAndView();
    mv.addObject("id",2);
    mv.addObject("name","智乃");
    mv.setViewName("forward:/jsp/navigationTest.jsp");
    return mv;
}
/**
 *  String 形式转发 控制器
 */
@RequestMapping("forwardString2")
public String forwardString2(HttpServletRequest request) {
    request.setAttribute("id" , 6);
    request.setAttribute("name" , "纱雾");
    return "forward:/navigation/forwardString";
}
/**
 *  ModelAndView 形式转发 控制器
 */
@RequestMapping("forwardMAV2")
public ModelAndView forwardMAV2(){
    ModelAndView mv = new ModelAndView();
    mv.addObject("id",7);
    mv.addObject("name","琪露诺");
    mv.setViewName("forward:/navigation/forwardMAV");
    return mv;
}

重定向

/**
 *  String 重定向
 */
@RequestMapping("redirectString")
public String redirectString(HttpServletRequest request) {
    request.setAttribute("id",4);
    request.setAttribute("name","黑猫");
    return "redirect:/jsp/navigationTest.jsp";
}
/**
 *  ModelAndView 重定向
 */
@RequestMapping("redirectMAV")
public ModelAndView redirectMAV() {
    ModelAndView mv = new ModelAndView();
    mv.addObject("id",5);
    mv.addObject("name","蕾姆");
    mv.setViewName("redirect:/jsp/navigationTest.jsp");
    return mv;
}
//重定向 控制器

/**
 *  String 控制器重定向
 */
@RequestMapping("redirectString2")
public String redirectString2(HttpServletRequest request) {
    request.setAttribute("id",8);
    request.setAttribute("name","香子兰");
    return "redirect:/navigation/redirectString";
}
/**
 *  ModelAndView 控制器重定向
 */
@RequestMapping("redirectMAV2")
public ModelAndView redirectMAV2() {
    ModelAndView mv = new ModelAndView();
    mv.addObject("id",9);
    mv.addObject("name","黑子");
    mv.setViewName("redirect:/navigation/redirectMAV");
    return mv;
}

  ModelAndView mv = new ModelAndView();
    mv.addObject("id",9);
    mv.addObject("name","黑子");
    mv.setViewName("redirect:/navigation/redirectMAV");
    return mv;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值