正确的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架构项目实战教程及大厂面试题库,进我扣裙 :七吧伞吧零而衣零伞 (数字的谐音)转换下可以找到了,还可以跟老架构师交流

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

posted @ 2020-05-18 10:19  程序员的人生A  阅读(341)  评论(0编辑  收藏  举报