Java面试题精选(三) JSP/Servlet Java面试逻辑题(一)

2014-11-24 08:17:33 · 作者: · 浏览: 0

Servlet方面:


1、说一说Servlet的生命周期 ★★★★★

:

servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。

这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。

2servlet的生命周期
答:

web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。

通过调用service()方法实现,根据请求的不同调用不同的do***()方法。

结束服务,web容器调用servlet的destroy()方法。

3Servlet的基本架构
public class ServletName extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)

throws
ServletException, IOException {
}
public void doGet(HttpServletRequest request, HttpServletResponse response)

throws
ServletException, IOException {
}
}

4、什么情况下调用doGet()doPost()
答:Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()。

5、如何现实servlet的单线程模式★★
答:<%@page isThreadSafe=false%> 面试中会遇到!

6、页面间对象传递的方法
答:request,session,application,cookie等

7JSPServlet有哪些相同点和不同点,他们之间的联系是什么?
答:JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是类servlet。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。

8、四种会话跟踪技术(重要考点)★★★★★
答:会话作用域ServletsJSP 页面描述
page是代表与一个页面相关的对象和属性。

一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。

这既包括 servlet 又包括被编译成 servlet 的 JSP 页面。
request是代表与 Web 客户机发出的一个请求相关的对象和属性。

一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系)。
session是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求。
application是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域。

9Servlet执行时一般实现哪几个方法?★★★★★
答:
public void init(ServletConfig config)
public ServletConfig getServletConfig()
public String getServletInfo()
public void service(ServletRequest request,ServletResponse response)
public void destroy()

JSP方面:

1jsp是如何执行的
答:阶段一:容器要将JSP文件转换成一个对应的servlet类

html(css,java script)--> service方法里,用 out.write输出(write方法会将null转换为 )。

<% Java代码 %> jsp代码片段 --> 把service方法里的内容,照搬过来。

<%= Java表达式 %>也会放到service方法里,使用out.print输出。

<%! %>给Servlet添加新的属性或者新的方法(转成.java文件后,声明内的部分添加在service方法之外)。

这样就把一个JSP变成了一个Servlet容器

注意事项:out.writer方法只能输出简单的字符串,对象是没法输出的。优点是把null自动转换成空字符串输出。

如: <% out.println(new Date()); %> 不能用writer

阶段二:容器会将servlet编译、实例化、初始化、然后执行service方法。(实例化、初始化、就绪、销毁)

2指令

1)指令是什么

通知容器,在将.jsp文件转换成.java文件时,作一些额外的处理,比如导包。

2)指令的语法

<%@ 指令名称 属性名=属性值 %>

3)page指令

import属性:导包。

例如:<%@page import=java.util.*%>

如: <%@page import=java.util.*, java.text.* %>

contentType属性:设置response.setCharacterEncoding()的内容。

pageEncoding属性:告诉容器JSP文件的编码格式。

如: <%@page contentType=text/html;charset=utf-8 pageEncoding=utf-8 %>

4)如何转发

step1:绑定数据到requset:request里有个HashMap。

request.setAttribute(String name,Object obj);//name:绑定名。obj:绑定值。

另一个方法获取绑定值:

Object request.getAttribute(String name);//如果绑定对象的值不存在,会返回null

step2:获得一个转发器:url:要转发给哪一个Web组件

RequestDispatcher rd=request.getRequsetDispatcher(String url);

step3:转发

rd.forward(request,response);//JSP和Servlet会共享相同的请求和响应对象

step4:在转发的目的地,可以使用request.getAttribute方法获得绑定的数据,然后进行处理。


3 jsp 有哪些隐含对象 作用分别是什么 ★★★
答:JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应):
request 用户端请求,此请求会包含来自GET/POST请求的参数
response 网页传回用户端的回应
pageContext 网页的属性是在这里管理
session 与请求有关的会话期
application servlet 正在执行的内容
out 用来传送回应的输出
config servlet的构架部件
page JSP网页本身

exception 针对错误网页,未捕捉的例外

技术拓展:

java script有11种内置对象:

Array、String、Date、Math、Boolean、Number、Function、Global、Error、RegExp、Object。

4 jsp 有哪些动作 作用分别是什么 ★★★★★
答:JSP共有以下6种基本动作
jsp:include:在页面被请求的时候引入一个文件。
jsp:useBean:寻找或者实例化一个JavaBean。
jsp:setProperty