天天看点

JavaEE面试题库分类及答案之一

第一部分Jsp&servlet

1 三个Statment区别,用法

statement对象作为最基本的数据操作对象,可以应用于几乎所有的数据库,但是由于运行时使用的是字符串连接技术,所以存在安全隐患。

preparedstatement:叫做预编译的对象,在语句执行之前,向数据库发送类似于公式一样的模板,其中使用了替换变量,从而提高了数据存储的安全性,但这个数据操作对象不是效率最高的。可以应用于绝大多数数据库。

callablestatement:效率和安全性最高的数据操作对象,但是兼容性是最差的。因为这个对象是用来调用数据库当中的存储过程的,不是所有的数据库都支持存储过程。

2 什么是Cookie

答:cookie是用来将信息永久或临时保存数据到用户机。在使用的时候要设定有效期和有效路径。如果不设置有效期,这个cookie就是会话性的cookie,会话结束后cookie就被删除。如果不设置有效路径,那么cookie只在当前(创建cookie)路径有效。

3 servlet调用方式几种方法

答:通过JSP提交进行调用,可以通过浏览器地址栏访问调用,可以通过超链接调用。

4.Cookie 与session 的区别是:

首先要介绍cookie和session是什么。

cookie是保存在客户机上面的,而session在服务器内存当中。

session为短对话,Cookie可以设置任意时间的有效期。

5.Get请求和Post请求区别

答:a、Post是通过Http中的Post机制将表单中的数据提交到Action所制定的程序

Get方法是通过Url请求来提交表单数据的。

b.Get适用于传输数据量小于1K数据,执行效率高。Post传输数据量较大,但也有限量。

c.在传递过程当中get方式传递的信息,将显示在地址栏当中,而post是先将数据进行加密,然后发送,在地址栏当中没有显示。

6. servlet生命周期 (看ppt2)

答: (1)init 仅在servlet首次载入时执行一次。不是每次请求都要调用。

(2)service 在新线程中由服务器为每个请求而调用。发送到doGet,doPost等。不要覆盖这个方法!

(3)doGet, doPost, doXxx 处理GET, POST, 等请求。覆盖这些方法以提供期望的行为。

(4) destroy 在服务器删除servlet的实例时调用。不是每次请求后都调用。

7、Servlet和Jsp的区别?

答:Servlet是直接执行的文件。

Jsp是要被通过编译形成Servlet后才执行。

在MVC框架当中,jsp是用来显示和取得数据的,而servlet是作为控制器工作的。JSP在显示上有很大优势,但是在控制和业务处理上有缺陷。而servlet在程序控制上有很大优势,但是在显示和取得数据方面远远不如jsp。

8.JSP构架模型

Model1:纯jsp,维护难,代码可复用性差。将所有的代码都写在jsp当中,层次不清晰,而且几乎谈不到代码复用。

Model2:jsp+javabean 在jsp中使用usebean标签,代码在jsp中本质同Model1。是在M1之上发展出来的,与M1相比,代码在一定程度上可以实现复用,但是程序的流程还是由JSP完成,程序的层次不清晰。

Mvc:jsp+servlet+javabean(见PPT14)

典型的做法:使用JSP来简化HTML内容的开发与维护

– 对于简单的动态代码,使用由脚本元素调用servlet代码来完成。

– 对于稍微复杂一些的应用,则可使用脚本元素调用定制的类来完成。

– 对于比较复杂的应用,则使用bean和定制标签。

• 但,这些是不够的

– 对于复杂的处理过程,从JSP开始做起会难以处理。

– JSP除了能够带来将实际的代码隔离成单独的类、bean、和定制标签的便利以外,它所隐含的假定是单个页面给出单个基本视图。

• 仅servlet

– 输出为二进制类型,例如:一幅图像。

– 没有输出,如搜索引擎例子中的转发与重定向。

– 页面的格式/布局变化很大,例如:门户网站。

• 仅JSP

– 输出大部分为字符数据,如HTML。

– 格式/布局大部分固定。

• 二者的组合

– 单个请求可能会得到外观相差较大的多种结果。

– 数据处理过程复杂,但布局相对固定。

• 这些仅适用于单个请求的处理

– 在整个应用中,我们依旧需要使用servlet和JSP。

9. JSP隐含变量(也叫做内置对象、内建对象等等)这些东西在JSP当中,不用声明直接使用。

request 用户端请求,此请求会包含来自GET/POST请求的参数

response 网页传回用户端的回应

