JavaEE框架面试常问问题
来源:互联网 发布:哈登什么数据是第一 编辑:程序博客网 时间:2024/05/23 01:12
1.简单的谈一下SpringMVC的工作流程?
流程
1、用户发送请求至前端控制器DispatcherServlet
2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给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响应用户
1、用户发送请求至前端控制器DispatcherServlet
2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给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.如何解决POST请求中文乱码问题,GET的又如何处理呢?
在web.xml中加入:
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
- <init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
以上可以解决post请求乱码问题。对于get请求中文参数出现乱码解决方法有两个:
修改tomcat配置文件添加编码与工程编码一致,如下:
<ConnectorURIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
另外一种方法对参数进行重新编码:
String userName = new
String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")
ISO8859-1是tomcat默认编码,需要将tomcat编码后的内容按utf-8编码
3.SpringMVC与Struts2的主要区别?
①springmvc的入口是一个servlet即前端控制器,而struts2入口是一个filter过虑器。
②springmvc是基于方法开发,传递参数是通过方法形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。
③Struts采用值栈存储请求和响应的数据,通过OGNL存取数据, springmvc通过参数解析器是将request对象内容进行解析成方法形参,将响应数据和页面封装成ModelAndView对象,最后又将模型数据通过request对象传输到页面。 Jsp视图解析器默认使用jstl。
③Struts采用值栈存储请求和响应的数据,通过OGNL存取数据, springmvc通过参数解析器是将request对象内容进行解析成方法形参,将响应数据和页面封装成ModelAndView对象,最后又将模型数据通过request对象传输到页面。 Jsp视图解析器默认使用jstl。
4.什么是mybatis接口绑定有什么好处?
接口映射就是在IBatis中任意定义接口,然后把接口里面的方法和SQL语句绑定,
我们直接调用接口方法就可以,这样比起原来了SqlSession提供的方法我们可以有更加灵活的选择和设置.
5.mybatis动态sql如何实现的?
MyBatis里面的动态Sql一般是通过if节点来实现,通过OGNL语法来实现,但是如果要写的完
整,必须配合where,trim节点,where节点是判断包含节点有内容就插入where,否则不插
入,trim节点是用来判断如果动态语句是以and 或or开始,那么会自动把这个and或者or取
掉
6.mybatis与Hibernate区别?
二者都是orm映射框架,mybatis映射体现在sql上,Hibernate体现在实体类设计上。
mybatis学习难度小,Hibernate难度大,但是一旦掌握Hibernate开发周期短,基本不用写sql。
适合场景:Hibernate适合数据量小的项目,如果百万级别的表,用Hibernate查询缓存在session里,占用内存较大,可能导致服务器内存溢出。mybatis适合数据量大的项目。
Hibernate普通查询效率也要低于mybatis,涉及到实体类和hql到sql的转换问题。
如果项目功能都是增删改查常用模式,适合Hibernate,开发容易,但是如果表关系关联复杂,经常关联查询,适合mybatis。
阅读全文
0 0
- JavaEE框架面试常问问题
- 面试常问问题
- 面试常问问题
- 面试常问问题
- 集合框架的讲解--面试常问问题
- 面试常问的问题
- 面试常问的问题
- 面试常问的问题
- 嵌入式面试常问问题
- hibernate 面试常问问题
- 面试常问问题总结
- 面试常问的问题
- 面试过程中的常问问题
- 外企面试常问的英语问题
- 我常问的android面试问题
- ios面试常问问题一览
- 实习工作面试常问问题
- android面试常问问题总结
- jauery+ajax+amazeUi分页
- hpuoj【1290】奇数次元素【统计元素】
- 2017多校第七场02(思维题目)
- Oracle数据库结构化查询 Start with connect by prior使用
- JDK1.8源码分析之HashMap
- JavaEE框架面试常问问题
- Hbase0.98.8安装配置
- 腾讯2017秋招笔试编程题_编码
- Cannot checkout from svn:svn:E720183:Can't create directory
- RMQ
- CentOS7配置OpenCV3.0.0
- HDU 6050 Funny Function【乘法逆元+快速幂】
- [python]关于np.where与np.in1d合用
- 安装vue.js的方法