亚信java面试题
亚信科技前端面试题

亚信科技前端面试题
首先给了一份面试试题,java工程师试题,但我记得我应聘的是前端。
这份java试题分为java基础、数据库基础、web前端基础、框架部运维部分、场景题和选做的智力题,前四部分四个小题左右,场景题和智力题各两道。
应该说考察的都是基础,场景题主要考察编程的思维思路。
然后是技术面试,根据简历问了一些简历相关的技术问题(?)。
问了一些的基础使用。
实际上我对jQuery了解并不够多。
所以许多问到的细节我都语焉不详。
不过面试的问题也就仅此而已了,甚至没有多问原生js的一些作用域或浏览器监测的问题。
诚然我的jQuery基础知识没有那么牢固,但在一个知识遍地可以搜索查找的时代,还只问这些知识类问题,而不涉及逻辑能力的考察。
我觉得这场面试双方都是失败的。
java面试的题目及答案

java面试的题目及答案Java面试题目及答案(共计2000字)1. 介绍一下Java的特点及优点。
Java是一种通用、高级、面向对象的编程语言,具有以下特点和优点:- 简单性:Java相对于其他编程语言来说较为简单,容易学习和使用。
- 面向对象:Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的特性。
- 跨平台性:Java程序可以在不同的操作系统上运行,这是由于Java编译器将Java代码编译成字节码,并在Java虚拟机(JVM)上执行。
- 安全性:Java具有强大的安全特性,包括内存管理、异常处理和安全检查等,能够防止内存泄漏和崩溃等问题的发生。
- 多线程支持:Java提供了多线程编程的支持,使得程序可以并发执行,提高了程序的执行效率。
- 开源生态系统:Java拥有庞大的开源生态系统,包括许多优秀的开源框架和工具,方便开发人员快速构建应用程序。
2. 什么是Java虚拟机(JVM)?它的作用是什么?Java虚拟机(JVM)是Java的核心组件之一,它是一个可以执行Java字节码的虚拟机程序。
JVM主要有以下作用:- 平台无关性:JVM解释并执行Java字节码,使得Java程序可以在不同的操作系统上运行,大大提高了程序的可移植性和跨平台性。
- 内存管理:JVM负责Java的内存管理,包括堆、栈和方法区等,使用垃圾回收机制来自动管理内存,防止内存泄漏和崩溃等问题的发生。
- 虚拟化:JVM提供了对Java程序的虚拟化支持,允许使用多线程并发执行Java程序,提高程序的执行效率。
- 安全性:JVM提供了严格的安全检查机制,确保Java程序的安全性,避免恶意代码的执行。
- 动态扩展:JVM支持动态加载和链接Java类和库,使得Java程序能够在运行时根据需要加载和使用外部类和库。
3. 什么是面向对象编程(OOP)?Java是一种面向对象的编程语言吗?面向对象编程(OOP)是一种编程范式,以对象为中心,将数据和行为封装在一起,并通过对象之间的交互来完成任务。
亚信科技java面试题及答案

