SSM个人总结(基础知识)

一、重要标签

@RequestMapping:请求地址的映射,设置路径,前端可跳转到后端该路径;
@RequestBody:读取前端给的数据,将相应的数据绑定到返回的对象上;
@ResponseBody:返回给前端json数据。

二、SSM框架流程

1.Model:业务数据和业务处理逻辑:pojo、Dao、service;
2.Spring MVC:
在这里插入图片描述

  1. DispatherServlet请求入口——进图书馆的门;
  2. HandlerMapping请求派发——请求找一本书;
  3. Controller请求处理——怎么找,去哪里找,找谁;
  4. ModelAndView——找到了/没有找到,封装一个数据,告诉有/没有;
  5. ViewResolver视图解析——管理员作中间人,告诉你有/没有;
  6. html/jsp——你知道了;

三、详解Model、ModelAndView、ModelMap

SpringMVC在调用方法前会创建一个隐含的数据模型,作为模型数据的存储容器, 成为”隐含模型”。

 1. Model是一个接口,它的实现类为ExtendedModelMap,继承ModelMap;
 2. ModelMap继承LinkedHashMap,spring框架自动创建实例并作为controller的入参,用户无需自己创建;

ModelMap

主要用于传递控制方法+处理数据到结果页面
也就是说我们把结果页面上需要的数据放到ModelMap对象中即可。
通过以下方法向页面传递参数:

public ModelMap addAttribute(String attributeName, Object attributeValue){...}
public ModelMap addAttribute(Object attributeValue){...}
public ModelMap addAllAttributes(Collection<?> attributeValues) {...}
public ModelMap addAllAttributes(Map<String, ?> attributes){...}

在jsp页面上可以通过el表达式语言$attributeName或者是C标签库下的方法,来获取并展示ModelMap中的数据。
ModelMap本身不能设置页面跳转的url地址别名或者物理跳转地址,那么我们可以通过controller 方法的返回值来设置跳转url地址别名或者物理跳转地址。

ModelAndView

有两个作用:(指定返回页面,返回页面的同时添加属性)

1.设置转向地址

ModelAndView view = new ModelAndView("path:student");
public void setViewName(String viewName){...}

2.将控制器方法中处理的结果数据传递到结果页面,也就是把在结果页面上需要的数据放到ModelAndView对象中即可,其作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据。通过以下方法向页面传递参数:

public ModelAndView addObject(String attributeName, Object attributeValue){...}
public ModelAndView addObject(Object attributeValue){...}

在jsp页面上可以通过el表达式语言$attributeName或者是C标签库下的方法,来获取并展示ModelAndView中的数据。


//控制层java代码
@RequestMapping("admin_category_list")
    public ModelAndView list() {
         //创建一个模型视图对象
        ModelAndView mav = new ModelAndView();
        List<Category> cs = categoryService.list();
        mav.addObject("cs", cs);
        mav.setViewName("admin/listCategory");
        return mav;
    }
//jsp页面写入
<!-- 获取值的时候,对应的是addAttribute的第一个参数!取了个别名为c-->
    <c:forEach items="${cs}" var="c">
        <tr>
            <td>${c.id}</td>
            <td>${c.name}</td>
        </tr>
    </c:forEach>

就对于新手而言简单来说使用区别就是:

​ Map 为原生的储存键值的对象,自然的里面一大堆的方法可以使用。

​ Model 只有寥寥几个方法只适合用于储存数据,简化了新手对于Model对象的操作和理解;

​ ModelMap 继承了 LinkedMap ,除了实现了自身的一些方法,同样的继承 LinkedMap 的方法和特性;

​ ModelAndView 可以在储存数据的同时,可以进行设置返回的逻辑视图,进行控制展示层的跳转。

转发时可以将页面的资源传给另一个页面,使用相对路径!
重定向只是单纯的进行页面跳转。使用绝对路径

参考:
写的真好!

作者:PC_Repair
链接:https://www.jianshu.com/p/8f8f198243f3
来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

CSDN博主「PigPinv」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41660948/article/details/87470250

四、War与War exploded的区别

  1. war:先打包成war包,再把该war包部署到服务器上
  2. war exploded:直接把文件夹、class文件等等移到Tomcat上进行部署。因此这种方式支持热部署,一般在开发的时候都是使用这种模式。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值