struts1与struts2的区别

合集下载

struts2

struts2

—高级软件人才实作培训专家! 高级软件人才实作培训专家!
搭建Struts2开发环境
搭建Struts2环境时,我们一般需要做以下几个步骤的工作: 1》找到开发Struts2应用需要使用到的jar文件. 2》编写Struts2的配置文件 3》在web.xml中加入Struts2 MVC框架启动配置
北京传智播客教育
北京传智播客教育
—高级软件人才实作培训专家! 高级软件人才实作培训专家!
搭建Struts2开发环境--Struts2在web中的启动配置
在struts1.x中, struts框架是通过Servlet启动的.在struts2中, struts框架是通过Filter启动的.他在web.xml中的配置如下:
—高级软件人才实作培训专家! 高级软件人才实作培训专家!
Struts2
讲师: 讲师:黎活明
北京传智播客教育
—高级软件人才实作培训专家! 高级软件人才实作培训专家!
Struts2
Struts2是在WebWork2基础发展而来的.和struts1一样, Struts2也属于MVC框架. 不过有一点大家需要注意的是:尽管Struts2和struts1在名字上的差别不是很大,但 Struts2和struts1在代码编写风格上几乎是不一样的.那么既然有了struts1,为何还要 推出struts2.主要是因为struts2有以下优点:
北京传智播客教育
—高级软件人才实作培训专家! 高级软件人才实作培训专家!
第一个Struts2应用--HelloWorld
在默认的配置文件struts.xml 中加入如下配置:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "/dtds/struts-2.0.dtd"> <struts> <package name="itcast" namespace="/test" extends="struts-default"> <action name="helloworld" class="cn.itcast.action.HelloWorldAction" method="execute" > <result name="success">/WEB-INF/page/hello.jsp</result> </action> </package> </struts>

金航数码面试

金航数码面试
jsp:forward:在本容器内跳转 。 跳转后,地址栏地址不变 。效率高。跳转后立即结束本页的内容。
sendRedirect:在容器之间的跳转,跳转后地址栏地址为跳转后的地址,效率较低。
通常采用jsp:forward方式跳转。
25、类变量的初始化
答:在Java中类变量在局部中一定要初始化,因为局部变量会覆盖全局变量,否则会报错:变量未初始化。全局变量则可以不初始化,而到具体的内部方法或其他的类成员中初始化。
9) 数据校验的对比:Struts 1支持在ActionForm重写validate方法中手动校验,或者通过整合Commons alidator框架来完成数据校验。Struts 2支持通过重写validate方法进行校验,也支持整合XWork校验框架进行校验。
10) Action执行控制的对比:Struts 1支持每一个模块对应一个请求处理(即生命周期的概念),但是模块中的所有Action必须共享相同的生命周期。Struts 2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。开发者可以根据需要创建相应堆栈,从而和不同的Action一起使用。
3) Servlet依赖方面的对比:Struts 1 Action依赖于Servlet API,因为Struts 1 Action的execute方法中有HttpServletRequest和HttpServletResponse方法。Struts 2 Action不再依赖于Servlet API,从而允许Action脱离Web容器运行,从而降低了测试Action的难度。 当然,如果Action需要直接访问HttpServletRequest和HttpServletResponse参数,Struts 2 Action仍然可以访问它们。但是,大部分时候,Action都无需直接访问HttpServetRequest和HttpServletResponse,从而给开发者更多灵活的选择。

strusts2课堂总结

strusts2课堂总结

一、1、struts2struts2是mvc设计思想的一个实现,可以将项目低耦合,提高扩展性2、struts2和struts1的区别struts2不是struts1的升级,而是继承的下xwork的血统,它吸收了struts1和webwork 的优势。

