• SpringMVC基础:请求转发和重定向


    重定向和请求转发

    重定向和请求转发也非常简单,我们只需要在视图名称前面添加一个前缀即可,比如重定向:

     

    1. @RequestMapping("/index")
    2. public String index(){
    3. return "redirect:home";
    4. }
    5. @RequestMapping("/home")
    6. public String home(){
    7. return "home";
    8. }

    通过添加redirect:前缀,就可以很方便地实现重定向,那么请求转发呢,其实也是一样的,使用forward:前缀表示转发给其他请求映射:

    1. @RequestMapping("/index")
    2. public String index(){
    3. return "forward:home";
    4. }
    5. @RequestMapping("/home")
    6. public String home(){
    7. return "home";
    8. }

    使用SpringMVC,只需要一个前缀就可以实现重定向和请求转发,非常方便。

    Bean的Web作用域

    在学习Spring时我们讲解了Bean的作用域,包括singletonprototype,Bean分别会以单例和多例模式进行创建,而在SpringMVC中,它的作用域被继续细分:

    • request:对于每次HTTP请求,使用request作用域定义的Bean都将产生一个新实例,请求结束后Bean也消失。
    • session:对于每一个会话,使用session作用域定义的Bean都将产生一个新实例,会话过期后Bean也消失。
    • global session:不常用,不做讲解。

    这里我们创建一个测试类来试试看:

    1. public class TestBean {
    2. }

    接着将其注册为Bean,注意这里需要添加@RequestScope或是@SessionScope表示此Bean的Web作用域:

    1. @Bean
    2. @RequestScope
    3. public TestBean testBean(){
    4. return new TestBean();
    5. }

    接着我们将其自动注入到Controller中:

    1. @Controller
    2. public class MainController {
    3. @Resource
    4. TestBean bean;
    5. @RequestMapping(value = "/index")
    6. public ModelAndView index(){
    7. System.out.println(bean);
    8. return new ModelAndView("index");
    9. }
    10. }

    我们发现,每次发起得到的Bean实例都不同,接着我们将其作用域修改为@SessionScope,这样作用域就上升到Session,只要清理浏览器的Cookie,那么都会被认为是同一个会话,只要是同一个会话,那么Bean实例始终不变。

    实际上,它也是通过代理实现的,我们调用Bean中的方法会被转发到真正的Bean对象去执行。

  • 相关阅读:
    【408数据结构与算法】—栈和队列的案例引入(九)
    【力客热题HOT100】-【057】169 多数元素
    html的使用
    Linux下中间件tomcat安装配置(阿帕奇猫)
    Java8新特性之stream、map和reduce
    每日4道算法题——第004天
    【深度学习】实验12 使用PyTorch训练模型
    openresty关于时区的处理
    ELSEVIER期刊论文投稿全流程实例讲解
    单例模式可以被破坏
  • 原文地址:https://blog.csdn.net/Leon_Jinhai_Sun/article/details/126573138