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

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页