struts2的action是原型,安全的,struts2的action是单例,非安全3、步骤:1、导入包2、在web.xml文件中,加入struts2的核心拦截器3、在src下放入struts2的xml struts.xml4、urlhttp://localhost:8080/Struts2_01_HelloWorld/demo/hello.action二、1、默认值2、转发和重定向的区别转发:url显示的依然是上一个的url,共享上一次的请求重定向:url显示的是下一个的url,不共享3、urlhttp://localhost:8080/Struts2_02_Default/demo/hello.action4、路径http://localhost:8080/Struts2_02_Default/demo/a/b/c/hello.action1、原路径找不到,http://localhost:8080/Struts2_02_Default/demo/a/b/hello.action2、如果1找不到,http://localhost:8080/Struts2_02_Default/demo/a/hello.action3、如果2找不到,http://localhost:8080/Struts2_02_Default/demo/hello.action3、如果3找不到,http://localhost:8080/Struts2_02_Default/hello.action三、11、自定义action继承ActionSupport2、功能方法必须满足格式public String 名字()throws Exception{....};3、urlhttp://localhost:8080/Struts2_03_Action/demo/a.action四、1、如何给action传入参数注意:赋值的必须有封装的set方法,通过el表达式获取的时候,必须有封装的get 方法1、直接给单个参数赋值,在action里建立一个变量,名字与参数的名字一样2、为对象的某个属性赋值,在action里建立一个对象,将参数改为对象名.属性的格式五、1、转发和重定向的区别转发到下一次的时候,url依然是上一次的url,共享上一次的request重定向到下一次的时候,url是下一次的url,不共享上一次的request2、struts2的result的type转发:共享上一次action重定向:不共享上一次action1、转发到下一个jsp,html:dispatcher2、重定向到下一个jsp,html:redirect3、转发到下一个action:chain转到同一个包下的action转发到不同包下的action4、重定向到下一个action:redirectAction转到同一个包下的action转发到不同包下的action六、1、为了分模块开发,可以设置多个xmL文件。

struts1和strtus2的区别

struts1和strtus2的区别

struts1和strtus2的区别1、Action类Struts 1的Action类扩展一个抽象基类。

在Struts 1是一个常见的问题抽象类而不是接口编程。

Struts 2的行动可能实现一个Action接口,连同其他接口,使可选和定制的服务。

Struts 2中提供了一个基础ActionSupport类实现常用的接口。

虽然,Action接口不是必需的。

任何的POJO对象与一个执行签名可以用作Struts 2的Action对象。

2、线程模型Struts 1的动作是单身,必须是线程安全的,因为只会有一个类的一个实例来处理所有的请求,该行动。

的单身战略名额限制什么可以做Struts 1的操作和发展,需要格外小心。

Action 资源必须是线程安全的或同步的。

在Struts 2 Action对象为每一个请求实例化,因此没有线程安全问题。

(在实践中,servlet 容器会产生许多被丢弃的对象,每个请求,以及一个新的对象并没有对性能上的损失或影响垃圾收集)。

3、Servlet的依赖Struts 1的操作的servlet API的依赖,因为HttpServletRequest和HttpServletResponse被传递给execute方法的调用时采取行动。

Struts 2的动作没有连接到容器中。

最经常使用的servlet上下文被表示为简单的地图,让行动单独测试。

Struts 2的动作仍然可以访问原始的请求和响应,如果需要的话。

然而,其他建筑元素减少或消除的,需要访问HttpServetRequest直接或HttpServletResponse的。

4、可测性测试Struts 1行动的主要障碍是execute方法暴露了Servlet API。

一个第三方扩展中,Struts TestCase中,提供了一组Struts 1的模拟对象。

Struts 2的动作可以测试通过实例的操作,设置属性和调用方法。

依赖注入的支持也使测试更简单。

01、struts2(Struts2开发入门 、常用配置、参数传递) - 副本

01、struts2(Struts2开发入门 、常用配置、参数传递) - 副本

1. Struts2简介1.1. 什么是Struts21.1.1. Struts2的概念Struts2是轻量级的MVC框架,它主要解决了请求分发的问题,重心在于控制层和表现层。

轻量级,指的是Struts2具有较低的侵入性,就是它对我们业务代码的依赖程度很低,简单来说,在使用Struts2框架时,我们的业务代码中基本上不需要import它的包。

Struts2实现了MVC,满足了MVC设计思想。

在我们使用Struts2做开发的时候,就相当于使用了MVC,这是Struts2自动帮助我们实现的,是默认的、隐含的,我们不需要再写特别的代码来实现MVC了。

作为一个框架,Struts2提供了一系列的API,我们可以使用它们来简化代码的编写,从而提升开发效率。

这些API复用程度很高,对业务代码的依赖性也很小,甚至很多是Struts2自动调用的,因此在很大程度上,我们的开发变得可以复用。

Struts2解决请求分发的问题,我们会在后面为什么使用Struts2中讲解。

重心在控制层和表现层,是纵观整个Struts2理论课程来看的,从中我们会体会到这一点,随着大家对Struts2的逐步了解,届时我们再回顾这一点。

1.1.2. 什么是MVCMVC是代码的分层思想,是软件设计领域经典的设计模式。

它根据代码功能的不同,将一个软件的代码分为3部分,即模型、视图、控制器,这3部分代码的含义和功能如下。

1、M-Model 模型模型(Model)的职责是负责业务逻辑。

包含两层:业务数据和业务处理逻辑。

