06第六章深入Spring MVC开发(springMVC视图解析、ModelAndView Map Model 添加模板数据、restFul路径)

本文详细介绍了Spring MVC中模型数据的解析与控制器返回值的处理,包括ModelAndView、Map和Model的使用方式,以及String类型返回值实现的转发和重定向。此外,还提及了SpringMVC的表单标签库、数据校验以及RESTful架构的应用。通过实例展示了如何在Controller中处理路径参数以实现不同HTTP方法访问相同路径但执行不同操作的RESTful设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、模型数据解析及控制器返回值

下面的框架可以用我 第五章的布局

1.视图解析器及应用

模型数据的绑定是由视图解析器来完成的,开发时先添加模型数据,再交给视图解析器来绑定。

<!-- 配置springmvc.xml 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
        <!-- 前缀 -->
        <property name="prefix" value="/WEB-INF/jsp/"/> <!-- 注意 jsp后面要写/ -->
        <!-- 后缀 -->
        <property name="suffix" value=".jsp"/>
    </bean>
-1. ModelAndView添加模型数据
//java controller类
@RequestMapping(value = "/item/modelView",method = RequestMethod.GET)
    public ModelAndView model(){ //返回值为ModelAndView
        ModelAndView modelAndView = new ModelAndView();//创建模型modelAndView
        
        modelAndView.addObject("msg","你要给msg变量名的值");//设置变量和值  可以在jsp页面通过el表达式${msg}拿到变量
        modelAndView.setViewName("hello");//设置跳转的jsp页面名称, 因为已配置了视图解析器 所以可以简写jsp文件的名字
        return modelAndView;//转发 你创建的模板jsp路径
    }
-2. Map添加模型数据
//java controller类
    @RequestMapping(value = "/str/for",method = RequestMethod.GET)
    public String str1(Map map){
        map.put("msg","map的测试");//值会自动传递给页面 ${msg}获取
        return "hello"; //转发 hello.jsp中
    }
-3 Model添加模型数据
//java controller类
@RequestMapping(value = "/item/strModel",method = RequestMethod.GET)
    public String str(Model model){
        model.addAttribute("msg","Model的测试");
        return "hello";
    }

2. 返回值为String类型的转发和重定向

 //string类型的重定向和转发
    @RequestMapping(value = "/str/for",method = RequestMethod.GET)
    public String str1(Map map){
        map.put("msg","mapTest");//值会自动传递给页面
        return "forward:/WEB-INF/jsp/hello.jsp"; //forward 转发是服务器默认的形式可以不写
    }

    @RequestMapping(value = "/str/rdt",method = RequestMethod.GET)
    public String str2(Map map){
        map.put("msg","mapTest");//值会自动传递给页面
        return "redirect:/index.jsp";
//        return "redirect:/hello.jsp";  ***
        //不可以直接转发到WEB_INF中的静态资源 因为此文件夹下的资源安全性都比较高  一般通过转发访问
        //可以重定向到controller路径 在controller类中转发到WEB_INF的jsp路径
        // return "redirect:/controller/t1";   controller /t1类:  return hello;
    }

二、Spring MVC表当标签库

https://www.funtl.com/zh/spring-mvc/Spring-MVC-表单标签库.html#声明表单标签库

三、Spring MVC数据校验

https://blog.youkuaiyun.com/miketom155/article/details/45058195/

四、restFul架构

// java controller 层

//restFul 只是地址的写法不一样,  传统的  ../a?a=1&b=2       restFul:../a/1/2
//相同路径访问不同数据: 区别在于 提交的方法 是get还是post
//restFul 通过 {} 来获取路径参数

@RequestMapping(value = "/item/{p1}/{p2}",method = RequestMethod.GET)
    public String index1(@PathVariable int p1, @PathVariable int p2, Model model){
        int result = p1 + p2;
        model.addAttribute("msg","结果:"+result);
        return "hello";
    }
    @RequestMapping(value = "/item/{p1}/{p2}",method = RequestMethod.POST)
    public String index2(@PathVariable int p1, @PathVariable int p2, Model model){
        String result = "相同路径访问不同数据"+p1+p2;
        model.addAttribute("msg","结果:"+result);
        return "hello";
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值