社区
Web 开发
帖子详情
求Java web开发面试题
不学-何为
2010-05-03 02:28:23
学习
...全文
1083
6
打赏
收藏
求Java web开发面试题
学习
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
geyukcl
2011-10-29
打赏
举报
回复
学习了,正准备去面试呢,还没去面试过,这个很有帮助!
不学-何为
2010-05-03
打赏
举报
回复
[Quote=引用 3 楼 zs86374877 的回复:]
引用 2 楼 xyls_2009 的回复:
十分感谢!!!
分 给我 谢谢!
[/Quote]
一定会的 呵呵
ly09108086
2010-05-03
打赏
举报
回复
选择题(没有注明多选,则为单选),每题2分
1.下面哪个不是Form的元素? ( )
A. Input B: textarea C: select D: table
2. HTML页面中,下面哪个表示空格( )
A.& B. C.© D.<
3.<td align=”XXX”>中的align属性是什么含义? ( )
A. 加粗 B 斜体 C 对齐方式 D 边框样式
4.单选按钮是下列哪一个? ( )
A.<input name=”sex” type=”text” value=”0” />
B. <input name=”sex” type=”checkbox” value=”0” />
C. <input name=”sex” type=”option” value=”0” />
D.<input name=”sex” type=”radio” value=”0” />
5.下边哪个不是JSP内置对象? ( )
A. Session B request C cook D out
6.下边哪个是JSP指令标记( )
A.<%……%>
B. <%!……%>
C. <%@……%>
D.<%=……%>
7.当在JSP文件中要使用到ArrayList对象时,应在JSP文件中加入以下哪个语句?( )
A.<jsp:include file=”java.util.*” />
B. <jsp:include page=”java.util.*” />
C. <%@ page import=”java.util.*” />
D.<%@ page include=”java.util.*” />
8.关于JavaBean的说法,哪个是正确的?( )
A. JavaBean的具体类可以不是public的
B. JavaBean可以只提供一个带参数的构造器
C. JavaBean可以象Html标记一样不关闭
D. JavaBean可以保存状态
9. JavaBean的生命周期中,哪个是用来跟踪用户会话的( )
A. session
B. request
C. page
D. application
10.要在session对象中保存属性,可以使用以下哪个语句( )
A. session.getAttribute(“key”,”value”)
B. session.setAttribute(“key”,”value”)
C. session.setAttribute(“key”)
D. session.getAttribute(“key”)
二.简述题(总分 40):
1.简述Servlet的生命周期(5分)
Web容器加载servlet,生命收起开始,通过调用servlet
的的init()方法进行servlet的初始化,通过调用service()方法实现,根据请求的不同调用不同的do***()方法,结束服务,web容器调用servlet的destroy()方法
一个servlet的生命周期由部署servlet的容器控制,当一个请求映射到一个servlet是,
容器执行下步骤:
1.加载servlet类
2.创建一个servlet类的实例
3.调用init初始化servlet实例,
2.调用service方法,传递一个请求和响应对象
容器要移除一个servlet,调用servlet的destroy方法结束该servlet
2.简述<jsp:forward>动作和response.sendRedirect()的异同(5分)
重定向分为两类。一类是客户端重定向,一类是服务器端重定向。客户端重定向可以通过设置特定的HTTP头,或者写javaScirpt脚本实现。
服务器端的重定向方式
服务器的重定向有两种方式,一种是HttpServletResponse的sendRedirect()方法,一个是使用RequestDispatcher的forward()方法。
HttpServletResponse.sendRedirect()方法
HttpServletResponse接口定义了可用于转向的sendRedirect方法,这个方法将响应定向到指定的,新的URL,location可以是一个绝对的URL,如response.sendRedirect(“http://java.sun.com”)也可以使用相对的URL location可以是一个绝对的URL,如response.sendRedirect(”http://java.sun.com”)也可以使用相对的URL。如果location以“/”开头,则容器认为相对于当前Web应用的根,否则,容器将解析为相对于当前请求的URL。这种重定向的方法,将导致客户端浏览器的请求URL跳转。从浏览器中的地址栏中可以看到新的URL地址,作用类似于上面设置HTTP响应头信息的实现。
RequestDispatcher.forward()方法
RequestDispatcher是一个Web资源的包装器,可以用来把当前request传递到该资源,或者把新的资源包括到当前响应中。RequestDispatcher接口中定义了两个方法,参见如下代码:
public interface RequestDispatcher {
void forward(ServletRequest request, ServletResponse response);
void include(ServletRequest request, ServletResponse response);
}
forward()方法将当前的request和response重定向到该RequestDispacher指定的资源。这在实际项目中大量使用,因为完成一个业务操作往往需要跨越多个步骤,每一步骤完成相应的处理后,转向到下一个步骤。比如,通常业务处理在Servlet中处理,处理的结果转向到一个JSP页面进行显示。这样看起来类似于Servlet链的功能,但是还有一些区别。一个RequestDispatcher对象可以把请求发送到任意一个服务器资源,而不仅仅是另外一个Servlet。 include()方法将把Request Dispatcher资源的输出包含到当前输出中。
注意,只有在尚未向客户端输出响应时才可以调用forward()方法,如果页面缓存不为空,在重定向前将自动清除缓存。否则将抛出一个IllegalStateException异常。
如何得到RequestDispatcher
有三种方法可以得到Request Dispatcher对象。
1.javax.servlet. ServletRequest的getRequestDispatcher(String path)方法,其中path可以是相对路径,但不能越出当前Servlet上下文。如果path以“/”开头,则解析为相对于当前上下文的根。
2.javax.servlet. ServletContext的getRequestDispatcher(String path)方法,其中path必须以“/”开头,路径相对于当前的Servlet上下文。可以调用ServletContext的getContext(String uripath)得到另一个Servlet上下文,并可以转向到外部上下文的一个服务器资源链接。
3.使用javax.servlet. ServletContext的getNamedDispatcher(String name)得到名为name的一个Web资源,包括Servlet和JSP页面。这个资源的名字在Web应用部署描述文件web.xml中指定。
这三种方法的使用有细微的差别。比如,下面是一个应用的配置文件web.xml:
<?xml version=”1.0″ ?>
<!DOCTYPE web-app PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN”
“http://java.sun.com/j2ee/dtds/web-app_2_2.dtd”>
<web-app>
<servlet>
<servlet-name>FirstServlet</servlet-name>
<servlet-class>org. javaresearch.redirecttest.ServletOne</servlet-class>
</servlet>
<servlet>
<servlet-name>SecondServlet</servlet-name>
<servlet-class>org.javaresearch. redirecttest.ServletTwo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FirstServlet</servlet-name>
<url-pattern>/servlet/firstservlet/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>SecondServlet</servlet-name>
<url-pattern>/servlet/secondservlet/</url-pattern>
</servlet-mapping>
</web-app>
其中定义了两个Servlet,名字分别为FirstServlet和SecondServlet,对应的类分别为org.javaresearch. redirecttest.ServletOne和org. javaresearch.redirecttest.ServletTwo。可以在浏览器中通过类似于下面的链接访问:
http://localhost:8080/servlet/firstservlet/
使用1中方法,例如在firstservlet可以写入下面的代码:
RequestDispatcher rd = request.getRequestDispatcher(”secondservlet”);
rd.forward(request, response);
此时控制权将转向到第二个Servlet了。
使用2中的方法,可以从Servlet Context中得到RequestDispatcher代码如下:
RequestDispatcher rd = getServletContext().getRequest
Dispatcher(”/servlet/secondservlet”);
rd.forward(request, response);
使用3中的方法,从上面的web. xml配置文件可以看到定义了两个Servlet,名字分别为FirstServlet和SecondServlet,所以可以得到命名的Dispatcher:
RequestDispatcher rd = getServletContext().getNamedDispatcher(”SecondServlet”);
rd.forward(request, response);
这样也可以重定向到SecondServlet了。
JSP页面中的重定向
JSP在解析后编译为一个Servlet运行,所以在JSP中也可以使用上面的重定向代码,并且,JSP还提供了更便利的操作,如下:
<jsp:forward page= “nextpage.jsp”/>
JSP页面执行到这儿,将终止当前的处理,将控制权交由nextpage.jsp。
如何选择
RequestDispatcher.forward()方法和HttpServletResponse.sendRedirect()方法的区别是:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用Request Dispatcher.forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用HttpServletResponse.sendRequest()方法。
zs86374877
2010-05-03
打赏
举报
回复
[Quote=引用 2 楼 xyls_2009 的回复:]
十分感谢!!!
[/Quote]
分 给我 谢谢!
不学-何为
2010-05-03
打赏
举报
回复
[Quote=引用 1 楼 zs86374877 的回复:]
1、jsp和servlet的区别、共同点、各自应用的范围??
JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。JSP编译后是“类servlet”。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servl……
[/Quote]
十分感谢!!!
zs86374877
2010-05-03
打赏
举报
回复
1、jsp和servlet的区别、共同点、各自应用的范围??
JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。JSP编译后是“类servlet”。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层.
2、cookie和session的作用、区别、应用范围,session的工作原理???
Cookie:主要用在保存客户端,其值在客户端与服务端之间传送,不安全,存储的数据量有限。
Session:保存在服务端,每一个session在服务端有一个sessionID作一个标识。存储的数据量大,安全性高。占用服务端的内存资源。
3、jstl是什么?优点有哪些??
JSTL(JSP Standard Tag Library ,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,由四个定制标记库(core、format、xml 和 sql)和一对通用标记库验证器(ScriptFreeTLV 和 PermittedTaglibsTLV)组成。优点有:
1、 在应用程序服务器之间提供了一致的接口,最大程序地提高了WEB应用在各应用服务器之间的移植。
2、 简化了JSP和WEB应用程序的开发。
3、 以一种统一的方式减少了JSP中的scriptlet代码数量,可以达到没有任何scriptlet代码的程序。在我们公司的项目中是不允许有任何的scriptlet代码出现在JSP中。
4、 允许JSP设计工具与WEB应用程序开发的进一步集成。相信不久就会有支持JSTL的IDE开发工具出现。
4、j2ee的优越性主要表现在哪些方面?MVC模式
a、 J2EE基于JAVA 技术,与平台无关
b、 J2EE拥有开放标准,许多大型公司实现了对该规范支持的应用服务器。如BEA ,IBM,ORACLE等。
c、 J2EE提供相当专业的通用软件服务。
d、 J2EE提供了一个优秀的企业级应用程序框架,对快速高质量的开发系统打下了基础。
Model模型:应用程序的主体部分,用于表示业务逻辑。
View视图:应用程序中用户界面相关的部分,是用户看到并与之交互的界面。
Controller控制器:用于根据用户的输入,控制用户界面数据显示,更新Model对象状态。
MVC模式的出现不仅实现了功能模块和显示模块的分离,同时还提够了应用系统的可维护、可扩展性、可移植性、和组建的可复用性。
5、Struts的优点
a、实现MVC模式,结构清晰,使开发者只需关注业务逻辑的实现。
b、有丰富的tag可以用,能大大提够开发效率,缩短开发时间。
c、页面导航。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有很大的好处
d、提供Exception处理机制
e、支持L18N
6、为什么要用struts?
JSP、Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts便应运而生。
基于Struts开发的应用由3类组件构成:控制器组件、模型组件、视图组件
7、Sturt1的核心类、核心标签库?
ActionServlet 控制器、ActionMapping状态改变事件 、 Action控制器的一部分、ActionForward用户指向、ActionForm状态改变的数据
Html标签、bean标签、logic标签、tiles标签、nested标签
8、struts1与sturts2的区别(struts2是struts1和webwork的结合体)
1、struts1要求Action类继承一个抽象基类,而不是接口。
struts2的action类可以实现一个action接口,也可以实现其他接口。
2、sturts1 action是单例模式,线程是安全的。
struts2 action线程是不安全的,action为每一个请求都生成了一个实例。
3、sturts1过去依赖serlet API,不容易测试。
struts2不依赖于容器,允许Action脱离容器单独被测试。
4、Struts1 使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。
Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。
5、Struts1 整合了JSTL,因此使用JSTL EL。这种EL有基本对象图遍历,但是对集合和索引属性的支持很弱。
Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言--"Object Graph Notation Language" (OGNL).
6、Struts 1使用标准JSP机制把对象绑定到页面中来访问。
Struts 2 使用 "ValueStack"技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。
7、Struts 1 ActionForm 属性通常都是String类型。Struts1使用Commons-Beanutils进行类型转换。
Struts2 使用OGNL进行类型转换。提供基本和常用对象的转换器。
8、Struts 1支持在ActionForm的validate方法中手动校验,或者通过Commons Validator的扩展来校验。
Struts2支持通过validate方法和XWork校验框架来进行校验。
9、Struts1支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期。
Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。堆栈能够根据需要和不同的Action一起使用。
9、过滤器和拦截器的区别
1、拦截器是基于java的反射机制的,而过滤器是基于函数回调
2、过滤器依赖于servlet容器,而拦截器不依赖于servlet容器
3、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用
4、拦截器可以访问action上下文、值栈里的对象,而过滤器不能
5、在action的生命周期中,拦截器可以多次被调用,而过滤器只在容器初始化时调用一次
拦截器 :是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作。
过滤器:是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者 struts的action前统一设置字符集,或者去除掉一些非法字符.
10、Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得java程序员可以随心所欲的使用对象编程思维来操纵数据库。
工作原理:
1.读取并解析配置文件2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化操作6.提交事务7.关闭Session 8.关闭SesstionFactory
优点有:
1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作
3、 Hibernate使用Java反射机制而不是字节码增强程序来实现透明性。
4、 Hibernate的性能好,映射的灵活性比较出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。
11、hibernate的核心类是什么??重要方法是什么??
Configuration、SessionFactory
Session如下方法 Save、 load、 Update、Delete
Query q=CreateQuery(“from Customer where customerName=:customerName”)
beginTransaction、close、Transaction、Commit()
12、session.load()和session.get()的区别
Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象。其区别在于:
如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObjectNotFoundException。
13、hql和sql的区别【可以这样说,hibernate是面向对象语言与关系型数据库之间的桥梁,他使得程序员可以不用关心底层数据库连接的代码,而可以专心写业务逻辑。】
sql是面向数据库表查询
hql是面向对象查询的,其form子句返回的是对象的实例。
14、hibernate与jdbc之间的区别【可以这样说,hibernate是面向对象语言与关系型数据库之间的桥梁,他使得程序员可以不用关心底层数据库连接的代码,而可以专心写业务逻辑。】
Hibernate作为一个O/R Mapping,比JDBC具备的优势有:
1.编程思想上,更加符合人的逻辑思维习惯,面向对象比面向过程更加容易理解,测试和维护
2.开发维护速度上,Hibernate显著的快,代码量显著小
3.通过Annotation进行数据库的字段加密
4.对Sql不熟的菜鸟来说可以自动调优
5.结合Spring,通过声明式事务可以省略事务的控制,事务以横切面形式出现
Jdbc比Hibernate具备的优势有:
1.大数据量访问时,Jdbc的效率显著快
2.直接操作数据库比较灵活
15、Hibernate是如何延迟加载?
当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。
16、说下Hibernate的缓存机制
1. 内部缓存存在Hibernate中又叫一级缓存,属于应用事物级缓存
2. 二级缓存:
a) 应用及缓存
b) 分布式缓存
c) 第三方缓存的实现
17、spring工作机制及为什么要用?【spring是一个轻量的控制反转和面向切面的容器框架】
1.springmvc把所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责对请求进行真正的处理工作。
2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.
3.DispatcherServlet把请求提交到目标Controller
4.Controller进行业务逻辑处理后,会返回一个ModelAndView
5.Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象
6.视图对象负责渲染返回给客户端。
IoC就是由容器来控制业务对象之间的依赖关系。控制反转的本质,是控制权由应用代码转到了外部容器,控制器的转移既是所谓的反转。控制权的转移带来的好处就是降低了业务对象之间的依赖程度,即实现了解耦。
DI/IOC,对持久层和表示层的控制与分配,增加系统的灵活性和稳定性. AOP,面向切面,利用代理对程序的有效管理.
spring是一个轻量级的IOC和AOP框架,通过spring的IOC实现松耦合,而作为一个AOP框架他又能分离系统服务,实现内聚开发 Spring 最好的地方是它有助于您替换对象。有了 Spring,只要用 JavaBean 属性和配置文件加入依赖性(协作对象)。然后可以很容易地在需要时替换具有类似接口的协作对象。}
Spring对多种ORM框架提供了很好的支持
java
web
开发
面试题
锦囊
java
web
开发
面试题
,方便我们在面试之初进行系统的复习和对过往使用知识的总结和学习,做一个阶段性的总结,对后期要学知识的一个大概框架的知识.
2015
Java
开发
软件工程师
面试题
(必备最全)
绝对的史上目前为止最全的
Java
工作人员
面试题
集,
Java
面试题
,oracle,ms sql数据库
面试题
,linux
面试题
,
web
服务器
面试题
Java
高频
面试题
【课程介绍】很多人面试前都会罗各种
面试题
。这些面试资料数量众多,但内容杂,系统性不强。最重要的是很多知识点如果不结合讲解,有些重点内容理解的难度偏大。如果下一次遇到面试,又要重新搜集资料,很多知识要重新学习,非常麻烦。因此,我们在上千道
面试题
中,梳理了最常见
面试题
对应的经典知识。主要包含:
JAVA
基础部分、核心编程、
Web
编程、MyBatis、Spring、SpringMVC、JVM、性能优化、技术之外必问题。每一个知识点都是精选、经典的重现!学完本教程,让你面试路上从容自信!
最全的IT公司
面试题
集 CHM版的
搜集了超级多的
面试题
,做成了CHM版,希望对准备面试的朋友有所帮助,主要的分类如下:
Java
面试题
,J2EE
面试题
,.net
面试题
,PHP
面试题
,数据库
面试题
,英语面试,外企面试,软件测试
面试题
,Python
面试题
,Oracle
面试题
,MySql
面试题
,
Web
开发
面试题
,Unix
面试题
,程序员面试,网络技术
面试题
,网络安全
面试题
,Linux
面试题
,Hibernate
面试题
,Spring
面试题
,SQL Server
面试题
,Struts
面试题
,EJB
面试题
本文件已经收集了 http://www.mianwww.com 至 2009年10月27日的所有内容。 有人可能下载后打不开:提示The address is not valid 解决方法: 1. 右键点击下载后的文件,点Properties 属性 2. 点击Unblock 3. 双击重新打开下载的文件
最新
Java
面试题
,常见
面试题
及答案汇总
Java
最新
面试题
、
面试题
答案汇总
Web 开发
81,092
社区成员
341,717
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章