ModelAndView的详细介绍

本文详细介绍了Spring MVC框架中ModelAndView的构造方法及其应用场景,包括如何添加模型数据、设置视图名称等关键操作,并探讨了不同返回类型之间的优先级。
先来看一下,ModelAndView的构造方法,其实用的也就两种,
有String参数的两种

  

构造方法摘要

ModelAndView()            默认构造函数豆式的用法:在构造函数参数填充通过bean属性代替。

 

ModelAndView(java.lang.String viewName)            方便在没有构造模型数据暴露。

 

ModelAndView(java.lang.String viewName, java.util.Map model)            创建新的视图名称ModelAndView的给予和模型。

 

ModelAndView(java.lang.String viewName, java.lang.String modelName, java.lang.Object modelObject)            方便的构造采取单一的模式对象。

 

ModelAndView(View view)            方便在没有构造模型数据暴露。

 

ModelAndView(View view, java.util.Map model)            创建新的ModelAndView给予视图对象和模型。

 

ModelAndView(View view, java.lang.String modelName, java.lang.Object modelObject)            方便的构造采取单一的模式对象。

这是三个方法,用来加model,一般都不用,
注意一下,第二种方法,直接加入object,会默认加入string,因为他们的本质还是Map;

直接放入对象。属性名为”首字母小写的类名”

 ModelAndView

addAllObjects(java.util.Map modelMap)            新增模式。

 ModelAndView

addObject(java.lang.Object attributeValue)            将属性添加到模型中使用的参数名生成。

 ModelAndView

addObject(java.lang.String attributeName, java.lang.Object attributeValue)            添加一个属性到模型中。

关于返回值的一些体会:
            其实我感觉,返回的都是map,不论哪种形式,都是向map转换,还不如直接用map;
         map,modelMap,Model都是一个意思,
这里有一个小实验,参考别人做的:
<span style="font-size:18px;">             ModelMap modelMap=new ModelMap();
	     modelMap.addAttribute("yunyun","xiao yun yun");
	     
	     Map<String,Object> map=new HashMap<String,Object>();
	     map.put("yunyun", "xiao fa  de");
	     
	     request.setAttribute("yunyun", "laopo");</span>
<span style="font-size:18px;">
</span>
<span style="font-size:18px;">             return new ModelAndView("haha",map)  ;
</span>
<body>
    hhahhha. -------------${yunyun}<br>
  </body>
“yunyun”属性的获取,优先获取map中的,并不是request中的。
别的就没做测试了,直接给出结论:
优先取Model和ModelMap的,Model和ModelMap是同一个东西,谁最后赋值的就取谁的,然后是request,最后是从session中获取


### SSM框架的详细介绍 SSM框架是指 **Spring**、**Spring MVC** 和 **MyBatis** 的整合,是一种基于 Java Web 开发的标准架构模式[^1]。它遵循经典的三层结构设计原则,即表现层(Controller)、业务逻辑层(Service)以及数据访问层(DAO)。以下是关于 SSM 框架的具体介绍: #### 1. SSM框架的核心组成及其功能划分 SSM框架主要由三个核心部分构成: - **Dao 层 (Mapper)** Dao 层主要用于数据库操作,通过 MyBatis 实现 SQL 映射文件的功能。开发者可以通过编写 Mapper 接口来完成增删改查等基本操作[^1]。 - **Service 层** Service 层是整个应用的核心业务逻辑处理单元。所有的复杂计算和事务控制都在这一层实现。通常情况下,该层会调用 Dao 层中的方法并返回结果给 Controller 层。 - **Controller 层** Controller 是前端页面与后台服务之间的桥梁,负责接收 HTTP 请求并将请求参数传递到对应的 Service 方法中进行处理;最后再将响应结果渲染成视图或者 JSON 数据反馈给客户端。 - **View 层** View 层用于展示最终的数据呈现效果,可以采用 JSP/Thymeleaf/Freemarker 等模板技术生成动态网页内容。 --- #### 2. Spring 容器与 Spring MVC 容器的关系 在 SSM 架构下,存在两个 IoC 控制反转容器——一个是全局范围内的根上下文 `ApplicationContext` (属于 Spring),另一个则是局部作用域下的 Servlet 上下文 `WebApplicationContext`(隶属于 Spring MVC)。两者间具有父子级联关系:其中前者充当后者父级角色,允许子容器共享来自其父节点定义好的 Bean 资源实例[^2]。 这种机制使得我们可以轻松地让控制器组件能够直接注入依赖于其他非 web 特定的服务对象而无需额外配置任何东西即可正常工作。 --- #### 3. 使用通用 Mapper 提升开发效率 为了进一步简化 DAO 层编码流程,在实际项目当中往往会引入第三方库—*Generic Mapper*(泛型映射器),只需使自定义 Repository 继承此类便可自动获得一系列常用 CRUD 功能支持,从而省去了手动维护 XML 文件的工作量[^3]。 另外需要注意的是当启用此特性之后还需要记得为关联表模型类添加必要的注解标记以便正确解析字段映射规则。 --- ### 示例代码演示 以下是一个简单的例子展示了如何构建一个完整的CRUD应用程序: ```java // Entity Class with Annotations as per Generic Mapper Requirement. @Entity public class User { private Integer id; private String name; // Getters & Setters omitted for brevity... } // Interface extending BaseMapper to leverage built-in methods provided by it. @Mapper public interface UserRepository extends BaseMapper<User> {} @Service public class UserService { @Autowired private UserRepository userRepository; public List<User> getAllUsers() { return userRepository.selectList(null); } } @Controller @RequestMapping("/users") public class UserController { @Autowired private UserService userService; @GetMapping("") public ModelAndView list(ModelAndView modelAndView){ modelAndView.addObject("users",userService.getAllUsers()); modelAndView.setViewName("user_list"); return modelAndView; } } ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值