zoukankan      html  css  js  c++  java
  • 正确的SpringMVC进阶案例详解,60%的人没搞懂

     

    SpringMVC进阶详解

    代码实现

    springMVC的配置:

    @Configuration
    @ComponentScan(basePackages={"com.czxy.demo1.controller"})
    public class MVCConfiguration {
    
        /**
         * 设置了一个视图解析器,交给spring管理
         * @return
         */
        @Bean
        public InternalResourceViewResolver getInternalResourceViewResolver(){
            InternalResourceViewResolver internalResourceViewResolver = new InternalResourceViewResolver();
            //设置前缀
            internalResourceViewResolver.setPrefix("/");
            //设置后缀
            internalResourceViewResolver.setSuffix(".jsp");
            return internalResourceViewResolver;
        }
    }
    

    Demo1Controller:

    @RequestMapping("/run5")
        public String run5(){
            System.out.println("run5");
    //        return "/demo5.jsp";
            //视图解析器会自动补全为:   /demo5.jsp
            return "demo5";
        }
    

     注意:光理论是不够的。在此顺便送大家十套2020最新JAVA架构项目实战教程及大厂面试题库,进我扣裙 :七吧伞吧零而衣零伞 (数字的谐音)转换下可以找到了,还可以跟老架构师交流

    小结:

    视图解析器: 控制器的返回值会经过视图解析器,自动补全 前缀和 后缀。

    二.实用2:​ 绕开视图解析器

    代码实现

    Demo1Controller

    @RequestMapping("/run6")
        public String run6(){
            System.out.println("run6");
            //绕开视图解析器方式一:重定向
    //        return "redirect:/demo6.html";
            //绕开视图解析器方式二:完整版的请求转发
            return "forward:/demo6.html";
        }
    

    小结:

    绕开视图解析器:

    重定向: return “redirect:/路径”;

    完整版的请求转发:return “forward:/路径”;

    三. 知识点:Controller方法返回值

    返回字符串

    三种:

    使用视图解析器(请求转发): return 资源名”;

    绕开视图解析器-请求转发:return “forward:/路径”;

    绕开视图解析器-重定向:return “redirect:/路径”;

    返回ModelAndView(SpringMVC特有)

    /*
        * 需要跳转到demo5.jsp上   ModelAndView
        * */
        @RequestMapping("/run7")
        public ModelAndView run7(){
            ModelAndView mav = new ModelAndView();
            //设置request作用域传递参数 相当于request.setAttribute
            mav.addObject("uname","煌煌");
            //设置跳转路径
            mav.setViewName("demo5");//使用视图解析器,请求转发
    //        mav.setViewName("forward:/demo5.jsp");//绕开视图解析器,请求转发
    //        mav.setViewName("redirect:/demo5.jsp");//绕开视图解析器,重定向
            return mav;
        }
    

     

    ModelAndView:springMVC专门用来封装作用域数据,并且跳转页面

    四.​​​​​​​ 知识点:@RequestMapping

    窄化请求路径

    @RequestMapping放在类名上边,设置请求前缀

    @RequestMapping放在方法名上边,设置方法对应请求路径。

    完整请求:前缀 + 请求路径

    多路径映射

    /*
    *   /项目名/d1/run8.action
    *   /项目名/d1/8run.action
    *   /项目名/d1/run88.action
    * */
    @RequestMapping(value = {"/run8","/8run","/run88"})
    public String run8(){
        System.out.println("run8");
        return "index";
    }
    

    请求方式限定

    默认情况下,不会限定请求方式,get/post或其他方式均可访问

    /*
        该方法的请求方式,仅允许POST方式
    * */
    @RequestMapping(value = {"/run9"},method = {RequestMethod.POST})
    public String run9(){
        System.out.println("run8");
        return "index";
    }
    

    今日总结:

    视图解析器:

    在控制器执行之后,为控制器补全前缀和后缀。

    Controller方法的返回值:

    demo1.jsp

    使用视图解析器:return “demo1”;

    绕开视图解析器:

    请求转发:return “forward:/demo1.jsp”;

    重定向:return “redirect:/demo1.jsp”;

    ModelAndView:封装请求数据,跳转页面

    addObject();    向request作用域保存键值对

    setViewName(); 设置跳转路径。

    @RequestMapping:为方法/类设置访问路径。

    @RequestMapping(value={“/run1”,”/1run”})

    注意:最后送大家十套2020最新JAVA架构项目实战教程及大厂面试题库,进我扣裙 :七吧伞吧零而衣零伞 (数字的谐音)转换下可以找到了,还可以跟老架构师交流

    本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

  • 相关阅读:
    LeetCode偶尔一题 —— 617. 合并二叉树
    《剑指offer》 —— 链表中倒数第k个节点
    《剑指offer》 —— 青蛙跳台阶问题
    《剑指offer》—— 二维数组中的查找
    《剑指offer》—— 替换空格
    《剑指offer》—— 合并两个排序的链表
    《剑指offer》—— 礼物的最大价值
    生成Nuget 源代码包来重用你的Asp.net MVC代码
    Pro ASP.Net Core MVC 6th 第四章
    Pro ASP.NET Core MVC 6th 第三章
  • 原文地址:https://www.cnblogs.com/chengxuyuanaa/p/12909047.html
Copyright © 2011-2022 走看看