比如实体类、DAO、Service都属于模型层。

2、V-View 视图视图(View)的职责是负责显示界面和用户交互(收集用户信息)。

属于视图的组件是不包含业务逻辑和控制逻辑的JSP。

3、C-Controller 控制器控制器是模型层M和视图层V之间的桥梁,用于控制流程。

比如:在Servlet项目中的单一控制器ActionServlet。

第一章Struts2系统架构

第一章Struts2系统架构

第一章Struts2系统架构本章主要介绍的Struts2的系统架构,让学员对Struts2框架在结构上有一个整体概念为我们以后更加详细的学习Struts2打下一个良好的基础。

第一节Struts2的系统架构及处理的主要流程1.Struts1简介Struts1的历史比较久远,Struts1是世界上第一个发布的MVC框架,目前市场率最高的框架。

下面将简单讲解Struts1的基本架构。

图1-1显示了Struts1的数据流图。

图1-1 Struts1数据流图Struts1框架以ActionServlet为核心控制器,ActionServlet获得客户端请求。

然后ActionServlet根据请求信息调用匹配的业务逻辑控制器(Action)处理用户请求。

请求处理完成后,业务逻辑处理器调用相应的JSP显示处理结果。

Struts1框架实现了MVC模式,下面我们了解一下Struts1是怎样实现MVC模式的。

Struts1框架中并没有提供Model层的实现。

在实际的企业应用中,通过一个JavaBean 实现一个业务逻辑,在功能比较复杂的应用中也采用EJB或WebService服务实现业务逻辑。

Struts1框架的View层采用JSP实现。

Struts1提供了大量丰富的标签库。

这些标签库与Struts的组件兼容的特别好,可以很容易的输出控制器的处理结果。

Struts1框架中,控制器是它的核心,Struts1的控制器由两部分组成:核心控制器(ActionServlet)和业务逻辑控制器(Action),核心控制器由Struts1框架提供。

业务逻辑控制器需要由用户自己继承Struts1框架提供的Action类实现。

在Struts1框架中,JSP/Servlet耦合非常紧密。

这种紧密关系促使Struts1存在各种缺陷。

下面我们分析一下Struts1中存在的缺陷。

●支持的表现层技术单一●耦合性强,不便于单元测试●代码依赖于Struts1 API,侵入性强2.WebWork简介WebWork出自于开源组织opensymphony,实际的创始人是Java领域的名人Rickard Oberg(JBoss和XDoclet的作者)。

三 大 框 架

三 大 框 架

三大框架一.Struts2简介:Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。

其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。

Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。

虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。

拦截器:拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。

拦截是AOP 的一种实现策略。

在Webwork的中文文档的解释为——拦截器是动态拦截Action调用的对象。

它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行。

同时也是提供了一种可以提取action中可重用的部分的方式。

谈到拦截器,还有一个词大家应该知道——拦截器链(Interceptor Chain,在Struts 2中称为拦截器栈Interceptor Stack)。

拦截器链就是将拦截器按一定的顺序联结成一条链。

在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。

拦截器实现原理:大部分时候,拦截器方法都是通过代理的方式来调用的。

Struts 2的拦截器实现相对简单。

当请求到达Struts 2的ServletDispatcher 时,Struts 2会查找配置文件,并根据其配置实例化相对的拦截器对象,然后串成一个列表(list),最后一个一个地调用列表中的拦截器返回类型区别:struts2中关于result的返回类型一般我们是转发到一个jsp页面或者是html页面等,但是struts2中的result的返回类型还有redirect,redirectAction,chain。

Java错题合集(3)

Java错题合集(3)

Java错题合集(3)1、有关java实例变量,局部变量,类变量和final变量的说法,正确的是?实例变量指的是类中定义的变量,即成员变量,如果没有初始化,会有默认值。

类变量指的是⽤static修饰的属性final变量指的是⽤final 修饰的变量2、关于 Socket 通信编程,描述正确的是:()服务器端通过new ServerSocket()创建TCP连接对象服务器端通过TCP连接对象调⽤accept()⽅法创建通信的Socket对象客户端通过new Socket()⽅法创建通信的Socket对象3、访问权限控制从最⼤权限到最⼩权限依次为:public、包访问权限、protected和private 。

()错误解析:应该是:public>protected>默认(包访问权限)>private,因为protected除了可以被同⼀包访问,还可以被包外的⼦类所访问4、socket编程中,哪些socket的操作是不属于服务端操作的()?acceptlistenclose5、类⽅法中可以直接调⽤对象变量。

