• 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对象去执行。

  • 相关阅读:
    创作2周年?浅记一下~
    贷中客群评级的场景实现,来试试这些多维的实操方法
    java计算机毕业设计口腔医院网站源码+数据库+系统+lw文档+mybatis+运行部署
    Java实现图书管理系统
    java: PushbackInputStream
    都是程序员,来认识一下啊!
    CM46 合法括号序列判断 - 题解
    java面试题2019_java面试题及答案_java面试题库
    桥接模式(Bridge Pattern)
    【贵阳网络安全宣传周】智安网络邀你共赴网络宣传周的奇幻之旅
  • 原文地址:https://blog.csdn.net/Leon_Jinhai_Sun/article/details/126573138