1 结合项目谈谈你对MVC的理解
MVC 是Model-View-Control的简称。即模型-视图-控制器。MVC是一种设计模式,它强制性的把应用程序的输入、处理和输出分开。
MVC中的模型、视图、控制器分别负担着不同的任务。
- 视图:视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并接受用户的输入。视图不进行任何业务逻辑的处理。
- 模型:模型表示业务数据和业务处理。相当于JavaBean。一个模型能为多个视图提供数据。这提高了应用程序的重用性。
- 控制器:控制器接受请求并调用相应的模型去处理请求。然后根据处理的结果调用相应的视图来显示处理的结果。
项目中的MVC对应:View对应项目中的JSP,Controler对应Action,Model对应service+dao层的业务逻辑和持久层的操作。
2 项目为什么要使用SSH
- 使用Struts是因为Struts是基于MVC模式的,很好的将应用程序进行了分层,是开发者更加关注业务逻辑的实现;Struts有着丰富的标签库,能大大提高开发的效率。
- 使用Hibernate是因为Hibernate为Java应用提供了一个易用的、高效率的对象关系映射框架。Hibernate是个轻量级的持久性框架,功能丰富。
- 使用Spring是因为spring基于IoC(Inversion of Control,控制反转)和AOP构架、多层j2ee系统的框架。
3 挑选一个你做的个说说SSH框架的应用原理
- 在表示层中,首先通过JSP页面实现交互界面,负责传送请求(Request)和接受响应(Response),然后Struts根据配置文件(*-struts.xml)将ActionServlet接收到的Request委派给相应的Action处理。
- 在业务层中,管理服务足迹的SpringIoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。
- 在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。
结合上面的描述,将某个项目的该过程描述一遍。
4 Struts工作原理
详细回答
image.png(1) 客户端(Client)向Action发用一个请求(Request)
(2) Container通过web.xml映射请求,并获得控制器(Controller)的名字
(3) 容器(Container)调用控制器(StrutsPrepareAndExecuteFilter或FilterDispatcher)。在Struts2.1以前调用FilterDispatcher,Struts2.1以后调用StrutsPrepareAndExecuteFilter
(4) 控制器(Controller)通过ActionMapper获得Action的信息
(5) 控制器(Controller)调用ActionProxy
(6) ActionProxy读取struts.xml文件获取action和interceptor stack的信息。
(7) ActionProxy把request请求传递给ActionInvocation
(8) ActionInvocation依次调用action和interceptor
(9) 根据action的配置信息,产生result
(10) Result信息返回给ActionInvocation
(11) 产生一个HttpServletResponse响应
(12) 产生的响应行为发送给客服端。
简单回答
- 发送http请求;
- Web服务器;
- 执行struts核心过滤器StrutsPrepareAndExecuteFilter;
- 加载struts配置文件中配置信息,找到对应的Action类并实例化;
- 执行各类拦截器和Action中对应的方法;
- 配置文件中找到返回结果;
- 转发到具体页面或其他操作;
5 Struts优缺点
优点:
- MVC模式,结构清晰;
- 丰富的struts标签库,提高开发效率;
- 全局结果和声明式异常;
- 可使用OGNL进行参数传递;
- 拦截器使用方便;
- 允许POJO(Plain Old Java Objects)对象 作为Action;
- 基于Spring AOP思想的拦截器机制,更易扩展;
缺点:
- 转到表现层时,需要配置结果页面,页面较多是较为复杂;
- 对Servlet的依赖性较强
- struts标签稍微比el表达式繁重
6 为何使用spring
spring是一个轻量级的控制反转(IoC)、面向切面(AOP)、面向接口、事务管理、包容促进其他框架;使系统中用到的其他框架耦合程度大大降低,拓展性增强、简单易用好管理。
7 spring在项目中如何使用充当黏合剂
- 在项目中利用spring的IoC(控制反转或依赖注入)。明确地定义组件接口(如UserDAO),开发者可以独立开发各个组件,然后根据组件间的依赖关系组装(UserAction依赖于UserAService、UserService依赖于UserDao)运行,很好的把struts(Action)和hibernate(DAO的实现)结合起来。
- spring的事务管理把hibernate对数据库的操作进行了事务配置。
8 描述在系统中如何使用spring的事务控制
spring事务包括编程式事务和声明式事务。在系统中使用了声明式事务管理是用spring的AOP来实现的;配置了只读事务和回滚事务(传播行为为REQUIRED)当出现错误后进行回滚操作。在项目中通过aop切入事务到Service层,这样做能使一次业务逻辑中的几个数据库操作都包含在一个事务中。
9 Hibernate在系统中使用的优化策略
Hibernate对数据的缓存包括两个级:一级缓存,在Session级别上进行,主要是对象缓存,以其id为键保存对象,在Session的生命周期间存在;二级缓存,在SessionFactory的级别上进行,有对象缓存和查询缓存,查询缓存以查询条件为键保存结果,在SessionFactory的生命周期间存在。默认的,Hibernate只启用一级缓存。
关于这个问题,回答系统使用了Hibernate的二级缓存就好。
10 Jpuery异步获取数据的方式有几种?
- load载入远程HTML文件代码并插入到DMO中;
- get;
- post;
- ajax;
- getJSON;
- getScript通过GET方式请求载入并执行一个Javascript文件;
11 系统并发量如何,如何解决大并发量的请求?
系统并发量不大,但是有在应用服务器中间件weblogic和Nginx上做负载均衡的配置;
12 项目中遇到问题如何解决?
自行解决 -- 网络搜索 -- 团队讨论
网友评论