Spring MVC总结

MVC代表的含义

  • M 代表 模型(Model),即dao,bean
  • V 代表 视图(View),即页面,jsp、html等
  • C 代表 控制器(controller),即负责接收并转发请求,对请求处理之后拿到响应结果,指派要使用的视图(类似于指定Servlet跳转到不同的页面进行展示),将响应结果返回给客户端。对应的组件一般是Servlet

SpringMVC的工作流程

  1. DispatcherServlet:首先页面发出请求,请求被DispatcherServlet拦截,转发到SpringMVC控制器
<servlet-mapping>
		<servlet-name>SpringMVC</servlet-name>
		<!-- 此处可以可以配置成*.do,对应struts的后缀习惯 -->
		<url-pattern>/</url-pattern>
	</servlet-mapping>
  1. 处理器映射(HandlerMapping):被拦截的请求就到处理器映射(HandlerMapping),处理器映射会根据请求所携带的 URL 信息来进行选择哪个控制器
  2. 控制器:选择好了控制器, DispatcherServlet 会将请求发送给选中的控制器,然后由控制器处理这些请求
  3. 返回 DispatcherServlet:当控制器在完成逻辑处理后,通常会产生一些信息,这些信息就是需要返回给用户并在浏览器上显示的信息,它们被称为模型(Model)。仅仅返回原始的信息时不够的——这些信息需要以用户友好的方式进行格式化,一般会是 HTML,所以,信息需要发送给一个视图(view),通常会是 JSP。
    控制器所做的最后一件事就是将模型数据打包,并且表示出用于渲染输出的视图名(逻辑视图名)。它接下来会将请求连同模型和视图名发送回 DispatcherServlet。
  4. 视图解析器:这样以来,控制器就不会和特定的视图相耦合,传递给 DispatcherServlet 的视图名并不直接表示某个特定的 JSP。(实际上,它甚至不能确定视图就是 JSP)相反,它传递的仅仅是一个逻辑名称,这个名称将会用来查找产生结果的真正视图。
    DispatcherServlet 将会使用视图解析器(view resolver)来将逻辑视图名匹配为一个特定的视图实现,它可能是也可能不是 JSP
  5. 视图:视图使用模型数据渲染出结果,这个输出结果会通过响应对象传递给客户端

总结来源

在这里插入图片描述
图片来源

@RequestParam(value=“name”, required=true, defaultValue=“张三”) String name)
value 与前端页面对应,不写默认为变量名
required,参数值是否可以为空,默认是true,如果为空否则将报404错误码
defaultValue,默认值,表示如果请求中没有同名参数时的默认值

ModelMap中的addAttribute与put方法的区别

ModelMap的定义类:
public class ModelMap extends LinkedHashMap<String, Object>
ModelMap是继承自LinkedHashMap的,而LinkedHashMap继承自HashMap,HashMap实现了Map接口,实现其put()方法,因此ModelMap中的put()方法是继承自 HashMap的;
addAttribute方法的定义如下:

public ModelMap addAttribute(String attributeName, Object attributeValue){
         Assert.notNull(attributeName, "Model attribute name must not be null");
         put(attributeName, attributeValue);
         return this;
}

其实也是调用的put方法,但是会在调用之前判断 key值是否为null,如果为null则会抛出以下异常
java.lang.IllegalArgumentException: Model attribute name must not be null,而put方法不会检查key值是否会空
结论:
ModelMap对象的 addAttribute,put两个方法区别是: addAttribute是不允许添加空值的key,put是允许的

来源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值