java基础复习4

目录

1.Spring MVC 流程

2.组件: 

 

 3.SpringMVc 模式

2.SpringMVC 怎么样设定重定向和转发的

3.SpringMVC 常用的注解有哪些

1.什么是 MyBatis 

2.MyBatis 的优点和缺点

3.#{}和${}的区别是什么 

4.Mybatis 的一级、二级缓存 



1.Spring MVC 流程

          

1、 用户发送请求至前端控制器 DispatcherServlet。
2、 DispatcherServlet 收到请求调用 HandlerMapping 处理器映射器。
3、 处理器映射器找到具体的处理器(可以根据 xml 配置、注解进行查找),生成处理器对象及处理器拦截器
(如果有则生成)一并返回给 DispatcherServlet。
4、 DispatcherServlet 调用 HandlerAdapter 处理器适配器。
5、 HandlerAdapter 经过适配调用具体的处理器(Controller,也叫后端控制器)。
6、 Controller 执行完成返回 ModelAndView。
7、 HandlerAdapter 将 controller 执行结果 ModelAndView 返回给 DispatcherServlet。
8、 DispatcherServlet 将 ModelAndView 传给 ViewReslover 视图解析器。
9、 ViewReslover 解析后返回具体 View。
10、DispatcherServlet 根据 View 进行渲染视图(即将模型数据填充至视图中)。
11、 DispatcherServlet 响应用户。


2.组件: 

1、前端控制器 DispatcherServlet(不需要工程师开发),由框架提供
作用:接收请求,响应结果,相当于转发器,中央处理器。有了 dispatcherServlet 减少了其它组件之间
的耦合度。
用户请求到达前端控制器,它就相当于 mvc 模式中的 c,dispatcherServlet 是整个流程控制的中心,由
它调用其它组件处理用户的请求,dispatcherServlet 的存在降低了组件之间的耦合性。
2、处理器映射器 HandlerMapping(不需要工程师开发),由框架提供
作用:根据请求的 url 查找 Handler
HandlerMapping 负责根据用户请求找到 Handler 即处理器,springmvc 提供了不同的映射器实现不同
的映射方式,例如:配置文件方式,实现接口方式,注解方式等。
3、处理器适配器 HandlerAdapter
作用:按照特定规则(
HandlerAdapter 要求的规则)去执行 Handler
通过 HandlerAdapter 对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的
处理器进行执行。
4、处理器 Handler(需要工程师开发)
注意:编写 Handler 时按照 HandlerAdapter 的要求去做,这样适配器才可以去正确执行 Handler
Handler 是继 DispatcherServlet 前端控制器的后端控制器,在 DispatcherServlet 的控制下 Handler 对具
体的用户请求进行处理。
由于 Handler 涉及到具体的用户业务请求,所以一般情况需要工程师根据业务需求开发 Handler。
5、视图解析器 View resolver(不需要工程师开发),由框架提供
作用:进行视图解析,根据逻辑视图名解析成真正的视图(
view)
View Resolver 负责将处理结果生成 View 视图,View Resolver 首先根据逻辑视图名解析成物理视图名即具
体的页面地址,再生成 View 视图对象,最后对 View 进行渲染将处理结果通过页面展示给用户。

 

 3.SpringMVc 模式

1.MVC 的原理图:

现在我们来看一下这个图的步骤:

第一步:用户发起请求到前端控制器(
DispatcherServlet)
第二步:前端控制器请求处理器映射器(
HandlerMappering)去查找处理器(
Handle):通过 xml 配
置或者注解进行查找
第三步:找到以后处理器映射器(
HandlerMappering)像前端控制器返回执行链(
HandlerExecutionChain)
第四步:前端控制器(
DispatcherServlet)调用处理器适配器(
HandlerAdapter)去执行处理器(
Handler)
第五步:处理器适配器去执行 Handler
第六步:Handler 执行完给处理器适配器返回 ModelAndView
第七步:处理器适配器向前端控制器返回 ModelAndView
第八步:前端控制器请求视图解析器(
ViewResolver)去进行视图解析
第九步:视图解析器像前端控制器返回 View
第十步:前端控制器对视图进行渲染

第十一步:前端控制器向用户响应结果

springMVC 中的 几个组件:
前端控制器(
DispatcherServlet):接收请求,响应结果,相当于电脑的 CPU。
处理器映射器(
HandlerMapping):根据 URL 去查找处理器
处理器(
Handler):(需要程序员去写代码处理逻辑的)
处理器适配器(
HandlerAdapter):会把处理器包装成适配器,这样就可以支持多种类型的处理器,
类比笔记本的适配器(适配器模式的应用)
视图解析器(
ViewResovler):进行视图解析,多返回的字符串,进行处理,可以解析成对应的页面

2.SpringMVC 怎么样设定重定向和转发的

 

