SpringMvc总结

Springmvc总结

1.Springmvc是什么?

是一个基于spring的mvc的框架。可以和spring无缝衔接。

2.为什么使用Springmvc而抛弃原来的mvc结构?

a) 因为以前的mvc结构,写起来比较复杂,一个servlet在web.xml文件中有8行的配置,如果处理逻辑过多,就会导致配置文件过度庞大,不便于管理。并且在servlet中只能处理一个逻辑。如果针对同一个页面有多个操作,则需要编写多个servlet。在servlet中获取到的参数类型只能是string,需要手动来转变。

b) springmvc只需要配置一个servlet(DispatcherServlet)就可以管理所有的servlet,并且springmvc使用Controller层代替Web层中的servlet,在Controller中可以处理多个逻辑。Springmvc获取的参数类型支持自动转换,对于基本数据类型还支持自动封装。

3.springmvc原理(如何运行、加载机制)

3.1Springmvc各部分组件的作用:

1.DispatcherServlet:前置控制器,负责接收并处理所有的web请求,根据handlerMapping找到具体的Controller,由controller完成具体的处理逻辑。

2.HandlerMapping:负责处理web请求和具体的Controller之间的映射关系匹配。

3.Controller:DispatherServlet的次级控制器,web请求的具体处理者。DispatherServlet获得handlerMapping的返回结果后,调用controller的处理方法处理当前的业务请求,处理完成后返回ModelAndView对象。

4.ViewResolver:用来处理视图名与具体的view实例之间的映射对应关系。根据ModelAndView中的视图名查找相应的View实现类,然后将查找的结果返回给DispatcherServlet,DispatcherServlet最终会将ModelAndView中的模型数据交给返回的View处理最终的视图渲染工作。

5.View:为支持多种视图技术

3.2springMVC 的五大组件怎么协同工作

 

  

    》DispatcherServlet收到请求之后,依据 HandlerMapping的配置调用相应的处理器来处理。

DispatcherServlet调用HandlerMapping指定的Controller(处理器)来处理。

    》Controller(处理器)将处理结果封装成ModelAndView, 然后返回DispatcherServlet。

    》DispatcherServlet依据ViewResovler的解析。

调用相应的视图对象(比如某个jsp)来生成相应的页面。

4.form 中Enctype=multipart/form-data 的作用

ENCTYPE="multipart/form-data"用于表单里有图片上传。 
<form name="userInfo" method="post" action="first_submit.jsp"    ENCTYPE="multipart/form-data"> 
表单标签中设置enctype="multipart/form-data"来确保匿名上载文件的正确编码。 
如下: 
<tr> 
      <td height="30" align="right">上传企业营业执照图片:</td> 
      <td><INPUT TYPE="FILE" NAME="uploadfile" SIZE="34"    onChange="checkimage()"></td> 
    </tr> 
就得加ENCTYPE="multipart/form-data"。 
表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作. 
enctype="multipart/form-data"是上传二进制数据; form里面的input的值以2进制的方式传过去。 form里面的input的值以2进制的方式传过去,所以request就得不到值了。 也就是说加了这段代码,用request就会传递不成功,取表单值加入数据库时,用到下面的: 
SmartUpload su = new SmartUpload();//新建一个SmartUpload对象 
su.getRequest().getParameterValues();取数组值 
su.getRequest().getParameter( );取单个参数单个值 

5.Mybatis运行原理

原文地址:https://www.cnblogs.com/dxp5201/p/8921916.html