pageContext 网页的属性是在这里管理

session 与请求有关的会话期

application servlet 正在执行的内容

config servlet的构架部件

out 用来传送回应的输出 (用来向客户端输出数据)

page JSP网页本身

exception 针对错误网页,未捕捉的例外 (异常)

10.四大共享范围

答:a、page 当前页面。

b、session 在当前用户的会话范围内有效。

c、request 从上一页到下一个页面。

d、application 在整个服务器运行期间,在服务器内有效,所有的访问者都可以使用到application范围内的对象。

11.MVC——如何理解MVC(看PPT14)

答: MVC是Model-View-Controller的简写。

“Model” 代表的是应用的业务逻辑 (通过JavaBean,EJB组件实现),

“View” 是应用的表示面(由JSP页面产生),

“Controller” 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。

(一)用RequestDispatcher 实现MVC

1. 定义用以表示数据的bean

2. 使用一个servlet处理请求

– servlet读取请求参数,检查数据的缺失或异常等。

3. 填充bean

– 该servlet调用业务逻辑(与具体应用相关的代码)或数据访问代码得到最终的结果。得出的结果被放在第一步中定义的bean中。

4. 将bean存储在请求、会话或servlet的上下文中

– 该servlet调用请求、会话或servlet上下文对象的setAttribute存储表达请求结果的bean的引用。

(二)用RequestDispatcher 实现MVC

5. 将请求转发到JSP页面

– 该servlet确定哪个JSP页面适合于处理当前的情形,并使用RequestDispatcher的forward方法将控制转移到那个页面。

6. 从bean中提取数据

– JSP页面使用jsp:useBean和与第4步匹配的位置访问之前存储的bean,然后使用jsp:getProperty输出bean的属性。

– JSP页面并不创建或修改bean;它只是提取并显示由servlet创建的数据。

  1. JSP生命周期(非常重要,还有servlet的生命周期也超级重要)

13、JSP中动态INCLUDE与静态INCLUDE的区别?(具体区别看ppt12)

动态INCLUDE(也叫做include动作标签)用动作实现,它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。它引用的运行的结果,在编译过程中不参与当前页的编译,比如a.jsp引用了b.jsp,那么我们首次访问a.jsp的时候两个jsp都将被编译。如果在程序运行期间,我们修改了b.jsp,那么只有b.jsp会被编译。

静态INCLUDE(也叫做include指令标签)用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面引用的被引用文件的代码。

是否能包含web-inf当中的东西

14. Forword和SendRedirect区别

答: Forword:仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;

SendRedirect:则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。

所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。但在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。

redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。

跳转后地址栏的显示

是否能跳转到web-inf

是否能跳转到网站外部

跳转的时候是否可以通过request对象传递东西

  1. 从 BeanFactoy或 ApplicationContext是通过什么模式取得实例的?如果要取得多个实例在配制文件中要怎样做映射

    答:是通过单态模式取得实例的,在配制文件中可以改,好像是isthread…设成false

  2. jsp有哪些动作?作用分别是什么?

    答: JSP共有以下6种基本动作

    jsp:include:在页面被请求的时候引入一个文件。

    jsp:useBean:寻找或者实例化一个JavaBean。

    jsp:setProperty:设置JavaBean的属性。

    jsp:getProperty:输出某个JavaBean的属性。

    jsp:forward:把请求转到一个新的页面。

    jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记

17、session的特点见ppt8

18、如何设置/取得Bean 中的属性值?

答:设置属性值

< jsp:setProperty name=”haha”,property=”*” />获取从上一个表单中提交过来的,与Bean中变量名字相同的所有属性.

取得属性值:

相当于:<%=getA()%>

19、JavaBean的使用:

或者

20、实现页面跳转的两种方法:

答:a、

b、<%response.sendRedirect(“for2.jsp”);%>

21、include指令标签(静态引用,看看ppt12)

<%@include file=”inc1.jsp”%> 简单的代码复制。

include动作标签:获取inc2.jsp的执行结果。

22、页面之间的值传递:

答:可以通过非page共享范围进行传递

也可以通过url地址传递,例如:maomao.jsp?id=200&stuid=100

23、获取session ID: <%=session.getId()%>;

24、使用Cookie对象

答:

写入:

Cookie c=new Cookie(“maomao”,”xixi”);

c.setMaxAge(100);//单位秒

c.setPath(“/”);

response.addCookie(c);

读取:

Cookie cookies []=request.getCookies();

if(cookies!=null)

{

for(int a=0;a