()错误解析:静态⽅法中不能调⽤对象的变量,因为静态⽅法在类加载时就初始化,对象变量需要在新建对象后才能使⽤6、字符界⾯下接受⽤户从键盘输⼊,需要import的包是:()java.io包7、由3 个“1”和 5 个“0”组成的 8 位⼆进制补码,能表⽰的最⼩整数()-125既然求最⼩整数,那肯定先想到负数,则最⾼位(符号位)⼀定为1,原码中肯定是1所在的位数越⾼,值越⼩,⽽补码是由原码取反加1得到的,则在补码中1所在的位数⼀定要越低,即补码为1000 0011;由补码求得原码:1111 1101=-(64+32+16+8 8、ServletConfig接⼝默认是哪⾥实现的?GenericServlet9、从内存实现或者反射的⾓度来看,关于继承的说法正确的是()。

注:此处的继承不代表能调⽤⼦类将继承⽗类的所有的数据域和⽅法10、关于java集合下列说法正确的有哪些()Collection接⼝是List接⼝和Set接⼝的⽗接⼝,通常情况下不被直接使⽤11、true、false、null、sizeof、goto、synchronized 哪些是Java关键字?gotosynchronized12、Hashtable 和 HashMap 的区别是:HashMap 是内部基于哈希表实现,该类继承AbstractMap,实现Map接⼝Hashtable 线程安全的,⽽ HashMap 是线程不安全的Properties 类继承了 Hashtable 类,⽽ Hashtable 类则继承Dictionary 类HashMap允许将 null 作为⼀个 entry 的 key 或者 value,⽽ Hashtable 不允许。

黑盒法

黑盒法

黑盒法:该方法是把被测试对象看成一个黑盒子,测试人员完全不考虑程序内部结构和处理过程.只在软件的接口处进行测试,根据需求规格说明书.检查程序是否满足功能要求.因此黑盒测试有称为功能测试或数据驱动测试/白盒法:该方法是把测试对象看作一个打开的盒子,测试人员须了解程序的内部结构和处理过程,一检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致.Action 类:? Struts1要求Action类继承一个抽象基类。

Struts1的一个普遍问题是使用抽象类编程而不是接口。

? Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。

Struts2提供一个ActionSupport基类去实现常用的接口。

Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。

线程模式:? Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。

单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。

Action资源必须是线程安全的或同步的。

? Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。

(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)Servlet 依赖:? Struts1 Action 依赖于Servlet API ,因为当一个Action被调用时HttpServletRequest 和HttpServletResponse 被传递给execute方法。

? Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。

如果需要,Struts2 Action仍然可以访问初始的request和response。

struts2讲义

struts2讲义

e.g. ums_struts2_02_action/struts.xml Ⅲ. 使用 DMI 或通配符 目的:减少 Action 的数量 方式一:动态方法调用(Dynamic Method Invocation DMI,struts2.1 后不建议使 用) 定义一个 Action 类,类中可以定义多个与 execute()方法,声明部分相同但方法名 不同的方法。 e.g. ums_struts2_02_action/UserAction_DMI.java 1、定义 UserAction_DMI 类
e.g. ScopeAction_3.java 方式四:实现 ServletRequestAware 接口
e.g. ScopeAction_4.java 注意:1、其中,前两种方式与 Servlet API 解耦合,后两种方式与 Servlet API 耦合,推荐使 用第二种方式,第二种方式使用了 IOC 的模式,解耦合更好。 Ⅵ.Action 中生成响应信息 e.g. ums_struts2_02_result Struts2 框架通过 Action 中 execute()方法的返回值,与 struts.xml 中<action>的<result>元 素的 name 属性值来判断最终响应信息的内容。其中<result>元素设置如下: <result type=”结果类型” name=”名称”>WEB 资源路径或名称</result> 说明: 1、name:result 名称随便起,默认为“success“,与 execute 方法返回值一致。 2、 WEB 资源路径或名称:WEB 资源路径如果为相对路径,则该路径相对于 WEB 应用上下文。如果跳转到 Action 则为该 Action 所对应的<action>元素的 name 值。 3、 type:设置生成响应信息的类型,默认为 dispatcher。 (Ⅰ)ActionSupport 中预定义的结果常量 在 Struts2 的 ActionSupport 类中预定义了一些 Result 常量,当定义的 Action 类继承了 ActionSupport 时就可以使用这些结果常量,当然也可以使用自定义的 result 字符串。

五大框架的理解

五大框架的理解

Java 五大框架之间的对比Spring 及其优点大部分项目都少不了spring的身影,为什么大家对他如此青睐,而且对他的追捧丝毫没有减退之势呢Spring是什么:Spring是一个轻量级的DI和AOP容器框架。

说它轻量级有一大部分原因是相对与EJB的(虽然本人从没有接触过EJB的应用),重要的是,Spring是非侵入式的,基于spring开发的应用一般不依赖于spring的类。

DI:称作依赖注入(Dependency Injection),和控制反转一个概念,具体的讲,当一个角色需要另外一个角色协助的时候,在传统的程序设计中,通常有调用者来创建被调用者的实例。

但是在spring中创建被调用者将不再有调用者完成,因此叫控制反转。

创建被调用对象有Spring来完成,在容器实例化对象的时候主动的将被调用者(或者说它的依赖对象)注入给调用对象,因此又叫依赖注入。

AOP:Spring对面向切面编程提供了强有力的支持,通过它让我们将业务逻辑从应用服务(如事务管理)中分离出来,实现了高内聚开发,应用对象只关注业务逻辑,不再负责其它系统问题(如日志、事务等)。

Spring支持用户自定义切面。

面向切面编程是面向对象编程的有力补充。

面向对象编程将程序分成各个层次的对象,面向切面的程序将运行过程分解成各个切面。

AOP是从运行程序的角度去考虑程序的结构,提取业务处理过程的切面,OOP是静态的抽象,AOP是动态的抽象,是对应用执行过程的步骤进行抽象,从而获得步骤之间的逻辑划分。

容器:Spring是个容器,因为它包含并且管理应用对象的生命周期和配置。

如对象的创建、销毁、回调等。

框架:Spring作为一个框架,提供了一些基础功能,(如事务管理,持久层集成等),使开发人员更专注于开发应用逻辑。

看完了Spring是什么,再来看看Spring有哪些优点1.使用Spring的IOC容器,将对象之间的依赖关系交给Spring,降低组件之间的耦合性,让我们更专注于应用逻辑2.可以提供众多服务,事务管理,WS等。

Struts2课件

Struts2课件

Sturuts2第一节、Struts2介绍Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。

其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。

Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。

虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。

Struts2对Struts1进行了巨大的改进。

主要表现在如下几个方面: 在Action的实现方面:Struts1要求必须统一扩展自Action类,而Struts2中可以是一个POJO。

线程模型方面:Struts1的Action是单实例的,一个Action的实例处理所有的请求。

Struts2的Action是一个请求对应一个实例(每次请求时都新new出一个对象),没有线程安全方面的问题。

Servlet依赖方面:Struts1的Action依赖于Servlet API,比如Action的execute方法的参数就包括request和response对象。

这使程序难于测试。

Struts2中的Action不再依赖于Servlet API,有利于测试,并且实现TDD。

封装请求参数:Struts1中强制使用ActionForm对象封装请求的参数。

Struts2可以选择使用POJO类来封装请求的参数,或者直接使用Action的属性。

表达式语言方面:Struts1中整合了EL,但是EL对集合和索引的支持不强,Struts2整合了OGNL(Object Graph NavigationLanguage)。

绑定值到视图技术:Struts1使用标准的JSP,Struts2使用"ValueStack"技术。

软通动力面试题集

软通动力面试题集

Web 应用初始化时,控制器加载分析配置文件 ( struts-config.xml ) ,获得ActionMapping,配置应用程序1. ActionServlet 接收用户请求2. ActionServlet 根据应用程序配置填充 ActionForm3. ActionServlet 根据 ActionMapping 调用 Action 的 execute 方法4. Action 调用业务逻辑类(Model),在简单的程序中也可以在 Action 的 execute方法中执行业务处理5. 业务逻辑类将处理结果返回给 Action,Action 将处理结果保存在适当的作用域范围之内( session、request 等)6. Action 的 execute 方法向 ActionServlet 返回 ActionForward 指明下一步调用的 Action 或者 JSP 视图7. JSP 视图取得保存在作用域之中的业务处理结果并负责显示HTML 页面大家最好用自己的话来总结出来!常用集合 set、map、listset、map 是 collection 接口的子接口HashSet、TreeSet:ArrayList(数据列表)、linkedList (链表)HashMap、TreeMap、Hashtable。

ArrayList 和 linkedList 的区别(略)作。

,链表是一个个节点链接起来的,擅长插入和删除,搜索和查询的效率比较低。

HashMap、HashTable 区别(略)使用 Map 接口提供的方法entrySet();import java.util.HashMap;import java.util.Iterator;import java.util.Map;public class MapTest {public static void main(String[] args) {Map<Object, Object> map = new HashMap<Object,Object>();map.put("a", "中国");map.put("b", "ABC");map.put("c", 1000);/*for(Iterator<Entry<Object,Object>> it = map.entrySet().iterator();it.hasNext();){Entry<Object,Object> entry = it.next();System.out.println(entry);System.out.println(entry.getKey());System.out.println(entry.getValue());}*/for(Iterator<Object> it = map.keySet().iterator();it.hasNext();){ Object key = it.next();System.out.println(key);Object value = map.get(key);System.out.println(value);}}}比如:字符串常量池中有原字符串:”abc”之后要加”de”,加过之后内存中会有”abc”、”abcde”两个字符串!但”abc”会失去原本指向它的引用变成垃圾回收机制回收的对象!制回收的范围, java 回收对象之前会调用被回收对象的 finalize()方法!注意 Java 虚拟机何时来回收垃圾不确定!那种好处多:因为 java 是单继承所以普通会采用实现 Runnable 接口两种实现方式的区别:继承 Thread 类可以创建本类对象直接调用start()方法运行线程(也就是说本类对象就是一个线程个人理解)实现 Runnable 接口必须用 Thread thread = new Thread()来获得一个线程!代码的输入、输出不变,只是改变中间实现代码!是 model、view、controller 的缩写, model 代表业务逻辑(通过 javabean、EJB 组建实现)、view 是应用表示面(由 jsp 页面产生)、controller 是提供应用处理过程的控制(普通是一个 servlet)。

面试中经常遇到的技术问题

面试中经常遇到的技术问题

面试中经常遇到的技术问题面试中经常遇到的技术问题面试中经常遇到的技术问题前绪:以下总结的是在面试过程中经常遇到的技术性问题,由于笔试的技术知识比较零散,且内容较多,每个公司注重的也有很大区别,在这里就不陈述了,大家除了看老师给发的笔试资料外还可以参考我所总结的常见面试题,其实在面试的时候很多的技术性问题都是出自于笔试题目,只不过换了种问法或加以扩展,有些题目是我们未曾学到的,大家可以参照下,提前下手学习。

一.AJAX 部分(1)Ajax 的原理和优缺点?(2)Ajax 的应用,做过什么功能,如何实现,了解和用过什么Ajax 框架?(如DWR )(3)普通WEB 应用于Ajax 的区别?二.EJB 部分(1)EJB 与JAVA BEAN的区别?(2)EJB 是基于哪些技术实现的?并说出SessionBean 和EntityBean 的区别,StatefulBean 和StatelessBean 的区别。

(3)EJB 的角色和三个对象(4)EJB 容器提供的服务(5)EJB 规范规定EJB 中禁止的操作有哪些?(6)EJB 的几种类型(1)struts1与struts2的工作机制?(2)struts1与struts2的区别?(3)单实例与多实例的区别?(基于上一个问题)(4)struts 你都用过那些标签?(5)hibernate 的工作机制?(6)如何优化hibernate ?(7)为什么要用hibernate ?它的优缺点是什么?(8)hibernate 如何实现关联的?(9)hibernate 的延迟加载是怎样实现的?(10)hibernate 如何实现分页?(11)Spring 的工作机制?什么是IOC ?什么是AOP ?(12)Spring 是怎样实现声明式事务?(13)struts 与Spring 是怎样联合使用的?(14)struts 、hibernate 、Spring 是怎样相互配合使用的?(15)Spring 的事物管理?(提示:包括编程式和声明式)四.JavaScript 部分(1)如何理解JavaScript 的面向对象?(2)JavaScript 都有哪些内置对象和方法?(3)你是怎样应用JavaScript 的?(4)window.parent 与window.openner 得区别?(5)JavaScript 中三种提示框的方式?(prompt )(6)form 中的input 有哪些类型?各是做什么处理使用的?(7)form 中的input 可以设置readonly 和disable ,请问这两项属性有什么区别?(8)简述DIV 元素和SPAN 元素的区别(9)结合text这段结构,谈谈innerHTML outerHTML innerText之间的区别五.Oracle 数据库(1)Oracle 用过什么函数?(2)Oracle 用过什么(视图,索引,存储过程)?(3)Oracle 管理过么?(4)让你插入1000条数据你会怎么做?(5)数据库的job 是什么来执行的?(6)数据库分区和表空间的建立(7)数据库的死锁举个例子?(8)什么是绑定变量?(9)数据库的三范式?(10)什么是临时表,为什么要用临时表?(11)存储过程包括哪些部分?适用于什么场合?(12)游标的作用?(13)数据库连接池的工作机制是什么?(14)去掉数据库中指定表里重复的数据(如name 重复)(15)常用操作命令要熟(16)delete 与truncate 、drop 的区别?(1)tomcat 的四种发布项目的方式?(2)使用过Weblogic 吗?那个版本的?(3)应用服务器有那些?(1)说一下常用过哪些设计模式?(2)说一下工厂模式的机制?结合项目应用在哪些地方?(3)第三方插件的作用?(4)BS/CS的优缺点?(5)什么是多态?(6)什么是面向对象?(7)接口与抽象类的区别?分别适用什么地方?(8)解释MVC 模式?(9)MVC1与MVC2的区别?(10)说一下你对webservice 的理解(11)对类有什么理解。

SSH三大框架的工作原理及流程

SSH三大框架的工作原理及流程

SSH三⼤框架的⼯作原理及流程摘要: Hibernate⼯作原理及为什么要⽤? 原理: 1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置⽂件 2.由hibernate.cfg.xml中的读取并解析映射信息 3.通过config.buildSessionFactory();//创建SessionFactory 4.sessionFactoryHibernate⼯作原理及为什么要⽤?原理:1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置⽂件2.由hibernate.cfg.xml中的读取并解析映射信息3.通过config.buildSessionFactory();//创建SessionFactory4.sessionFactory.openSession();//打开Sesssion5.session.beginTransaction();//创建事务Transation6.persistent operate持久化操作7.session.getTransaction().commit();//提交事务8.关闭Session9.关闭SesstionFactory为什么要⽤:1. 对JDBC访问数据库的代码做了封装,⼤⼤简化了数据访问层繁琐的重复性代码。

1. Hibernate是⼀个基于JDBC的主流持久化框架,是⼀个优秀的ORM实现。

他很⼤程度的简化DAO层的编码⼯作2. hibernate使⽤Java反射机制,⽽不是字节码增强程序来实现透明性。

3. hibernate的性能⾮常好,因为它是个轻量级框架。

映射的灵活性很出⾊。

它⽀持各种关系数据库,从⼀对⼀到多对多的各种复杂关系。

2. Hibernate是如何延迟加载?1. Hibernate2延迟加载实现:a)实体对象 b)集合(Collection)1. Hibernate3 提供了属性的延迟加载功能当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从⽽提⾼了服务器的性能。

