??xml version="1.0" encoding="utf-8" standalone="yes"?>
{?有DOM,SAX,STAX{?
DOM:处理大型文g时其性能下降的非常厉実뀂这个问题是由DOM的树(wi)l构所造成的,q种l构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随问SAX:不现于DOM,SAX是事仉动型的XML解析方式。它序dXML文gQ不需要一ơ全部装载整个文件。当遇到像文件开_(d)文档l束Q或者标{ּ头与标签l束Ӟ它会(x)触发一个事Ӟ用户通过在其回调事g中写入处理代码来处理XML文gQ适合对XML的顺序访?
STAX:Streaming API for XML (StAX)
二?struts ?个主要类
ActionServlet是系l维护的Q你不能操作Q它主要是根据传入的action路径在ActionMapping中查扄应的c,q调用它?
Action是控制器Q主要是从ActionForm中接攉面传q来的数据,然后q行逻辑处理?
ActionForm是用来接攉面上表单中的数据?
ActionMapping是用来配|每个Action所对应的\?
ActionForward是用来实现蟩转,在Action中最后一行语句通常是return mapping.forward()q里传入的值就在ActionForward中设|?
三、ArrayList和Vector的区?HashMap和Hashtable的区?
ArrayList与Vector主要从二斚w来说.
一.同步?Vector是线E安全的Q也是说是同步的,而ArrayList是线E序不安全的Q不是同步的
?数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一?
HashMap与HashTable主要从三斚w来说?
一.历史原因:Hashtable是基于陈旧的DictionarycȝQHashMap是Java 1.2引进的Map接口的一个实?
?同步?Hashtable是线E安全的Q也是说是同步的,而HashMap是线E序不安全的Q不是同步的
?|(x)只有HashMap可以让你空gZ个表的条目的key或value
四、JDK1.5新特?
1Q泛型(GenericQ?2, for-Each循环 3Q自?
装包拆包 4Q枚丄型(EnumsQ?5Q静(rn)态导入(Static importsQ?
五、JDK1.6新特?
1Qdesktopcdsystemtrayc?
2Q用JAXB2来实现对象与xml之间映射
3Q理解STAX
4Q用compiler API
5,轻量U的HTTPServer API
6,插入式注解处?
7Q用console开发控制台E序
8Q对脚本语言的支持:(x)ruby、groovy、javascript
9Qcommon Annotations
Struts、spring、hibernate 工作机制Qؓ(f)什么用!
六、hiberante工作机制
1. dq解析配|文?
2. dq解析映信息,创徏SessionFactory
3. 打开Sesssion
4. 创徏事务Transation
5. 持久化操?
6. 提交事务
7. 关闭Session
8. 关闭SesstionFactory
Z么?
1. 对JDBC讉K数据库的代码做了(jin)装Q大大简化了(jin)数据讉K层繁琐的重复性代码?
2. Hibernate是一个基于JDBC的主持久化框架Q是一个优U的ORM实现。他很大E度的简化DAO层的~码工作
3. hibernate使用Java反射机制Q而不是字节码增强E序来实现透明性?
4. hibernate的性能非常好,因ؓ(f)它是个轻量框架。映的灉|性很?gu)。它支持各种关系数据库,从一对一到多对多的各U复杂关pR?
5. 可扩展,卡发者可以根据需求定义查?
struts1.2工作原理以及(qing)Z么?
Struts的工作原?
在web应用启动时就?x)加载初始化ActionServlet,ActionServlet?
struts-config.xml文g中读取配|信?把它们存攑ֈ各种配置对象
当ActionServlet接收C个客戯求时,执行如下流E?
-(1)(g)索和用户h匚w的ActionMapping实例,如果不存?p回请求\径无效信?
-(2)如果ActionForm实例不存?创Z个ActionForm对象,把客h交的表单数据保存到ActionForm 对象?
-(3)Ҏ(gu)配置信息军_是否需要表单验?如果需要验?p用ActionForm的validate()Ҏ(gu);
-(4)如果ActionForm的validate()Ҏ(gu)q回null或返回一个不包含ActionMessage的ActuibErrors对象, pC单验证成?
-(5)ActionServletҎ(gu)ActionMapping所包含的映信息决定将h转发l哪个Action,如果相应?nbsp; Action实例不存?先创徏q个实例,然后调用Action的execute()Ҏ(gu);
-(6)Action的execute()Ҏ(gu)q回一个ActionForward对象,ActionServlet在把客户h转发l?nbsp; ActionForward对象指向的JSPlg;
-(7)ActionForward对象指向JSPlg生成动态网?q回l客?
Z么要用:(x)
1、整合jsp、servlet、javaBean 是Web开发更加正规化?
2、由一个ActionServlet 做全局控制器,对action做统一的控?
3、ActionForm使取得form的值更加方?
spring工作机制?qing)?f)什么要?
1.spring mvch有的h都提交给DispatcherServlet,它会(x)委托应用pȝ的其他模块负责负责对hq行真正的处理工作?
2.DispatcherServlet查询一个或多个HandlerMapping,扑ֈ处理h的Controller.
3.DispatcherServlet误求提交到目标Controller
4.Controllerq行业务逻辑处理后,?x)返回一个ModelAndView
5.Dispathcher查询一个或多个ViewResolver视图解析?扑ֈModelAndView对象指定的视囑֯?
6.视图对象负责渲染q回l客L(fng)?
Z么用:
AOP 让开发h员可以创建非行ؓ(f)性的x点,UCؓ(f)横切x点,q将它们插入到应用程序代码中。?AOP 后,公共服务 Q比如日志、持久性、事务等Q就可以分解成方面ƈ应用到域对象上,同时不会(x)增加域对象的对象模型的复杂性?
IOC 允许创徏一个可以构造对象的应用环境Q然后向q些对象传递它们的协作对象。正如单?倒置 所表明的,IOC 像?nbsp; q来?JNDI。没有用一堆抽象工厂、服务定位器、单元素QsingletonQ和直接构造(straight constructionQ,每一个对象都是用 其协作对象构造的。因此是由容器管理协作对象(collaboratorQ?
Spring即一个AOP框架Q也是一IOC容器?Spring 最好的地方是它有助于?zhn)替换对象。有?SpringQ只要用 JavaBean 属性和配置文g加入依赖性(协作对象Q。然后可以很Ҏ(gu)地在需要时替换hcM接口的协作对?
七、EJB与JAVA BEAN的区别?
{?Java Bean 是可复用的组Ӟ对Java Beanq没有严格的规范Q理ZԌM一个Javac都可以是一个Bean。但通常情况下,׃Java Bean是被容器所创徏Q如Tomcat)的,所以Java Bean应具有一个无参的构造器Q另外,通常Java Beanq要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微YCOM模型中的本地q程内COMlgQ它是不能被跨进E访问的。Enterprise Java Bean 相当于DCOMQ即分布式组件。它是基于Java的远E方法调用(RMIQ技术的Q所以EJB可以被远E访问(跨进E、跨计算机)(j)。但EJB必须被布|在诸如Webspere、WebLogicq样的容器中QEJB客户从不直接讉K真正的EJBlgQ而是通过其容器访问。EJB容器是EJBlg的代理,EJBlg由容器所创徏和管理。客户通过容器来访问真正的EJBlg?
关于java public private protected friendly(~省)作用?
public:cLw和M包的Mc都讉K
private 只有cLw可以访问,其他cL讉K可以通过该类的成员方法访问如getter/setter
protected:保护的,q个和缺省的比较Ҏ(gu)hQ记住最主要区别是:(x)protected可以在不同包的子c被讉KQ而friendly不可以?
protected可以在类本n、同包的子类Q不同包的子c,同包的非子类 被访?
默认不写的时候是public
八、关于PreparedStatement和Statement具体区别
1Q?
我们先从q两个单词进行初步的讲解QPreparedQ准备好? _ֈ的)(j)Q从q里可以知道P(yng)reparedStatement是预先编译的语句Q而Statement则不是预先编译的Q在DBMS中处理管理中Statement是要q行语法、语义的Q而PreparedStatement则不要?
2Q?
PrepareStatement中执行的SQL语句中是可以带参数的Q而Statement则不可以?
比如Q?
PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES
SET SALARY = ? WHERE ID = ?");
pstmt.setBigDecimal(1, 153833.00);
pstmt.setInt(2, 110592);
pstmt. executeUpdate();
3Q?
当处理批量SQL语句Ӟq个时候就可以体现PrepareStatement的优势,׃采用Cache机制Q则预先~译的语句,׃(x)攑֜Cache中,下次执行相同SQL语句Ӟ则可以直接从Cache中取出来?
?ji)、JSP的内|对象与作用
JSP共有以下9U基本内|组Ӟ可与ASP?U内部组件相对应Q:(x)
request 用户端请求,此请求会(x)包含来自GET/POSTh的参?
response |页传回用户端的回应
pageContext |页的属性是在这里管?
session 与请求有关的?x)话?
application servlet 正在执行的内?
out 用来传送回应的输出
config servlet的构枉?
page JSP|页本n
exception 针对错误|页Q未捕捉的例?
十、jsp有哪些动作作用分别是什?
JSP共有以下6U基本动?nbsp; jsp:includeQ在面被请求的时候引入一个文件?nbsp;
jsp:useBeanQ寻找或者实例化一个JavaBean?nbsp;
jsp:setPropertyQ设|JavaBean的属性?nbsp;
jsp:getPropertyQ输出某个JavaBean的属性?nbsp;
jsp:forwardQ把h转到一个新的页面?nbsp;
jsp:pluginQ根据浏览器cd为Java插g生成OBJECT或EMBED标记
十一、JSP中动态INCLUDE与静(rn)态INCLUDE的区别?
{:(x)动态INCLUDE用jsp:include动作实现 它L?x)检查所含文件中的变化,适合用于包含动态页面,q且可以带参?nbsp;
?rn)态INCLUDE用include伪码实现,定不?x)检查所含文件的变化Q适用于包含静(rn)态页?
十二、jsp的两U蟩转方式分别是什么,有什么区别?
1、带request参数的蟩?
request.setAttribute("param", "value");
request.getRequestDispatcher("test.jsp").forward(request, response);
在目的页面可以获取参?
String Value = request.getAttribute("param")==null?:(String)request.getAttribute("param");
2、不带request参数的蟩?
response.sendredirect("test.jsp");
十三、forward和redirect的区?
forward是服务器内部重定向,E序收到h后重新定向到另一个程序,客户机ƈ不知道;redirect则是服务器收到请求后发送一个状态头l客P客户再h一ơ,q里多了(jin)两次|络通信的来往。当然forward也有~点Q就是forward的页面的路径如果是相对\径就?x)有些问题?jin)?nbsp; forward ?x)?request state , bean {等信息带往下一?jsp
redirect 是送到 client 端后再一?request , 所以资料不被保?
使用 forward 你就可以?getAttribute() 来取的前一?jsp 所攑օ?bean {等资料
1.从地址栏显C来?
forward是服务器h资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过?然后把这些内?
再发l浏览器.览器根本不知道服务器发送的内容从哪里来?所以它的地址栏还是原来的地址.
redirect是服务端Ҏ(gu)逻辑,发送一个状态码,告诉览器重新去h那个地址.所以地址栏显C的是新的URL.所
以redirect{于客户端向服务器端发出两次requestQ同时也接受两次response?
2.从数据共享来?
forward:转发面和{发到的页面可以共享request里面的数?
redirect:不能׃n数据.
redirect不仅可以重定向到当前应用E序的其他资?q可以重定向到同一个站点上的其他应用程序中的资?
甚至是用绝对URL重定向到其他站点的资?
forward,Ҏ(gu)只能在同一个Web应用E序内的资源之间转发h.
forward 是服务器内部的一U操?
redirect 是服务器通知客户?让客L(fng)重新发vh.
所?你可以说 redirect 是一U间接的h, 但是你不能说"一个请求是属于forwardq是redirect "
3.从运用地Ҏ(gu)?
forward:一般用于用L(fng)陆的时?Ҏ(gu)角色转发到相应的模块.
redirect:一般用于用h销登陆时返回主面和蟩转到其它的网站等.
4.从效率来?
forward:?
redirect:?
十五、描qJSP和Servlet的区别、共同点、各自应用的范围
JSP在本质上是SERVLET,但是两者的创徏方式不一?Servlet完全是JAVAE序代码构成擅长于流E控制和事务处理而通过Servlet
来生成动态网?JSP由HTML代码和JSP标签构成Q可以方便地~写动态网?
因此在实际应用中采用Servlet来控制业务流E?而采用JSP来生成动态网?在struts框架?JSP位于MVC设计模式的视囑ֱ,而Servlet位于控制?
{案2Q?
JSP是Servlet技术的扩展Q本质上是Servlet的简易方式。JSP~译后是“cservlet”。Servlet和JSP最主要的不同点在于QServlet的应用逻辑是在Java文g中,q且完全从表C层中的HTML里分d来。而JSP的情冉|Java和HTML可以l合成一个扩展名?jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑?
十六、列出Jsp中包含外部文件的Q种方式Q两者有何区别?
1Q?lt;jsp:include page="b.jsp" />)
2: <%@ include file="b.jsp">
区别:
1Q?lt;jsp:include page="b.jsp" />Q先执行Q后包含Q?
此标{表C法Q能动态区别加q来的是动态页面还是静(rn)态页面对于静(rn)态页面则直接资源包?仅取其文??
<%@ include file="b.jsp">此指令表C:(x)?rn)态地包含面Q不其内容如何Q?
不过是静(rn)态页面还是动态页面都首先页面的内容先加q来?
区别2Q?lt;jsp:include page="b.jsp" />可以分开写成Q?lt;jsp:include page="b.jsp" >
<jsp:param name="参数? value="参数?/></jsp:include>q样可以传递参数?
十七、struts1和struts2区别:
Ҏ(gu)?
Struts 1
Struts 2
Actionc?
Struts 1要求Actionc要扩展自一个抽象基cRStruts 1的一个共有的问题是面向抽象类~程而不是面向接口编E?
Struts 2的ActioncdC(jin)一个Action接口Q连同其他接口一起实现可选择和自定义的服务。Struts 2提供一个名叫ActionSupport的基cdC般用的接口。虽?dng)Action接口不是必须的。Q何用executeҎ(gu)的POJO对象可以被当作Struts 2的Action对象使用?
E模?
Struts 1 ActioncL单例c,因只有一个示例控制所有的h。单例类{略造成?jin)一定的限制且给开发带来了(jin)额外的烦(ch)恹{Action资源必须是程安全或者同步的?
Struts 2 Action对象每一个请求都实例化对象,所以没有程安全的问题。(实践中,servlet容器生许多丢的对象对于每一个请求,多于一个的对象q不影响垃圾攉Q?
Servlet 依赖
Struts 1的ActioncM赖于servlet API以HttpServletRequest和HttpServletResponse作参ClexecuteҎ(gu)当Action被调用时?
Struts 2的Action不和容器有关。Servlet上下文被表现单的MapsQ允许Action被独立的试。Struts 2的Action可以讉K最初的h和相应,如果需要的话。然而,其他的架构元素少或者排除直接访问HttpServletRequest或者HttpServletResponse的需要?
易测?
试Struts 1的主要障是executeҎ(gu)暴露?jin)Servlet API。第三方的扩展,Struts试用例Q提供Struts 1的集合对象?
Struts 2的Action可以通过实例化Action试Q设|属性,然后调用Ҏ(gu)。依赖注入的支持也是试变得更简单?
接受输入
Struts 1使用ActionForm对象捕获输入。象Action一P所有的ActionForm必须扩展基类。因其他的JavaBean不能作ActionForm使用Q开发者经常创建多余的cL莯入。DynaBeans可以被用来作替代ActionForm的类创徏。但是开发者可以重新描q已l存在的JavaBean?
Struts 2 Action属性作输入属性,排除W二个输入对象的需要。输入属性可能有丰富的对象类型这些类型有他们自己的属性。Action的属性可以通过标签库访问。Struts 2也支持ActionForm形式。丰富的对象cdQ包含业务或者域对象Q可以被当作输入或者输出对象用。馍型驱动特性简化标{֯POJO输入对象的引用?
表达式语a
Struts 1整和JSTLQ所以它使用JSTL的表辑ּ语言。表辑ּ语言有基本的囑Ş对象UdQ但是相对很q集合和被索引的属性支持?
Struts 2使用JSTLQ但是框架也支持更大和更灉|的表辑ּQ叫?#8220;对象囑ŞW号语言”QOGNLQ?
值绑定要视图?
Struts 1使用标准JSP机制来绑定对象到面上下文?
Struts 2使用“ValueStack”技术了(jin)标签库可以不用链接你的视囑ֈ对象的表现类型访问倹{ValueStack{略允许重用视图?
cd转换
Struts 1的ActionForm属性经帔R是String的。Struts 1使用Commons-Beanutilscd转换。{换每一个类Q不是每一个实例配|?
Struts 2使用OGNLcd转换。框架包含{换器基本的和共同的对象类型和原始cd?
验证
Struts 1支持手动验证凭借ActionForm的validateҎ(gu)Q或者通过扩展的公用验证器。类可以有不同的验证上下文未相同的类Q但是不能不能包括验证子对象?
Struts 2支持手动验证凭借validateҎ(gu)和XWork验证框架。Xwork验证框架支持一q串的验证子属性用的验证?jin)属性类的类型和严正上下文而定义?
Action执行的控?
Struts 1支持独立的请求处理器对于每一个模型,但是所有在模型中的Action必须׃n同一个生命周期?
Struts 2支持在每一个Action基础上凭借拦截栈创徏不同的生命周期。自定义栈可以被创徏且用不同的所需 的Action?
Jsp和Servlet中的h转发分别如何实现?
servlet的{发方式有两种Qresponse.sendRedirect(response.encodeURL(相对路径或绝对\?);
request.getRequestDispatcher(相对路径).forward();
jsp是servlet的扩展,除可用上面两U之外,q可以用标签Q?lt;jsp:forward page="相对路径" />
、如何现实servlet的单U程模式Q?
<%@ page isThreadSafe="false"%>
应用服务器与WEB SERVER的区别?
1。应用服务器处理业务逻辑Qweb服务器则主要是让客户可以通过览器进行访问?
2。应用服务器处理业务逻辑Qweb服务器是用于处理HTML文g的。web服务器通常比应用服务器单,如apache是web服务器,Jboss是EJB应用服务器?
应用服务器:(x)Weblogic、Tomcat、Jboss
WEB SERVERQIIS?Apache
应用服务器处理业务逻辑Qweb服务器则主要是让客户可以通过览器进行访问?
应用服务器处理业务逻辑,web服务器是用于处理HTML文g的。web服务器通常比应用服务器单,如apache是web服务器,Jboss是EJB应用服务?
在B/S体系l构中,W(xu)eb server是Application Server的前提和基础。Web Server接受来自BrowseQhttpQ的request。ؓ(f)?jin)扩展Web的应用(如与后台DataBase打交道)(j)早期如一些DLL可以来完成,后来各家公司有了(jin)Application server丰富?jin)这斚w的性能。用户跟后台的数据库有?jin)更好的接口。如QWebSphere Weblogic{等
web服务器只提供web服务功能Q比喻说解释jsp,servlet{,而应用服务器提供整个企业U解x案,比如_(d)(x)应用服务器提供EJB包容?可以提供用户控制Q事务等居多功能Qweb服务器是应用服务器的一个子?
Web服务器与QJavaQ应用服务器是^行的概念Q二者不存在怺包容关系。好像J2EE体系l构是q么ȝQ客L(fng)《——》Web服务器《——》应用服务器《——》数据库服务?nbsp;
如果你访问的|页只有象HTMLq种面的,用WEB服务器就够了(jin)Q但是如果是JSPQ也是含JAVA代码的HTMLQ则需要JAVA应用服务器了(jin)Q因为只有JAVA应用服务器才能解析JSP里的JAVA代码Qƈ解析结果以HTML的格式返回给你?nbsp;