1.MVC
是模型(model)-视图(view)-控制器(controller)的缩写,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理。然后模型根据用户请求进行相应的业务逻辑处理,并返回数据。最后控制器调用相应的视图格式化模型返回的数据,并通过视图呈现给用户。
主要还是采用封装(分层)的思想,来降低耦合度,从而使我们的系统更加的灵活,扩展性更好。
优点:1)多个视图可以共享一个模型,提高代码的可重用性.
2)三个模块相互独立,构造良好的松耦合的构件。
3)控制器提高应用程序的灵活性和可配置性。
缺点
1)增加了系统结构和实现的复杂性
2)视图与控制器间的过于紧密的连接
3)视图对模型数据的低效率访问。
2.Spring 的控制反转
Service ,Dao层作为独立的组件出现,在编程阶段,既没有实例化对象,也没有设置依赖关系,而把它交给Spring,由Spring在运行阶段实例化,组装对象。把自己new的东西改为容器提供。使用new实现具体类,当代码使用大量具体类时,需要修改代码,不满足对扩展开发,对修改关闭的设计原则。将实例化具体类的代码从应用中抽离,封装起来。
A) 初始化具体值
B) 装配
好处:灵活装配,防止内存泄漏
spring中的依赖注入DI(dependenceinjection)共有三种方式:第一种是接口注入(Interface Injection)第二种是get set注入(set/get Injection)第三种是构造器注入(Constructor Injection)
三种注入方式的区别:
1).接口注入:组件需要依赖特定接口的实现,其中的加载接口实现和接口实现的具体对象都是由容器来完成。这样,接口必须依赖容器,这样的组件具有侵入性,降低了重用性。其中如J2EE开发中常用的Context.lookup(ServletContext.getXXX),都是接口注入的表现形式。(这种注入方式不是常用的)。
2). getter/setter方式注入:对于需要注入的东西比较明确。符合java的设计规则。更适合java开发人员,使用起来更加自然,更加方便。
3).构造器方式注入:在类加载的时候,就已经注入依赖的组件。但是若是参数多的话,使用起来不方便。
3.JSP的9个内置对象及作用?
Request 请求对象; response 响应对象
pageContext 页面上下文对象 通过pageContext获取JSP的资源
Session 会话对象 服务端保存用户信息
application 应用程序对象 application对象实现了用户间数据的共享,可存放全局变量
out 输出对象:服务器向客户端输出字符类内容
Config 配置对象 page 页面对象
exception 异常对象,更常用办法:filter捕捉异常,或者exceptionHandler机制捕捉异常。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译
4.AOP概念:
面向切面编程,是面向对象的思维的有力补充,在执行业务的前后执行另外的代码,把业务流程分为几个部分,例如权限检查,业务处理日志记录,每个部分单独处理,然后组装完成完整的业务流程。Servlet的Filter便是AOP思想。使用拦截器接口interceptor。
好处:可以动态的增加和删除在切面上的逻辑而不受影响。