1) 转发:在返回值前面加"forward:",譬如"forward:user.do?name=method4"
2) 重定向:在返回值前面加"redirect:",譬如"redirect:http://www.baidu.com

 

3.SpringMVC 常用的注解有哪些

@RequestMapping:用于处理请求 url 映射的注解,可用于类或方法上。用于类上,则表示类中的所
有响应请求的方法都是以该地址作为父路径。 @RequestBody:注解实现接收 http 请求的 json 数据,将 json 转换为 java 对象。
@ResponseBody:注解实现将 conreoller 方法返回对象转化为 json

1.什么是 MyBatis 

本身,不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。程序员直接编写原
生态 sql,可以严格控制 sql 执行性能,灵活度高。
2) MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO 映射成数据库中的记录,避免了
几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
3) 通过 xml 文件或注解的方式将要执行的各种 statement 配置起来,并通过 java 对象和 statement
中 sql 的动态参数进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行 sql 并将结果映射为 java 对
象并返回。(从执行 sql 到返回 result 的过程
<select id=”selectorder”parametertype=”int”
 resultetype=”me.gacl.domain.order”> 
select order_id id, order_no orderno ,order_price price form orders where
 order_id=#{id}; 
</select>

2.MyBatis 的优点和缺点

优点:
1) 基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL 写在
XML 里,解除 sql 与程序代码的耦合,便于统一管理;提供 XML 标签,支持编写动态 SQL 语句,并可重
用。
2) 与 JDBC 相比,减少了 50%以上的代码量,消除了 JDBC 大量冗余的代码,不需要手动开关连接;
3) 很好的与各种数据库兼容(因为 MyBatis 使用 JDBC 来连接数据库,所以只要 JDBC 支持的数据库
MyBatis 都支持)。
4) 能够与 Spring 很好的集成;
5) 提供映射标签,支持对象与数据库的 ORM 字段关系映射;提供对象关系映射标签,支持对象关系
组件维护。
缺点:
1) SQL 语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写 SQL 语句的功底有一定
要求。
2) SQL 语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

 


3.#{}和${}的区别是什么 

#{}是预编译处理,${}是字符串替换。
Mybatis 在处理#{}时,会将 sql 中的#{}替换为?号,调用 PreparedStatement 的 set 方法来赋值;
Mybatis 在处理${}时,就是把${}替换成变量的值。
使用#{}可以有效的防止 SQL 注入,提高系统安全性

4.Mybatis 的一级、二级缓存 

一级缓存: 基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为 Session,当 Session flfl ush 或 close 之后,该
Session 中的所有 Cache 就将清空,默认打开一级缓存。
2)二级缓存与一级缓存其机制相同,默认也是采用
PerpetualCache,HashMap
存储,不同在于其存储作用域为
Mapper(Namespace),并且可自定义存储源,如 Ehcache。默认不打开二级缓存,要开启二级缓存,使用二级缓存属性类需要实现
Serializable 序列化接口(可用来保存对象的状态),可在它的映射 文件中配置 ;
3)对于缓存数据更新机制,当某一个作用域(一级缓存 Session/二级缓存 Namespaces)的进行了 C/U/D 操作后,默认该作用域下所
有 select 中的缓存将被 clear 掉并重新更新,如果开启了二级缓存,则只根据配置判断是否刷新。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我可以帮你复习Java基础面试题。以下是一些常见的Java基础面试题及其答案: 1. Java中的基本数据类型有哪些? 答:Java中的基本数据类型包括byte、short、int、long、float、double、boolean和char。 2. Java中的包装类是什么? 答:包装类是一种将基本数据类型封装成对象的方式。Java提供了对应于每个基本数据类型的包装类,如Integer、Double、Boolean等。 3. Java中的String类是可变的吗? 答:String类是不可变的,即一旦创建就不能被修改。如果需要对字符串进行修改操作,可以使用StringBuilder或StringBuffer类。 4. Java中的final关键字有什么作用? 答:final关键字可以用来修饰类、方法和变量。当修饰类时,表示该类不能被继承;当修饰方法时,表示该方法不能被重写;当修饰变量时,表示该变量的值不能被修改。 5. Java中的抽象类和接口有什么区别? 答:抽象类是一种不能被实例化的类,它可以包含抽象方法和非抽象方法。接口是一种完全抽象的类,它只能包含抽象方法和常量。一个类可以实现多个接口,但只能继承一个抽象类。 6. Java中的异常处理机制是什么? 答:Java中的异常处理机制通过try-catch-finally语句块来实现。当可能发生异常的代码放在try块中,如果发生异常,则会被catch块捕获并进行处理,最后无论是否发生异常,都会执行finally块中的代码。 7. Java中的多线程是如何实现的? 答:Java中实现多线程有两种方式,一种是继承Thread类,另一种是实现Runnable接口。通过重写Thread类的run()方法或实现Runnable接口的run()方法来定义线程的执行逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值