SpringMVC进阶详解

SpringMVC进阶

一. 实用1:使用视图解析器

需求说明

SpringMVC进阶详解_第1张图片

代码实现

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";
    }

小结:

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

二.实用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”})

看完恭喜你,又知道了一点点!!!

**你知道的越多,不知道的越多! **

**~感谢志同道合的你阅读, 你的支持是我学习的最大动力 ! ****加油 ,陌生人一起努力,共勉!!**​​​​​​​

你可能感兴趣的:(SpringMVC,mvc,java)