Spring、SpringMVC、Struts2之间的区别

Spring、SpringMVC、Struts2之间的区别

Spring、SpringMVC、Struts2之间的区别⼀、Spring与SpringMVC的区别:spring是⼀个开源框架,是为了解决企业应⽤程序开发,功能如下:功能:使⽤基本的JavaBean代替EJB,并提供了更多的企业应⽤功能范围:任何Java应⽤ Spring是⼀个轻量级的控制反转(IoC)和⾯向切⾯(AOP)的容器框架。

1、轻量——从⼤⼩与开销两⽅⾯⽽⾔Spring都是轻量的。

完整的Spring框架可以在⼀个⼤⼩只有1MB多的JAR⽂件⾥发布。

并且Spring所需的处理开销也是微不⾜道的。

此外, Spring是⾮侵⼊式的:典型地,Spring应⽤中的对象不依赖于Spring的特定类。

2、控制反转——Spring通过⼀种称作控制反转(IoC)的技术促进了松耦合。

当应⽤了IoC,⼀个对象依赖的其它对象会通过被动的⽅式传递进来,⽽不是这个对象⾃⼰创建或者查找依赖对象。

你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,⽽是容器在对象初始化时不等对象请求就主动将依赖传递给它。

3、⾯向切⾯——Spring提供了⾯向切⾯编程的丰富⽀持,允许通过分离应⽤的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进⾏内聚性的开发。

