1.MVC的各个部分都有那些技术来实现?如何实现?
MVC是模型(Model),视图(View)和控制器(Controller) 的缩写,其目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。 View层用于与用户的交互,通常用JSP来实现。 Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。
MVC模式的目的就是实现Web系统的职能分工。
MVC模式的好处:
1.各施其职,互不干涉
在MVC模式中,三个层各施其职,所以如果一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码而不会影响到其它层中的代码。
2.有利于开发中的分工
在MVC模式中,由于按层把系统分开,那么就能更好的实现开发中的分工。网页设计人员可以进行开发视图层中的JSP,对业务熟悉的开发人员可开发业务层,而其它开发人员可开发控制层。
3.有利于组件的重用
分层后更有利于组件的重用。如控制层可独立成一个能用的组件,视图层也可做成通用的操作界面
/*(以前的Jsp页面是把所有的代码都写在Jsp页面中,那样不利于维护)
mvc是框架模式,设计模式是指工厂模式等*/
2、Struts1和Struts2的区别
一、Servlet依赖性
由于Action在被调用的时候,HttpServletRequest和HttpServletResponse被传递到execute()方法,struts1的Action对Servlet API有依赖 性,但如果在struts2中,Action就不会对容器有依赖性了,因为struts2的Action是由简单的POJO组成,在struts2中,Servlet上下文以简单的Map的形式表现出来,这使得Action可以得到独立的测试,如果需要,struts2也可以访问原始的请求与响应。
二、 Action类
struts1要求action类继承一个基类,struts2 Action要求继承ActionSupport基类
三、验证
struts1和struts2都支持通过validate方法的手动验证,struts1使用ActionForm中的validate方法,而struts2支持通过Validate方法和Xwork校验框架的手动验证
四、线程
struts1是单例模式的并且必须是线程安全的,因为仅有一个Action的实例来处理所有请求,而struts2为每一个请求产生一个实例
五、易测性
struts1一个主要问题是execute方法暴露了Servlet API,一个叫Struts TestCase的第三方扩展,提供了一个struts1测试用的模拟对象,但是struts2中,Action可以经由创建Action实例,设置属性,和调用方法来得到测试
六、获取输出
struts1使用ActionForm来捕获输入,而所有的ActionForm需要继承一个框架依赖的基类,由于javabean不能当作ActionForm来用,开发人员不得不创建冗繁的类来获取出入,不过struts2用Action属性,这避免了需要创建第二个输入对象
七、表达式语音
struts1与JSTL整合,struts2不仅支持jstl 还支持OGNL
八、将绑定值到视图中
在视图层,struts1使用标准的JSP来绑定对象到页面上下文来访问,然而struts2使用一种叫值栈的技术,这使得标签可以访问值而不需将视图与正在呈递的对象类型连接起来,值栈允许重用一些属性名相同但类型不同的视图类型
九、类型转换
通常struts1的ActionForm属性都是string类型的,struts1使用Commons-Beanutils进行类型转换,这些针对每一个类的类型转换无法为每一个实例配置,然而struts2使用OGNL来进行类型转换,框架包含了针对基础类型,常见对象类型与原始类型的转换器
十、Action执行控制
struts1支持每一个模块的请求处理器的分离,但是同一模块下的所有Action必须共享相同的生命周期,struts2支持通过拦截器栈为每一个Action创建不同的生命周期,自定义栈可以视需要对不同的Action使用
3.struts2工作原理
总结:
(a)用户发送http(httpServletRequest)请求,请求web服务器(Tomcat),web服务器加载web部署描述文件(web.xml),执行过滤器ActionContextCleanUp,Other filters,filterDispatcher等等
(b)调用filterDispatcher进入struts2流程中,filterDispatcher询问ActionMapper是否请求Action,如过actionMapper决定调用某个action,filterDispatcher把请求的处理交给ActionProxy,ActionProxy通过配置文件管理器(Configuraction Manager)加载struts.xml 配置文件,找到相应Action(需要调用的action类)
(c)ActionProxy会创建Action Invocation对象先执行struts2中相应的拦截器,在行所请求Action
(d)Action Invocation执行Result找到分发页面
(e)(反向)执行struts2中拦截器或拦截器栈
(f) 响应(HttpServletResponse)给客户端
truts 2框架本身大致可以分为3个部分:
核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。
struts2优势:
与Servlet API(Servlet容器)解耦
3.struts2校验validateXxx()是通过反射技术调用的。
3.拦截器和过滤器的区别:(过滤器 在struts2中称为拦截器 )
1)拦截器是基于java的反射机制的,而过滤器是基于函数回调
2)拦截器不依赖与servlet容器,过滤器依赖与servlet容器
3)拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求
起作用
4)拦截器可以访问action上下文、值栈里的对象,而过滤器不能
5)在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次
4.反射
是通过一个类的名字去查找一个类,然后通过一个newInstance()方法实例化一个获得的类
Object obj = Class.forName("com.spring.test.di.LogicImpl")
.newInstance();
logic = (Logic) obj;
Class<imessage> msgclass = (Class<imessage>) Class.forName(msgclassname);
IMessage msg = msgclass.newInstance();
反射的好处,其实就一句话:高类聚低耦合。把代码动态化,提高了代码的灵活度减少了代码量!
反射的缺点,代码灵活度增大了,自然会带来效率的问题,因此,大量使用反射会带来效率低的问题!
其实在我们实际项目中,随着许多框架的使用,我们程序员很少在手动实现反射,但我们又无时无刻在使用反射,比如JDBC数据库连接第一句代码就在用反射,框架的使用,大量配置文件的出现,也是在使用反射去创建类对象,只是我们在使用时并没有手动去实现反射,这些工作都由框架来实现了!
4.struts2的核心jar包
1。Commons-logging.jar -------------- 用于通用日志处理
2。Freemarker.jar -------------- 表现层框架,定义了struts2的可视组件主题
3。Ognl.jar -------------- OGNL表达式语言,struts2支持该EL
4。Struts2-core.jar -------------- struts2 2.0.11.2的核心库
5。Xwork.jar -------------- webwork的核心库
如要整合其他框架,则需要添加相应的xxx-plugin.jar如:
整合spring需要将这个jar包导入]。struts2-spring-plugin.jar ---struts2的spring插件
5.struts2 文件上传
jsp页面 method必须设置成post,enctype 为multipart/form-data
谈谈你对spring - IOC的理解
1.什么(what): 控制反转,可以通过xml配置文件来构造bean,并且配置bean之间的依赖关系
2.优点:
1).易于扩展,还可以与其它框架整合;
2)解耦,提高灵活性和可维护性
3)轻量级(包括哪些……)
3.缺点
缺少IDE重构操作的支持,如果在Eclipse要对类改名,那么你还需要去XML文件里手工去改了,这似乎是所有XML方式的缺憾所在。
4,怎么用(how):写好bean之后,配置applicationContext.xml
5.可以使用容易提供的众多服务,如事务管理,消息服务等
6.容器提供单例模式支持
1、哪些地方需要spring来配置?
1)主要的三大类型: DAO service Action ,
2) 其它特别的类:某些工厂类,比如hibernate的sessionfactory bean、 事务管理的类 transactionmanager、任务调度
IoC的优缺点:
优点:解耦,提高灵活性和可维护性。
缺点:缺少IDE重构操作的支持,如果在Eclipse要对类改名,那么你还需要去XML文件里手工去改了,这似乎是所有XML方式的缺憾所在。
spring
1.spring概况
Spring是一个开源框架, 是一个轻量级的控制反转(IoC inversion of control )和面向切面(AOP aspect of progress)的容器框架
2.轻量级
1)文件jar包本身比较小,依赖包较少
2)易于扩展,随时可以不要;可以加入很多组件 (比如权限控制 spring-security、crobjob定时任务等);可以与struts hibernate整合
3)Spring是非侵入式的(通过反射机制引用),通过配置文件反射的机制控制其它的类
3.为什么要用spring
1)解耦:IOC,Inversion of Control; 控制反转
a)传统的方式,类与类直接引用依赖性高,不好扩展 b)实例间bean的赋值与传递,传统方式会导致new多个dao,
spring ioc解决以上问题.
2)(总体上)简化编程,提高效率 ,利于扩展
3) AOP : Aspect-Oriented Programming 面向切片编程
4.Ioc: Inverse of control,控制反转;
DI:Depedency Injection 依赖注入
IoC和DI是从不同角度描述同一件事情,即DI模式是Ioc的具体实现方式,通过引入IoC容器,利用依赖关系注入,实现对象的解耦。
AOP(aspect of progress)
Spring对AOP支持使我们在用户权限控制、事务处理方面节省了很多工作量用户权限控制、事务处理
一、spring工作原理:
1.spring mvc将所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责对请求进行真正的处理工作。
2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.
3.DispatcherServlet将请求提交到目标Controller
4.Controller进行业务逻辑处理后,会返回一个ModelAndView
5.Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象
6.视图对象负责渲染返回给客户端。
二、为什么要用spring:
AOP 让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。使用 AOP 后,公共服务 (比 如日志、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增加域对象的对象模型的复杂性。
IOC 允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。正如单词倒置所表明的,IOC 就像反过来的JNDI。没有使用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(straight construction),每一个对象都是用其协作对象构造的。因此是由容器管理协作对象(collaborator)。
Spring即使一个AOP框架,也是一IOC容器。 Spring 最好的地方是它有助于您替换对象。有了 Spring,只要用 JavaBean属性和配置文件加入依赖性(协作对象)。然后可以很容易地在需要时替换具有类似接口的协作对象。
数据库事务的四大特性:
数据库事务必须具备ACID特性,ACID是Atomic(原子性)、Consistency(一致性)、Isolation(隔离性)和Durability(持久性)的英文缩写。
</imessage></imessage>
- 大小: 36.3 KB
- 大小: 92.5 KB
- 大小: 346.9 KB
- 大小: 157.4 KB
- 大小: 17.4 KB
分享到:
相关推荐
J2EE知识大全 通过本篇文章,我们将对J2EE的核心知识进行详细的介绍,使初学者快速掌握J2EE编程的基础知识。 html基本知识点: * html是超文本标记语言,主要用于编写网页 * html中的基本元素是标记,标记的格式...
J2EE知识(真心收集好文),学习Java必看的
**J2EE基础知识详解** J2EE,全称为Java 2 Platform, Enterprise Edition,是Java平台企业版,主要用于构建分布式的企业级应用。本资源主要针对J2EE的基础知识进行讲解,包括项目搭建、JSP(JavaServer Pages)和...
【J2EE基础知识详解】 J2EE,全称为Java 2 Platform Enterprise Edition,是Java 2平台的企业版,主要用于构建企业级的分布式、多层架构的复杂应用系统。这一技术平台由Sun Microsystems(现已被Oracle公司收购)...
### J2EE 指南知识点详解 #### J2EE 概述 J2EE(Java 2 Platform, Enterprise Edition)是一种广泛应用于企业级应用程序开发的平台标准和技术框架。它基于Java SE,并针对大型分布式系统提供了更为丰富的特性和功能...
这个知识盘点涵盖了J2EE生态中的核心组件和技术,包括EJB(Enterprise JavaBeans)、Spring、Struts2、Hibernate、JavaScript以及JPA(Java Persistence API)。以下是对这些技术的详细解释: 1. EJB(Enterprise ...
J2EE知识体系概述,适合新手学习的文档资料。简洁明了。
这份"J2EE试题汇总"包含了大量关于J2EE的试题,旨在帮助学习者检验和提升在J2EE领域的知识。 J2EE的核心组件包括: 1. **Servlet**:Servlet是Java编写的服务器端程序,主要用于扩展服务器的功能,处理HTTP请求。...
我自己参加的Java实训,以下是我的实习期间理论知识的总结,包含HTML,JSP,Tomcat,servlet,Struts,Hibernate等知识,内容很全,拿来和大家分享,pdf打开密码是12。如需进一步学习交流请加我QQ:504700869,加我...
J2EE相关技术知识的学习涵盖了广泛的领域,包括网络协议、HTTP请求响应机制、JSP内置对象、以及Web开发中的各种框架和技术。以下是对这些知识点的深入解析: 首先,HTTP协议是互联网通信的基础,其无状态特性意味着...
J2EE高级基础知识是学习J2EE开发的关键,它涵盖了多个核心概念和技术。 1. **EJB(Enterprise JavaBeans)**:EJB是J2EE的核心组件模型,分为三种类型:Session Beans(会话Bean)处理客户端请求,提供业务逻辑;...
给入行JAVA开发小白,需要学习的知识点归纳和总结。可以下载
这个压缩包文件“J2EE知识点大全,学习笔记”显然是一个关于J2EE的综合学习资料,其中可能包含了J2EE的多个核心概念和技术。下面,我们将深入探讨J2EE的关键知识点。 1. **Servlet与JSP**:Servlet是Java服务器端...
J2EE简介及学习方法 J2EE基础技术 XML、RMI、JNDI 、JMS
学习J2EE,你需要掌握以下几个核心知识点: 1. JSP(JavaServer Pages):JSP是Java Web开发中的视图层技术,用于创建动态网页。JSP文件由模板数据(HTML、CSS、JavaScript等)和JSP元素(指令、脚本、动作)组成。...
#### 一、J2EE基础知识介绍 J2EE(Java 2 Platform, Enterprise Edition)是Sun Microsystems为简化企业级应用开发而提出的一套技术标准,它提供了构建分布式系统的基础框架。在J2EE环境中,开发者可以利用多种组件...
**J2EE基础知识语法学习手册** Java 企业版(J2EE)是Oracle公司推出的用于构建企业级分布式应用的平台,它提供了丰富的组件和服务,包括Servlet、JSP、EJB、JMS、JTA等,使得开发者能够创建高效、可扩展且具有高度...
J2EE的mvc三层架构的基本中知识
J2SE+J2EE所有知识点汇总,简单而不失详细。是复习和预习的重要参考资料。