Spring-MVC与MyBatis知识讲解.pptx
- 文档编号:1038073
- 上传时间:2022-10-15
- 格式:PPTX
- 页数:32
- 大小:8.95MB
Spring-MVC与MyBatis知识讲解.pptx
《Spring-MVC与MyBatis知识讲解.pptx》由会员分享,可在线阅读,更多相关《Spring-MVC与MyBatis知识讲解.pptx(32页珍藏版)》请在冰豆网上搜索。
SpringMVC与MyBatis,SpringMVC,组成部分,Spring的MVC框架主要:
由DispatcherServlet、处理器映射(HandlerMapping)、处理器(Controller)、视图解析器(ViewResolver)、视图(View)组成。
1、客户端请求提交到DispatcherServlet2、由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller3、DispatcherServlet将请求提交到Controller4、Controller调用业务逻辑处理后,返回ModelAndView5、DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图6、视图负责将结果显示到客户端,工作原理,执行过程,Dispatcherservlet,使用SpringMVC,配置DispatcherServlet是第一步。
DispatcherServlet是一个Servlet,所以可以配置多个DispatcherServlet。
DispatcherServlet是前置控制器,配置在web.xml文件中的。
拦截匹配的请求,Servlet拦截匹配规则要自已定义,把拦截下来的请求,依据某某规则分发到目标Controller(我们写的Action)来处理。
“某某规则”:
是根据你使用了哪个HandlerMapping接口的实现类的不同而不同。
Dispatcherservlet,Xml代码exampleorg.springframework.web.servlet.DispatcherServlet1example*.form,控制器Controller,ControllerRequestMapping(/test/variable1)publicclassMyControllerRequestMapping(/showView/variable2)publicModelAndViewshowView(PathVariableStringvariable1,PathVariable(variable2)intvariable2)ModelAndViewmodelAndView=newModelAndView();modelAndView.setViewName(viewName);modelAndView.addObject(需要放到model中的属性名称,对应的属性值,它是一个对象);returnmodelAndView;,控制器Controller,1、使用RequestParam绑定HttpServletRequest请求参数到控制器方法参数2、使用CookieValue绑定cookie的值到Controller方法参数3、使用RequestHeader注解绑定HttpServletRequest头信息到Controller方法参数,控制器Controller,RequestMapping(value=testParams,params=param1=value1,param2,!
param3)publicStringtestParams()System.out.println(testParams.);returntestParams;,RequestMapping(value=testMethod,method=RequestMethod.GET,RequestMethod.DELETE)publicStringtestMethod()returnmethod;,支持参数,
(1)HttpServlet对象,主要包括HttpServletRequest、HttpServletResponse和HttpSession对象
(2)Spring自己的WebRequest对象。
使用该对象可以访问到存放在HttpServletRequest和HttpSession中的属性值。
(3)InputStream、OutputStream、Reader和Writer(4)使用PathVariable、RequestParam、CookieValue和RequestHeader标记的参数。
(5)使用ModelAttribute标记的参数。
(6)java.util.Map、Spring封装的Model和ModelMap。
(7)实体类。
可以用来接收上传的参数。
(8)Spring封装的MultipartFile。
用来接收上传文件的。
(9)Spring封装的Errors和BindingResult对象,支持返回类型,
(1)一个包含模型和视图的ModelAndView对象。
(2)一个模型对象,这主要包括Spring封装好的Model和ModelMap,以及java.util.Map。
(3)一个View对象。
这个时候如果在渲染视图的过程中模型的话就可以给处理器方法定义一个模型参数,然后在方法体里面往模型中添加值。
(4)一个String字符串。
(5)返回值是void。
(6)如果处理器方法被注解ResponseBody标记,类型转换器,ControllerRequestMapping(/myTest)publicclassMyControllerInitBinderpublicvoiddataBinder(WebDataBinderbinder)DateFormatdateFormat=newSimpleDateFormat(yyyyMMdd);PropertyEditorpropertyEditor=newCustomDateEditor(dateFormat,true);binder.registerCustomEditor(Date.class,propertyEditor);RequestMapping(dataBinder/date)publicvoidtestDate(PathVariableDatedate,Writerwriter)throwsIOExceptionwriter.write(String.valueOf(date.getTime();,数据校验,对于任何一个应用而言在客户端做的数据有效性验证都不是安全有效的,这时候就要求我们在开发的时候在服务端也对数据的有效性进行验证。
SpringMVC自身对数据在服务端的校验有一个比较好的支持,它能将我们提交到服务端的数据按照我们事先的约定进行数据有效性验证,对于不合格的数据信息SpringMVC会把它保存在错误对象中,这些错误信息我们也可以通过SpringMVC提供的标签在前端JSP页面上进行展示。
在SpringMVC中提供了一个Validator接口,我们可以通过该接口来定义我们自己对实体对象的验证。
视图解析器,SpringMVC用于处理视图最重要的两个接口是ViewResolver和View。
ViewResolver的主要作用是把一个逻辑上的视图名称解析为一个真正的视图,SpringMVC中用于把View对象呈现给客户端的是View对象本身,而ViewResolver只是把逻辑视图名称解析为对象的View对象。
View接口的主要作用是用于处理视图,然后返回给客户端。
拦截器,SpringMVC中的Interceptor拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理。
比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306那样子判断当前时间是否是购票时间。
上传文件,CommonsMultipartResolver允许设置的属性有:
defaultEncoding:
表示用来解析request请求的默认编码格式,当没有指定的时候根据Servlet规范会使用默认值ISO-8859-1。
当request自己指明了它的编码格式的时候就会忽略这里指定的defaultEncoding。
uploadTempDir:
设置上传文件时的临时目录,默认是Servlet容器的临时目录。
maxUploadSize:
设置允许上传的最大文件大小,以字节为单位计算。
当设为-1时表示无限制,默认是-1。
maxInMemorySize:
设置在文件上传时允许写到内存中的最大值,以字节为单位计算,默认是10240。
异常处理,springMVC提供的异常处理主要有两种方式:
一种是直接实现自己的HandlerExceptionResolver,当然这也包括使用Spring已经为我们提供好的SimpleMappingExceptionResolver和DefaultHandlerExceptionResolver。
另一种是使用注解的方式实现一个专门用于处理异常的ControllerExceptionHandler。
MyBatis,工作原理,
(1)加载配置并初始化
(2)接收调用请求处理过程:
将请求传递给下层的请求处理层进行处理。
(3)处理操作请求触发条件:
API接口层传递请求过来处理过程:
(A)根据SQL的ID查找对应的MappedStatement对象。
(B)根据传入参数对象解析MappedStatement对象,得到最终要执行的SQL和执行传入参数。
(C)获取数据库连接,根据得到的最终SQL语句和执行传入参数到数据库执行,并得到执行结果。
(D)根据MappedStatement对象中的结果映射配置对得到的执行结果进行转换处理,并得到最终的处理结果。
(E)释放连接资源。
(4)返回处理结果将最终的处理结果返回。
功能结构,功能结构,API接口层:
提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。
接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。
数据处理层:
负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。
它主要的目的是根据调用的请求完成一次数据库操作。
基础支撑层:
负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。
为上层的数据处理层提供最基础的支撑。
框架结构,sqlMapConfig.xml:
(是mybatis的全局配置文件,名称不固定的)配置了数据源、事务等mybatis运行环境mapper.xml:
配置sql语句SqlSessionFactory:
(会话工厂),根据配置文件创建工厂作用:
创建SqlSessionSqlSession(会话),是一个接口,面向用户(程序员)的接口作用:
操作数据库(发出sql增、删、改、查)Executor(执行器),是一个接口(基本执行器、缓存执行器)作用:
SqlSession内部通过执行器操作数据库mappedstatement(底层封装对象)作用:
对操作数据库存储封装,包括sql语句,输入参数、输出结果类型。
动态sql,ifchoose(when,otherwise)trimwheresetforeach,select*fromt_blogwhereidin#key,#value,注意事项,示例1:
执行SQL:
Select*fromempwherename=#employeeName参数:
employeeName=Smith解析后执行的SQL:
Select*fromempwherename=?
=Select*fromempwherename=Simith执行SQL:
Select*fromempwherename=$employeeName参数:
employeeName传入值为:
Smith解析后执行的SQL:
Select*fromempwherename=Smith#会生成preparedStatement.预编译SQL语句,这样比较安全,防止SQL注入,而且传入的值是字符串类型$:
相当
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Spring MVC MyBatis 知识 讲解