应⽤对象只实现它们应该做的——完成业务逻辑—— 仅此⽽已。

它们并不负责(甚⾄是意识)其它的系统级关注点,例如⽇志或事务⽀持。

4、容器——Spring包含并管理应⽤对象的配置和⽣命周期,在这个意义上它是⼀种容器,你可以配置你的每个bean如何被创建——基于⼀个可配置原型(prototype),你的bean可以创建⼀个单独的实例或者每次需要时都⽣成⼀个新的实例——以及它们是如何相互关联的。

然⽽,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞⼤与笨重的,难以使⽤。

5、框架——Spring可以将简单的组件配置、组合成为复杂的应⽤。

s1与s2区别

s1与s2区别

s1与s2区别struts1和struts2的区别struts2不是struts1的升级,而是继承的webwork的血统,它吸收了struts1和webwork的优势。

1.action类struts1要求继承一个抽象的基类(MappingDispatchAction),而且是使用抽象类编程不是接口struts2 action类可以实现action接口但是不是必须的,任何有execute标识的POJO对象都可以用作struts2的action对象2. 线程模式struts1 action是一个单例模式并且必须是线程安全的,单例策略限制了struts1 action的行为,action资源必须是线程安全的或者是同步的.struts2 action对象为每一个请求产生一个实例,因此没有线程安全的问题.3.servlet依赖struts1 action 严重依赖于servlet的API(应用程序接口),调用action被调用时httpservletrequest和httpservletresponse被传递给execute方法strurs2 action不依赖于容器,action可以单独被测试,同时如果需要httpservletrequest和httpservletresponse也可以从ServletActionContext类用对应的get方法获取4.可测试性struts1 execute方法使用了servlet API很难测试虽然可以借助struts Testcase提供对象来测试但是也很麻烦struts2 Struts2只要实现了一个public String execute()就可以了,这样Action就可以实现脱离Servlet 测试.5.接受输入struts1使用actionForm对象来接受输入。