亚信科技java面试题及答案亚信科技集团是在美国纳斯达克成功上市的第一家中国高科技企业,亚信科技java的职位面试自然少不了要回答面试题,以下是小编为大家收集到的亚信科技java面试题,希望对大家有帮助!亚信科技java面试题篇1(共30分)1、(14分)在计费系统的预处理程序中,对话单进行格式转换时,需要使用strcpy函数已知strcpy,此函数的原型是char *strcpy(char *strDest, const char *strSrc);其中strDest是目的字符串,strSrc是源字符串。
编写strcpy函数(1)不调用C++/C的字符串库函数,请编写函数 strcpy(2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?2、(16分)在电信业务的后台处理程序中,经常会涉及到处理字符串,除了用char *处理字符串之外,C++还为我们提供了封装了的字符串类string,其本质也是用一个动态数组来保存字符串,类String 的原型为:class String{public:String(const char *str = NULL); // 普通构造函数String(const String &other); // 拷贝构造函数~ String(void); // 析构函数String & operate =(const String &other); // 赋值函数private:char *m_data; // 用于保存字符串};请编写String的上述4个函数普通构造函数、拷贝构造函数、析构函数和赋值函数。
亚信科技java面试题篇2(单选题3分,多选题4分,共32分)在每小题列出的四个备选项中只有1个或2个是符合题目要求的,多选题已用*标识出来,请将其答案填写在题后的括号内,错选或未选均无分。
1、下面这段关于指针和常量的关系的程序哪些是错误的( D ) void f(char * p){chars[]=“HW5,V,0,138****1333”;const char * pc =s; //Apc[3] = ’g’; //Bpc = p; //Cchar * const cp = s;cp[3] = ‘a’; //D}A.const char * pc =s;B.pc[3] = ’g’;C.pc = p;D.cp[3] = ‘a’*2、下列关于函数指针的初始化哪些是错误的?( )A. void reset(int *);void (*pf) (void *) = reset;B. int calc(int ,int );int (*pf1)(int ,int ) =calc;C. extern “c” int compute(int * ,int);int (*pf3)(int *,int) = compute;D. void (*pf4)(const matrix &)=0;3、在计费预处理程序中,取话单函数GetNextCdr的原形类似于int GetNextCdr(StdCdr *pd, int &ri),变量x和y的定义是StdCdr x; int y,把x和y分别作为第一参数和第二参数来调用函数GetNextCdr,正确的调用语句是( B )A.GetNextCdr (x,&y);B.GetNextCdr (&x,y);C.GetNextCdr (&x,&y);D.GetNextCdr (x,y);4、下列关于结构体的使用哪些是正确的?(C )A. struct StdCdr{char switch[3];int number;StdCdr * next;}B. struct StdCdr{char switch[3];int number;StdCdr next;}C. struct StdCdr{char switch[3];int number;StdCdr * next;};D. StdCdr pStd = new StdCdr;pStd. number = 10;5、对于如下程序#includeclass A{ public:A() {std::cout<<"A"<};int main(){ A a[4], b,*p; }会输出多少个A?( C )A.2B.3C.5D.66、派生类的对象对它的基类成员中哪些是可以访问的?(A.公有继承的成员B.公有继承的私有成员C.公有继承的保护成员D.公有继承的公有成员E.私有继承的公有成员7、下面派生类的虚函数的重新声明哪些是良好的?( )A.Base * Base::copy(Base *);Base * Derived::copy(Derived * );B.Base * Base::copy(Base *);Base * Derived::copy(Base * );C.ostream & Base::print(int,ostream&= cout);ostream & Derived::print(int,ostream&);D.void Base::eval()const; D E )void Derived::eval();* 8、已知下列类层次结构,他们都定义了缺省的构造函数( C D ) class X{ };class A{ };class B: public A{ };class C: private B{ };class D:public X,public C{ };D * pd = new D;对于下列哪些转换是不允许的?A. X * px = pd;B. B * pb = pd;C. A * pa = pd;D. C * pc = pd;9、在对语音话单文件进行取话单字段信息操作时,需要用刀lseek函数,在lseek函数的 (int filedes, off_t offset, int whence)参数中,若whence参数为SEEK_CUR,则offset参数代表下列的哪个含义( B )A.将该文件的位移量设置为距文件开始处offset个字节。
java面试问题及答案

java面试问题及答案由于限制在2000字以内,以下是一个简短的Java面试问题及答案列表:问题1:什么是Java虚拟机(JVM)?它的作用是什么?答案:Java虚拟机是一个在计算机上运行Java字节码的虚拟机。
它的主要作用是提供了一个独立于平台的执行环境,使得Java程序可以在不同的操作系统上运行。
问题2:Java中的值传递和引用传递有什么区别?答案:Java中的值传递是指将方法参数的值复制给方法中的参数,任何对该参数的修改都不会影响到原始值。
而引用传递是指将变量的引用(内存地址)传递给方法参数,对该参数所做的任何修改都会影响到原始变量。
问题3:什么是多态性(Polymorphism)?如何实现多态性?答案:多态性指的是同一个方法可以在不同的对象上产生不同的行为。
在Java中,多态性通过继承和方法重写来实现。
当子类重写父类的方法时,可以根据运行时对象的类型来决定调用哪个方法。
问题4:什么是Java中的静态方法和实例方法?答案:Java中的静态方法是属于类的方法,可以通过类名直接调用。
静态方法可以在对象创建之前被调用,并且不能访问非静态的成员变量或方法。
实例方法是属于对象的方法,只能通过对象调用。
实例方法可以访问和修改对象的成员变量。
问题5:什么是Java中的封装(Encapsulation)?答案:封装是一种面向对象编程的概念,用于隐藏对象的细节并保护对象的数据。
在Java中,通过将属性设置为私有(private)并提供公共(public)的方法来实现封装。
公共方法可以用于获取和修改属性的值,同时可以进行额外的验证或操作。
问题6:什么是Java中的继承(Inheritance)?答案:继承是一种面向对象编程的概念,用于创建一个新的类,并从原始类(称为父类或超类)继承属性和方法。
子类可以使用父类的属性和方法,并可以添加新的方法或修改继承的方法。
问题7:什么是Java中的抽象类和接口(Interface)?答案:抽象类是一种不能被实例化的类,它的主要目的是为其子类定义一个通用的行为。
java面试题库java面试题目及答案(3篇)

第1篇一、基础知识1. Java简介题目:请简述Java的基本特点。
答案:- 简单易学:Java设计之初就考虑了易学性,使用面向对象编程。
- 原生跨平台:Java通过JVM(Java虚拟机)实现跨平台运行。
- 安全性:Java提供了强大的安全机制,如沙箱安全模型。
- 体系结构中立:Java不依赖于特定的硬件或操作系统。
- 高效:Java的运行速度接近C/C++。
- 多线程:Java内置多线程支持,便于实现并发处理。
- 动态性:Java在运行时可以进行扩展和修改。
2. Java虚拟机题目:请解释Java虚拟机(JVM)的作用。
答案:JVM是Java程序的运行环境,其主要作用包括:- 将Java字节码转换为本地机器码。
- 管理内存,包括堆、栈、方法区等。
- 提供垃圾回收机制。
- 管理线程和同步。
3. Java内存模型题目:请简述Java内存模型的组成。
答案:Java内存模型主要由以下部分组成:- 堆(Heap):存储对象实例和数组。
- 栈(Stack):存储局部变量和方法调用。
- 方法区(Method Area):存储类信息、常量、静态变量等。
- 本地方法栈(Native Method Stack):存储本地方法调用的相关数据。
- 程序计数器(Program Counter Register):存储线程的当前指令地址。
4. Java关键字题目:请列举并解释Java中的几个关键字。
答案:- `public`:表示访问权限为公开。
- `private`:表示访问权限为私有。
- `protected`:表示访问权限为受保护。
- `static`:表示属于类本身,而非对象实例。
- `final`:表示常量或方法不能被修改。
- `synchronized`:表示线程同步。
- `transient`:表示数据在序列化时不会被持久化。
二、面向对象编程5. 类和对象题目:请解释类和对象之间的关系。
答案:类是对象的模板,对象是类的实例。
java模拟面试题目(3篇)

第1篇一、Java基础知识1. 请简述Java语言的特点。
2. 什么是Java虚拟机(JVM)?它有什么作用?3. 什么是Java的内存模型?请解释Java内存模型中的几个关键概念:堆、栈、方法区、程序计数器、本地方法栈。
4. 什么是Java中的反射机制?请举例说明反射在Java中的应用。
5. 什么是Java中的泛型?请解释泛型的原理和作用。
6. 请简述Java中的四种访问控制符:public、protected、default、private。
7. 什么是Java中的继承和多态?请举例说明继承和多态在实际开发中的应用。
8. 什么是Java中的封装?请举例说明封装在实际开发中的应用。
9. 什么是Java中的接口和抽象类?它们之间有什么区别?10. 什么是Java中的异常处理?请解释try-catch-finally语句的执行顺序。
二、Java集合框架1. 请列举Java集合框架中的常用集合类及其特点。
2. 请简述ArrayList、LinkedList、HashMap、HashSet的区别。
3. 什么是Java中的泛型集合?请举例说明泛型集合的应用。
4. 什么是Java中的迭代器(Iterator)和枚举器(Enum)?请比较它们的区别。
5. 什么是Java中的List、Set、Map的遍历方法?6. 请解释Java中的ArrayList和LinkedList的内部实现原理。
7. 什么是Java中的HashMap的扩容机制?8. 什么是Java中的HashSet的内部实现原理?9. 请解释Java中的线程安全集合类,如CopyOnWriteArrayList、ConcurrentHashMap。
三、Java多线程与并发1. 什么是Java中的线程?请解释线程的创建、调度和同步。
2. 请简述Java中的线程状态,如新建、就绪、运行、阻塞、等待、超时等待、终止。
3. 什么是Java中的同步机制?请解释synchronized关键字的作用。
亚信面试题

1. interface 和 abstract 的区别?abstract 可不可以继承 interface, interface 可不可以继承 interface?2. HashMap 和 Hashtable 的区别?3. 线程常用的方法是什末?4. GC是什末?常用的两种方法是什末?5. Sleep()和wait()的区别?6. Servlet中forward()和redirct()的区别?7. EJB和JavaBean都是什末?8. EJB都有哪些构成?9. Servlet的生命周期,比CGI有什末优点?10. Override 和 Overload的区别?11. JSP的组成部分?12. 写一个JDBC的程序,13. MVC架构的构成和各部分的作用?14. 存储过程和函数的区别?要求能经常出差,主要做JSP和HTML。
今天去参加了我求职生涯的第一次笔试,单位是亚信(中国)广州分公司。
因为参加过培训,去的时候还是怀了许多信心的。
试题是我们到的时候才打印的,十二页,拿在手里有厚厚一打,还真的有点吓人。
所有试题都是简答题,涉及了Java、Oracle和Linux等方面的知识,因为应聘的是Java开发工程师,题目当然是以Java为主,涉及到的Java知识有JDBC、UML、JavaScript、struts等,虽然在培训过程中都学过,但很多题目还是没能做出来。
最可惜的是后面的那四道智力题,虽然不是很难,有些题目甚至做过,或许是因为紧张的原因,我竟然没有完整的做出一题……做完笔试后,考官(可能是项目经理)现场对答卷进行审评,并根据试卷和简历问问题,总之我感觉就像是在面试了;期间项目经理问了我很多问题,可能是缺少准备的缘故,我的回答都很不尽如人意。
我感觉自己的知识储备挺适合亚信提供的这个职位的:很系统的Java知识、数学相关专业且参加过数模竞赛(关于这个数模竞赛问得很细),可是极有可能因为缺少知识的整合和必要的复习注备而错过这次难得的机会,想想真的可惜。
Java经典面试题及答案(200题)

Java经典面试题及答案(200题) Java经典面试题200道Java 基础1. JDK 和 JRE 有什么区别?JDK:Java Development Kit 的简称,Java 开发工具包,提供了Java 的开发环境和运行环境。
JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。
具体来说 JDK 其实包含了 JRE,同时还包含了编译 Java 源码的编译器 Javac,还包含了很多 Java 程序调试和分析的工具。
简单来说:如果你需要运行 Java 程序,只需安装 JRE 就可以了,如果你需要编写 Java 程序,需要安装 JDK。
2. == 和 equals 的区别是什么?「== 解读」对于基本类型和引用类型 == 的作用效果是不同的,如下所示:基本类型:比较的是值是否相同;引用类型:比较的是引用是否相同;代码示例:String x = "string";String y = "string";String z = new String("string");System.out.println(x==y); // trueSystem.out.println(x==z); // falseSystem.out.println(x.equals(y)); // trueSystem.out.println(x.equals(z)); // true代码解读:因为 x 和 y 指向的是同一个引用,所以 == 也是 true,而 new String()方法则重写开辟了内存空间,所以 == 结果为 false,而 equals 比较的一直是值,所以结果都为 true。
「equals 解读」equals 本质上就是 ==,只不过 String 和 Integer 等重写了equals 方法,把它变成了值比较。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
java面试题,大家研究下非技术性问题:1、做个自我介绍;2、介绍下最近的工作经历;3、在项目中扮演什么角色?4、有做过前台方面开发吗?技术性问题:5、对JavaScript熟悉吗?6、Reset是什么?点击Reset后有些东西没有被重置,为什么?7、在Delog里面怎么传值?8、你对Div+Css熟悉吗?9、对CSS的选择器熟悉吗?10、对Java里哪些主流框架熟悉?11、多态一般用在什么地方?有什么好处?12、HashMap与HashT able有什么区别?13、在什么情况下用HashMap,什么情况下用HashT able?14 、Java中重载和重写有什么区别?15、有什么方法实现Java中的线程?16、介绍下Struts的工作原理?、Struts 是MVC的一种实现,它将Servlet和JSP 标记(属于J2EE 规范)用作实现的一部分。
Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。
Struts的体系结构与工作原理如下图2所示:17、Struts里有几大类标签?Bean标记:用来在JSP页中管理beanl 逻辑标记:用来在JSP页中控制流程l HTML标记:用来生成HTML标记,在表单中显示数据,使用会话ID对URL进行编程l 模板标记:使用动态模板构造普通格式的页18、了解Spring框架吗?是否用过?2. Spring框架的主要功能◆基于Java Beans的配置管理,采用IOC的原理,特别是对依赖注射技术的使用。
这些都用来减少各组件间对实施细则的相互依赖性。
◆一个核心的,全局适用的bean工厂◆一个一般抽象化的层面来管理数据库间的数据处理◆建立在框架内的,对Java数据处理API和单独的JDBC数据源的一般性策略。
因此,在数据处理支持上对Java企业版本环境的依赖性得以消除◆和一些可持续性的框架,如Hibernate,JDO,iBATIS和db4o,的整合◆web应用中的MVC框架,基于核心的Spring功能,支持多种产生视图的技术,包括JSP,FreeMarker,Velocity,Tiles,iText,和POI◆大量的AOP框架以提供诸如数据处理管理的服务。
同IOC的功能一样,目的是提高系统的模块化程度19、前台用了哪些技术?就是做个用户看的既VIEW Javascript jsp20、你对Ajax熟悉吗?使用Ajax的最大优点,就是能在不更新整个页面的前提下维护数据。
这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息。
Ajax不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。
就像DHTML应用程序那样,Ajax应用程序必须在众多不同的浏览器和平台上经过严格的测试。
随着Ajax的成熟,一些简化Ajax使用方法的程序库也相继问世。
同样,也出现了另一种辅助程序设计的技术,为那些不支持JavaScript的用户提供替代功能。
21、界面事件怎么动态绑定?22、讲两个方法绑定在同一事件怎么绑定?23、在Form中有个Enable和Disable有什么区别?24、有两个输入框,一个是Enable一个是Disable,传到服务器上,怎么得到?25、详细介绍下Java的同步,异步?如果数据将在线程间共享。
例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。
当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。
26、JavaScript有多少方法将页面信息传递过去后台?27、页面间怎么传值?1.通过URL;2.通过Cookie3.JavaScript静态页面值传递之Window.open篇28、Cookie里面怎么传值?怎么设置保存时间?29、String,StringBuffer的区别?什么情况下用String ,什么情况下用StringBuffer? String是一种强不变类型,它的值一旦被赋予之后,在内存中的相应位置上的值就不会变化了.即便你用String的方法:concat(String str)和replace(char oldChar, char newChar)等等,所返回的值都是新创建的一个String类型,而不是在原内存地址上去更改,因此比如这样的一个赋值: String s="Hello Baidu";s=new String("Hello Baidu");这样在内存中其实是开辟了两个内存空间来存放Hello Baidu,前面那个对象依然留在内存当中,而:s=s.concat("!");加上这样一句,s的值变为了Hello Baidu!,在内存中实际上是新创建了一个String对象装Hello Baidu!,而原有的Hello Baidu依然存在StringBuffer就不同了,它是种可变类型,它的值被赋予之后,在运行期同样可以通过它的方法,如append(String str) 操作内存上的值,而不仅仅是它的引用而已,也就是说同样的对s的值进行修改StringBuffer s="Hello Baidu";s.append("!");这样的操作其实只创建了一个StringBuffer的对象,大大节约了内存的开销30、循环1000次,并且相加,为什么用的是StringBuffer?31、在Java中跳转Forward与rederect的区别?forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。
redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。
32、动态页面与静态Jsp页面有什么区别?结果上有什么区别?简单的说静态网页一般是指用户不能编辑自己网站的内容,而动态网站是可以添加、编辑网站的产品和新闻等信息。
静态网页是指不应用程序而直接或间接制作成html的网页,这种网页的内容是固定的,修改和更新都必须要通过专用的网页制作工具,比如Dreamweave。
静态页面是运行于客户端的程序、网页、插件、组件,例如html页、Flash、JavaScript、VBScript等等,它们是永远不变的。
动态网页是指使用网页脚本语言,比如php、asp、、JSP、CGI等,通过脚本将网站内容动态存储到数据库,用户访问网站是通过读取数据库来动态生成网页的方法。
网站上主要是一些框架基础,网页的内容大都存储在数据库中.静态网页和动态网页最大的区别,就是网页是固定内容还是可在线更新内容33、在try里有return,若是finally里面没有return,会返回码?会执行,在return前执行。
public class Test {/***@param args add by zxx,Dec9,2008*/public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println(new Test().test());;}static int test(){int x = 1;try{return x;}finally{++x;}}}34、Java内置对象有几个?(九大隐式对象)JSP共有以下9种基本内置组件request 用户端请求,此请求会包含来自GET/POST请求的参数response 网页传回用户端的回应pageContext 网页的属性是在这里管理session 与请求有关的会话期application servlet正在执行的内容out 用来传送回应的输出config servlet的构架部件page JSP网页本身exception 针对错误网页,未捕捉的例外35、用过Struts吗?上面自定义标签你用过吗?36、介绍下Struts的优缺点?1. 实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现.2. 有丰富的tag可以用,Struts的标记库(Taglib),如能灵活动用,则能大大提高开发效率。
另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。
3. 页面导航.页面导航将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。
通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。
尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。
4. 提供Exception处理机制.5. 数据库链接池管理6. 支持I18N缺点:一、转到展示层时,需要配置forward,每一次转到展示层,相信大多数都是直接转到jsp,而涉及到转向,需要配置forward,如果有十个展示层的jsp,需要配置十次struts,而且还不包括有时候目录、文件变更,需要重新修改forward,注意,每次修改配置之后,要求重新部署整个项目,而tomcate这样的服务器,还必须重新启动服务器,如果业务变更复杂频繁的系统,这样的操作简单不可想象。
现在就是这样,几十上百个人同时在线使用我们的系统,大家可以想象一下,我的烦恼有多大。
二、Struts 的Action必需是thread-safe方式,它仅仅允许一个实例去处理所有的请求。
所以action用到的所有的资源都必需统一同步,这个就引起了线程安全的问题。
三、测试不方便. Struts的每个Action都同Web层耦合在一起,这样它的测试依赖于Web容器,单元测试也很难实现。
不过有一个Junit的扩展工具Struts TestCase可以实现它的单元测试。
四、类型的转换. Struts的FormBean把所有的数据都作为String类型,它可以使用工具Commons-Beanutils进行类型转化。
但它的转化都是在Class级别,而且转化的类型是不可配置的。
类型转化时的错误信息返回给用户也是非常困难的。
五、对Servlet的依赖性过强. Struts处理Action时必需要依赖ServletRequest 和ServletResponse,所有它摆脱不了Servlet容器。