??xml version="1.0" encoding="utf-8" standalone="yes"?> 序列化就是一U用?span style="font-family: Arial; font-size: 10pt; background-color: #ffffff; ">处理对象?/span>的机Ӟ所谓对象流也就?span style="font-family: Arial; font-size: 10pt; background-color: #ffffff; ">对象的内容q行化
]]>
]]>
q行l果Q?br />
2.public class Test{
public static void main(String[] args){
int x = 100;
}
q行l果Q?br />equal
3.public class TestKnowleage5 {
q行l果Q?br />
4.public class TestKnowleage5 {
q行l果Q?br />
5.public class TestKnowleage5{
6.class A{
q行l果Q?br />
q行l果Q?br />
8.hibernate导入大量数据ӞZ避免内存中生大量对象,在编码时注意什么,如何去除Q?br />
9.视图与表的区?br />10.触发器有哪几U类?br />11.
1Q?-6位字母或数字Q?br />[a-zA-Z0-9]{1,6}
2Q手机号Q只能是139?59开_11位数字)
1[35][9][0-9]{8}
13.字符串反转:new StringBuilder(str).reverse().toString();
14.写程序:1+2²+3²+...+n²
int func(int n){
return n==1?1:func(n-1)+n*n
}
15.写一个gq加载的单例模式Q?br />public class SingleTon{
private static SingleTon instance = null;
private SingleTon(){}
public static SingleTon getInstance(){
if(instance == null){
synchronized(""){
if(instance == null){return new SingleTon();}
}
}
return instance;
}
}
16.JSP?U内|对象:
requestQ?div style="display: inline-block; ">
responseQ?div style="display: inline-block; ">
outQ?div style="display: inline-block; ">out对象是JspWritercȝ实例,是向客户端输出内容常用的对象
sessionQ?div style="display: inline-block; ">session对象指的是客L与服务器的一ơ会话,从客Lq到服务器的一个WebApplication开始,直到客户端与服务器断开q接为止。它是HttpSessioncȝ实例
pageQ?div style="display: inline-block; ">page对象是指向当前JSP面本nQ有点象cM的this指针Q它是java.lang.Objectcȝ实例
applicationQ?div style="display: inline-block; ">ServletContextcȝ实例,application对象实现了用户间数据的共享,可存攑օ局变量。它开始于服务器的启动Q直到服务器的关?/span>
exceptionQ?div style="display: inline-block; ">exception对象是一个例外对象,当一个页面在q行q程中发生了例外Q就产生q个对象。如果一个JSP面要应用此对象Q就必须把isErrorPage设ؓtrueQ否则无法编译。他实际上是java.lang.Throwable的对?/span>
pageContextQ?div style="display: inline-block; ">pageContext对象提供了对JSP面内所有的对象及名字空间的讉KQ也是说他可以讉K到本|在的SESSIONQ也可以取本面所在的application的某一属性|他相当于面中所有功能的集大成者,它的本类名也叫pageContext
configQ?div style="display: inline-block; ">config对象是在一个Servlet初始化时QJSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数Q通过属性名和属性值构成)以及服务器的有关信息Q通过传递一个ServletContext对象Q?/span>
17.session和cookie的区别?
18.JDBC的操作步骤?
]]>
4.一lradioQ用alert弹出当前所选的是第几个radioQ用原生javascriptQ?br />5.function showme(){
点击按钮调用showme(),面昄l果为:
W一个弹出框Qxyz
W二个弹出框Q?23
6.U程的四U状态?
7.ext有哪些组Ӟext如何与后C互?
8.HashMap攑օ、查找、删除,所有value攑օ一个数l,得到map中所有内容;Listd、查找、删除;
9.List<Student> student(name,age) 比较oldList<Student>和newList<student>,按名字比较,获得新增的、修改的、删除学生列表;
10.使用q哪些xml技术?怎么实现的?
11.java异常Qthrows、throw、try、catch、finally,举例Q如何处理异?br />12.字符串反转:
]]>
6.sql常用的优化方法有哪些Q?br />7.sleep()与wait()的区别?
8.
9.HashTable和HashMap的区?br />10.怎样理解mvc模式Q?br />11.抽象cR接口的区别Q?br />12.智力题:
?-7P7块地QS、U、V、W、X 5个遗产承者,
S若?P不能l承3P
3号和4号不能同时承;
S若承一块或多块圎ͼ则U不能l承
1块地不能?人合分;
问:若Sl承2号地Q剩?个h中,不能同时?块地Q?br />A:1? B:1? c:3? dQ?? eQ??
13.
]]>
支持Q不q属于热备䆾cdQ不能做负蝲均衡。不q符合你的条?br />首先pȝ做集,数据库文件放到磁盘阵列里Q双机或多机共同讉K盘阵列Q就可以了,可以集群后做负蝲均衡Q?br />3.HashTable与HashMap的区别:
1QHashMap非线E安全,HashTableU程安全Q?br />2QHashMap可放一条key为空的记录,L记录的value可ؓI,hashTable不可以;
3QhashMapL了containsҎ(gu)Q增加了containsKey和containsValueҎ(gu)Q?br />4.如何理解mvc模式Q?br />mvc是sun提出的model2开发模式,控制、视图、模型进行了分离Q提高了可维护性、扩展性、可UL性、组件的可复用性;
5.SingleTonQ?br />6.对象序列化的含义Q?br />java序列化技术可以你将一个对象的状态写入一个byte里Qƈ且可以从其它地方把该byte里的数据读出来Q重新构造一个相同的对象?br />q种机制允许你将对象通过|络传播Qƈ且随时可以把对象持久化到数据库、文件等pȝ里,java的序列化技术是RMI、EJB{技术的基础Q?br />实现Ҏ(gu)Qimplements Serializable标记为可序列化,然后用ObjectOutputStream和ObjectInputStreamdQ?br />7.数据库中的锁包含哪些Q?br />排它锁和׃n?br />8.jsp和servlet的区别:
1Q简单来_jsp是含有java代码的html,servlet是含有html的java代码Q?br />2Qjsp最l被解释成servletQ编译再执行Qjsp不过是servlet的另一U编写Ş式;
3Qjsp擅长表示Qservlet擅长数据处理Q在mvc中jsp处于视图层,servlet处于控制层;
9.oracle在数据库中的交集怎么表示Q?br />1Q用intersect操作W?2)用in 语句
9.JNDI、JMS、JTA、RMIQ?br />
JNDIQjava naming and directory interface java命名目录接口
JMSQjava messing service java消息服务
JTAQjava transaction api java事务api
RMIQ?div style="display: inline-block; ">Remote Method Invocation q程Ҏ(gu)调用
10.事务Q?br />
1QACID属性:
AQatomic 原子?br />CQconsistent 一致?br />IQisolation 隔离?br />D:duration 持久?br />2Q概念:事务是一pd操作Q它们完成一Q务。只要这些操作里有一Ҏ(gu)成功Q事务就操作p|Q发生回滚事件。即撤销前面的操作,q样可以保证数据的一致性。而且可以把操作放在缓存里Q等所有操作都成功提交数据库Q这样保证费时的操作都是有效操作?br />3Q隔ȝ?4Q传播行?br />参考文档:http://wenku.baidu.com/view/56a532eb856a561252d36f81.html
]]>
3.public interface TreeNode{
String getName();
List getChildren();
}
写一个print()Ҏ(gu),打印各节点名称.
4.String与StringBuffer的区别?
String
5.ajax名词解释Q它的核心h(hun)值及原理Q?br />6.事务的概念及名词解释Q?br />7.数据库表之间有几U关p,qD例;
8.Filter的原?常见用例Q?br />9.视图与表的区别?触发器类型有哪些cdQ?br />10.及各U约束;
11.hibernate导入大量数据ӞZ避免内存中生大量对象,在编码时注意什么,如何去除Q?img src ="http://www.tkk7.com/GavinMiao/aggbug/373506.html" width = "1" height = "1" />
]]>
]]>
2.mkdir dir
3.打tar包:tar -cvf XXX.tar XXX
4.解压tar包:tar -xvf XXX.tar
二、java
1.HashMap和HashTable的区别:
HashMap不是U程安全的,HashTable是线E安全的
HashTable不允许null?key和value都不可以),HashMap允许null?key和value都可??br />HashTable使用EnumerationQHashMap使用Iterator?br />HashMap把Hashtable的containsҎ(gu)L了,Ҏ(gu)containsvalue和containsKey?br />Hashtable是基于陈旧的Dictionaryc,完成了Map接口QHashMap是Java 1.2引进的Map接口的一个实玎ͼHashMapl承于AbstractMap,AbstractMap完成了Map接口Q?br />HashTable中h(hun)ash数组默认大小?1Q增加的方式?old*2+1。HashMap中h(hun)ash数组的默认大是16Q而且一定是2的指数?br />哈希值的使用不同QHashTable直接使用对象的hashCode?br />2.什么是java的序列化Q如何实现java的序列化Q?br />
序列化的实现Q将需要被序列化的cd?/span>Serializable接口Q然后用一个输出流(如:FileOutputStream)来构造一?/span>ObjectOutputStream(对象?/span>)对象Q接着Q?/span>ObjectOutputStream对象?/span>writeObject(Object obj)Ҏ(gu)可以将参数?/span>obj的对象写?/span>(即保存其状?/span>)Q要恢复的话则用输入?br />
3.什么是java的单例模式?写一个单例模式; 代码清单1Q饿汉式单例c?br />
public class EagerSingleton
{
private static final EagerSingleton m_instance = new EagerSingleton();
/**
* U有的默认构造方?nbsp;
*/
private EagerSingleton() { }
/**
* 静态方法获得单?nbsp;
*/
public static EagerSingleton getInstance()
{
return m_instance;
}
}
代码清单2Q懒汉式单例c?br />
package com.javapatterns.singleton.demos;
public class LazySingleton
{
private static LazySingleton m_instance = null;
/**
* U有的默认构造方法,保证外界无法直接实例?br /> */
private LazySingleton() { }
/**
* 静态方法,q还此类的惟一实例
*/
public synchronized static LazySingleton getInstance()
{
if (m_instance == null)
{
m_instance = new LazySingleton();
}
return m_instance;
}
}
4.静态块与构造器在承中的执行顺序:
1.存储q程与函数的区别Q?br />1Q前者,E序头部声明用的是procedureQ后者,E序头部声明用的是functionQ?br />2Q前者,不需要描q返回类型,后者需要;
3Q前者可以作Z个独立的pl/sql语句来执行;后者不能独立运行,必须作ؓ表达式的一部分条用Q?br />4Qsql语句中不可调用procedureQ但可以调用functionQ?br />2.查询student表中name重复的记录:
3.table表中有两列A,B,如果A>B选择AQ如果A<B,选择BQ?br />
Q{载)http://blog.csdn.net/David8631/article/details/2676615 作者:David8631
Hibernate工作原理及ؓ什么要用?
原理Q?/span>
1. dq解析配|文?/span>
2. dq解析映信息,创徏SessionFactory
3. 打开Sesssion
4. 创徏事务Transation
5. 持久化操?/span>
6. 提交事务
7. 关闭Session
8. 关闭SesstionFactory
Z么要用:
1. ?/span>JDBC讉K数据库的代码做了装Q大大简化了数据讉K层繁琐的重复性代码?/span>
2. Hibernate是一个基?/span>JDBC的主持久化框架Q是一个优U?/span>ORM实现。他很大E度的简?/span>DAO层的~码工作
3. hibernate使用Java反射机制Q而不是字节码增强E序来实现透明性?/span>
4. hibernate的性能非常好,因ؓ它是个轻量框架。映的灉|性很。它支持各种关系数据库,?/span>一对一到多对多的各U复杂关pR?/span>
2Q?span style="font: normal normal normal 7pt/normal 'Times New Roman'; ">
Hibernate是如何gq加?/span>?1. Hibernate2延迟加蝲实现Q?/span>a)实体对象 b)集合Q?/span>CollectionQ?/span>
2. Hibernate3 提供了属性的延迟加蝲功能
?/span>Hibernate在查询数据的时候,数据q没有存在与内存中,当程序真正对数据的操作时Q对象才存在与内存中Q就实现了gq加载,他节省了服务器的内存开销Q从而提高了服务器的性能?/span>
3Q?span style="font: normal normal normal 7pt/normal 'Times New Roman'; ">
Hibernate中怎样实现cM间的关系?(如:一对多、多对多的关p?/span>)cMcM间的关系主要体现在表与表之间的关p进行操作,它们都市对对象进行操作,我们E序中把所有的表与c都映射在一P它们通过配置文g中的many-to-one?/span>one-to-many?/span>many-to-many?/span>
4Q?span style="font: normal normal normal 7pt/normal 'Times New Roman'; ">
说下Hibernate的缓存机?/span>1. 内部~存存在Hibernate中又叫一U缓存,属于应用事物U缓?/span>
2. 二~存Q?/span>
a) 应用及缓?/span>
b) 分布式缓?/span>
条gQ数据不会被W三方修攏V数据大在可接受范围、数据更新频率低、同一数据被系l频J用、非 关键数据
c) W三方缓存的实现
5Q?span style="font: normal normal normal 7pt/normal 'Times New Roman'; ">
Hibernate的查询方?/span>Sql?/span>Criteria,object comptosition
HqlQ?/span>
1?span style="font: normal normal normal 7pt/normal 'Times New Roman'; ">
属性查?/span>2?span style="font: normal normal normal 7pt/normal 'Times New Roman'; ">
参数查询、命名参数查?/span>3?span style="font: normal normal normal 7pt/normal 'Times New Roman'; ">
兌查询4?span style="font: normal normal normal 7pt/normal 'Times New Roman'; "> 分页查询
5?span style="font: normal normal normal 7pt/normal 'Times New Roman'; "> l计函数
6Q?span style="font: normal normal normal 7pt/normal 'Times New Roman'; "> 如何优化HibernateQ?/span>
1. 使用双向一对多兌Q不使用单向一对多
2. 灉|使用单向一对多兌
3. 不用一对一Q用多对一取代
4. 配置对象~存Q不使用集合~存
5. 一对多集合使用Bag,多对多集合?/span>Set
6. l承cM用显式多?/span>
7. 表字D要,表关联不要怕多Q有二~存撑腰
7Q?span style="font: normal normal normal 7pt/normal 'Times New Roman'; "> Struts工作机制Qؓ什么要使用StrutsQ?/span>
工作机制Q?/span>
Struts的工作流E?/span>:
?/span>web应用启动时就会加载初始化ActionServlet,ActionServlet?/span>
struts-config.xml文g中读取配|信?/span>,把它们存攑ֈ各种配置对象
?/span>ActionServlet接收C个客戯求时,执行如下流E?/span>.
-(1)索和用户h匚w?/span>ActionMapping实例,如果不存?/span>,p回请求\径无效信?/span>;
-(2)如果ActionForm实例不存?/span>,创Z?/span>ActionForm对象,把客h交的表单数据保存?/span>ActionForm 对象?/span>;
-(3)Ҏ(gu)配置信息军_是否需要表单验?/span>.如果需要验?/span>,p?/span>ActionForm?/span>validate()Ҏ(gu);
-(4)如果ActionForm?/span>validate()Ҏ(gu)q回null或返回一个不包含ActionMessage?/span>ActuibErrors对象, pC单验证成?/span>;
-(5)ActionServletҎ(gu)ActionMapping所包含的映信息决定将h转发l哪?/span>Action,如果相应?/span> Action实例不存?/span>,先创徏q个实例,然后调用Action?/span>execute()Ҏ(gu);
-(6)Action?/span>execute()Ҏ(gu)q回一?/span>ActionForward对象,ActionServlet在把客户h转发l?/span> ActionForward对象指向?/span>JSPlg;
-(7)ActionForward对象指向JSPlg生成动态网?/span>,q回l客?/span>;
Z么要用:
JSP?/span>Servlet?/span>JavaBean技术的出现l我们构建强大的企业应用pȝ提供了可能。但用这些技术构建的pȝ非常的繁乱,所以在此之上,我们需要一个规则、一个把q些技术组lv来的规则Q这是框架Q?/span>Struts便应q而生?/span>
ZStruts开发的应用?/span>3cȝ件构成:控制器组件、模型组件、视囄?/span>
8Q?span style="font: normal normal normal 7pt/normal 'Times New Roman'; "> Struts?/span>validate框架是如何验证的Q?/span>
?/span>struts配置文g中配|具体的错误提示Q再?/span>FormBean中的validate()Ҏ(gu)具体调用?/span>
9Q?span style="font: normal normal normal 7pt/normal 'Times New Roman'; "> 说下Struts的设计模?/span>
MVC模式: web应用E序启动时就会加载ƈ初始?/span>ActionServler。用h交表单时Q一个配|好?/span>ActionForm对象被创建,q被填入表单相应的数据,ActionServlerҎ(gu)Struts-config.xml文g配置好的讄军_是否需要表单验证,如果需要就调用ActionForm?/span>ValidateQ)验证后选择请求发送到哪个ActionQ如?/span>Action不存在,ActionServlet会先创徏q个对象Q然后调?/span>Action?/span>executeQ)Ҏ(gu)?/span>ExecuteQ)?/span>ActionForm对象中获取数据,完成业务逻辑Q返回一?/span>ActionForward对象Q?/span>ActionServlet再把客户h转发l?/span>ActionForward对象指定?/span>jsplgQ?/span>ActionForward对象指定?/span>jsp生成动态的|页Q返回给客户?/span>
单例模式
Factory(工厂模式)Q?/span>
定义一个基c?/span>===》实现基cL法(子类通过不同的方法)===》定义一个工厂类Q生成子cd例)
===》开发h员调用基cL?/span>
Proxy(代理模式)
10Q?span style="font: normal normal normal 7pt/normal 'Times New Roman'; "> spring工作机制及ؓ什么要?/span>?
1.spring mvch有的h都提交给DispatcherServlet,它会委托应用pȝ的其他模块负责负责对hq行真正的处理工作?/span>
2.DispatcherServlet查询一个或多个HandlerMapping,扑ֈ处理h?/span>Controller.
3.DispatcherServlet误求提交到目标Controller
4.Controllerq行业务逻辑处理后,会返回一?/span>ModelAndView
5.Dispathcher查询一个或多个ViewResolver视图解析?/span>,扑ֈModelAndView对象指定的视囑֯?/span>
6.视图对象负责渲染q回l客L?/span>
Z么用Q?/span>
{AOP 让开发h员可以创建非行ؓ性的x点,UCؓ横切x点,q将它们插入到应用程序代码中。?/span> AOP 后,公共服务 Q比如日志、持久性、事务等Q就可以分解成方面ƈ应用到域对象上,同时不会增加域对象的对象模型的复杂性?/span>
IOC 允许创徏一个可以构造对象的应用环境Q然后向q些对象传递它们的协作对象。正如单?/span> 倒置 所表明的,IOC 像?/span> q来?/span> JNDI。没有用一堆抽象工厂、服务定位器、单元素Q?/span>singletonQ和直接构造(straight constructionQ,每一个对象都是用 其协作对象构造的。因此是由容器管理协作对象(collaboratorQ?/span>
Spring即一?/span>AOP框架Q也是一IOC容器?/span> Spring 最好的地方是它有助于?zhn)替换对象。有?/span> SpringQ只要用 JavaBean属性和配置文g加入依赖性(协作对象Q。然后可以很Ҏ(gu)地在需要时替换hcM接口的协作对象?/span>}
{:SELECT * FROM A inner join B ON A.F1 = B.F1, 内连接,昄的查询结果,是查询条gA 的必ȝ于B的数据;
SELECT * FROM A left join B ON A.F1 = B.F1 ,左连接,昄的查询结果,是左边表的全部Q和双表的W合查询条g的数据?br />SELECT * FROM A right join B ON A.F1 = B.F1 ,双接,昄的查询结果,是右边表的全部,和左边表的符合查询条件的数据?br />join = inner joinQ?br />left join = left outter joinQ?right join = right outter joinQ?full join = full outter joinQ?egQ(来自Q?a >http://zhidao.baidu.com/question/113160374.html?fr=qrl&cid=74&index=4&fr2=queryQ?br />SELECT * FROM A full join B ON A.F1 = B.F1Q全q接Q?昄的查询结果,[TEST@ORA1] SQL>select * from a; ~号 姓名 ---- ---------- 1000 张三 2000 李四 3000 王五 [TEST@ORA1] SQL>select * from b; ~号 商品 ---- ---------- 1000 ?sh)视? 2000 录像? 4000 自行? [TEST@ORA1] SQL>set null I?-q里Z昄斚w我把NULL定义成了[I值] [TEST@ORA1] SQL>select a.*,b.* from a inner join b on a.~号=b.~号; ~号 姓名 ~号 商品 ---- ---------- ---- ---------- 1000 张三 1000 ?sh)视? 2000 李四 2000 录像? [TEST@ORA1] SQL>select a.*,b.* from a left join b on a.~号=b.~号; ~号 姓名 ~号 商品 ---- ---------- ---- ---------- 1000 张三 1000 ?sh)视? 2000 李四 2000 录像? 3000 王五 I?I? [TEST@ORA1] SQL>select a.*,b.* from a right join b on a.~号=b.~号; ~号 姓名 ~号 商品 ---- ---------- ---- ---------- 1000 张三 1000 ?sh)视? 2000 李四 2000 录像? I?I? 4000 自行? [TEST@ORA1] SQL>select a.*,b.* from a full join b on a.~号=b.~号; ~号 姓名 ~号 商品 ---- ---------- ---- ---------- 1000 张三 1000 ?sh)视? 2000 李四 2000 录像? 3000 王五 I?I? I?I? 4000 自行?/pre>
Action c? U程模式:
• Struts1要求Actioncȝ承一个抽象基cRStruts1的一个普遍问题是使用抽象cȝE而不是接口。(侵入式编E,不赞?/span>Q?nbsp;
• Struts 2 Actioncd以实C个Action接口Q也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类d?常用的接口。Action接口不是必须的,M有execute标识的POJO对象都可以用作Struts2的Action对象?/p>
• Struts1 Action是单例模式ƈ且必LU程安全的,因ؓ仅有Action的一个实例来处理所有的h。单例策略限制了Struts1 Action能作的事Qƈ且要在开发时特别心。Action资源必须是线E安全的或同步的?Q?span style="color: #ff0000; ">安全性不如STRUTS2
• Struts2 Action对象为每一个请求生一个实例,因此没有U程安全问题。(实际上,servlet容器l每个请求生许多可丢弃的对象,q且不会D性能和垃圑֛攉题)
Servlet 依赖:
• Struts1 Action 依赖于Servlet API ,因ؓ当一个Action被调用时HttpServletRequest ?HttpServletResponse 被传递给executeҎ(gu)?(依赖性太强,耦合度太高)
• Struts 2 Action不依赖于容器Q允许Actionq容器单独被测试。如果需要,Struts2 Action仍然可以讉K初始的request和response。但是,其他的元素减或者消除了直接讉KHttpServetRequest ?HttpServletResponse的必要性?br />可测?
• 试Struts1 Action的一个主要问题是executeҎ(gu)暴露了servlet APIQ这使得试要依赖于容器Q。一个第三方扩展Q-Struts TestCaseQ-提供了一套Struts1的模拟对象(来进行测试)?Q?span style="color: #ff0000; ">对于TDD方式~程带来不便
表达式语aQ?Q?span style="color: #ff0000; ">使得前端的VIEW变的更加的灵zd?/span>Q?br />• Struts1 整合了JSTLQ因此用JSTL EL。这UEL有基本对象图遍历Q但是对集合和烦引属性的支持很弱?nbsp;
• Struts2可以使用JSTLQ但是也支持一个更强大和灵zȝ表达式语aQ-"Object Graph Notation Language" (OGNL).
l定值到面QviewQ? Q?span style="color: #ff0000; ">方便的读取变量的?/span>Q?br />• Struts 1使用标准JSP机制把对象绑定到面中来讉K?nbsp;
• Struts 2 使用 "ValueStack"技术,使taglib能够讉KD不需要把你的面QviewQ和对象l定h。ValueStack{略允许通过一pd名称相同但类型不同的属性重用页面(viewQ?nbsp;
cd转换Q?Q?span style="color: #ff0000; ">再次体现OGNL的强?/span>Q?br />• Struts 1 ActionForm 属性通常都是Stringcd。Struts1使用Commons-Beanutilsq行cd转换。每个类一个{换器Q对每一个实例来说是不可配置的?nbsp;
• Struts2 使用OGNLq行cd转换。提供基本和常用对象的{换器?/p>
校验Q?Q?span style="color: #ff0000; ">又是节省~程工作量的好方?/span>Q?br />• Struts 1支持在ActionForm的validateҎ(gu)中手动校验,或者通过Commons Validator的扩展来校验。同一个类可以有不同的校验内容Q但不能校验子对象?nbsp;
• Struts2支持通过validateҎ(gu)和XWork校验框架来进行校验。XWork校验框架使用为属性类cd定义的校验和内容校验Q来支持chain校验子属?/p>
Action执行的控Ӟ Q?span style="color: #ff0000; ">Actions的彼此关联在STRUTS2下变的弱了很多了Q?br />• Struts1支持每一个模块有单独的Request ProcessorsQ生命周期)Q但是模块中的所有Action必须׃n相同的生命周期?nbsp;
• Struts2支持通过拦截器堆栈(Interceptor StacksQؓ每一个Action创徏不同的生命周期。堆栈能够根据需要和不同的Action一起用?br />
国内很多公司虽然用的是完整的框架Q但是在节约成本和提高效率的前提下,q是应该考虑下技术更新的Q恩Q恩~~~~
我觉得最吸引E序员升U的原因是用Struts 2Ӟ开发一个ActionQ你Ҏ(gu)׃会感觉得到这是一个ActionQ实质上是一个有executeҎ(gu)的POJOc,你在里面看不CQ何request, response之类的东西,q给~写单元试 什么的都带来了很大的方ѝ由于request和response是由于容器负责实例化的,所以在Struts 1 中要对Actioncȝ接进行测试是比较困难的?Struts 2中可以很方便C用像自动完成、TAB面{,需要AJAX实现的功能,有丰富的标签库。不需要像Struts 1那样q需要写服务器端验证的html:error标签。除了对传统JSP的支持之外,对于FreeMaker和Velocity{模板语a有很好的支持?Struts 2有着丰富的文档、教E和CZQshowcaseQWebWork的经典示例演C)Q,늛了近乎所 有的功能Q?nbsp;
Struts2的文档达55M之大可见其文档之?/p>