所有的actionform都必须继承该基类。

因为他javaBean不能当做作actionform,导致开发者经常创建多余的类来捕获输入。

华为复试面试

华为复试面试

主要是关于项目的流程(主要问框架里面的东西,使用了jQuery的哪些东西,struts1和struts2的区别,ajax,extjs),还有基础(接口,抽象类,项目中使用了哪些集合),oracle(存储过程,函数,游标,数据库表的设计,他写了一些业务逻辑让我使用存储过程来实现)。

sql优化1. public class Test {public static void main(String[] args) {//B是A的子类问该段代码能正常运行吗?A a = new A();B b = (B) a;}}解:可以正常运行。

二、extjs你是怎么学习它的,解:先问问同事ExtJs主要是用来干嘛的,然后自己再去搜索资料,跟同事要点资料等。

三、你是通过什么途径知道有这门技术的,解:通过跟同事在业余时间聊天才知道这门技术。

四、你在项目中遇到最大的问题,怎么解决的。

解:如果我在项目中遇到了最大的问题,我会先自己思考,如果自己解决不了,就问问同事等。

五、struts1 和struts2区别,解:六、 Ant ,七、怎么去掉重复的记录。

delete from 表名 awhere a.rowid !=(select max(b.rowid) from 表名 bwhere a.字段1 = b.字段1 anda.字段2 =b.字段2)解:通过rowid八、数据库简单又经常用的SQL记几条,函数记几个。

函数:统计函数,时间函数啊,九、线程调用解:start十、Set List Map 底层十一、&& || & | 这些的应用1. &只能操作布尔型,而&&不仅可以操作布尔型,而且可以操作数值型。

【运算符】2. &&操作不会产生短路。

【逻辑运算符】在if判断中,第一个表达式为false,那么后面的表达式就不会执行,区别主要答两点:a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型b.逻辑操作不会产生短路十二、JS的进度条怎么实现解:setlnterval方法有两个参数,第一个是方法名,第二是隔多长调用前面设的方法一次十三、IO流1.首先自我介绍2.然后介绍自己的项目2.1 我在这里从Struts2拦截器说起2.2 扯到了代理模式,跟职责链模式2.2 在说了下OGNLOGNL:OGNL是struts2 特有的一种对象图形导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,能够遍历整个对象的结构图,实现对象属性类型的转换等功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

struts1与struts2的区别
答:
一、struts1要求Action类继承一个抽象基类,而不是接口。

struts2的action类可以实现一个action接口,也可以实现其他接口。

二、sturts1 action是单例模式,线程是不安全的。

struts2 action线程是安全的,action为每一个请求都生成了一个实例。

三、sturts1过去依赖serlet API,不容易测试。

struts2不依赖于容器,允许Action脱离容器单独被测试。

四、Struts1 使用ActionForm对象捕获输入。

所有的ActionForm必须继承一个基类。

Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。

五、Struts1 整合了JSTL,因此使用JSTL EL。

这种EL有基本对象图遍历,但是对集合和索引属性的支持很弱。

Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言--&quot;Object Graph Notation Language&quot; (OGNL).
六、Struts 1使用标准JSP机制把对象绑定到页面中来访问。

Struts 2 使用&quot;ValueStack&quot;技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。

七、Struts 1 ActionForm 属性通常都是String类型。

Struts1使用Commons-Beanuti ls进行类型转换。

Struts2 使用OGNL进行类型转换。

提供基本和常用对象的转换器。

八、Struts 1支持在ActionForm的validate方法中手动校验,或者通过Commons Validator
的扩展来校验。

Struts2支持通过validate方法和XWork校验框架来进行校验。

九、Struts1支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期。

Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。


栈能够根据需要和不同的Action一起使用。

相关文档
最新文档