servlet和JSP面试题答案

servlet和JSP面试题答案
servlet和JSP面试题答案

Servlet和JSP面试题答案

1, JSP中九大内置对象为:

request 请求对象类型javax.servlet.ServletRequest 作用域Request response 响应对象类型javax.servlet.SrvletResponse 作用域Page

pageContext 页面上下文对象类型javax.servlet.jsp.PageContext 作用域Page

session 会话对象类型javax.servlet.http.HttpSession 作用域Session application 应用程序对象类型javax.servlet.ServletContext 作用域Application out 输出对象类型javax.servlet.jsp.JspWriter 作用域Page

config 配置对象类型javax.servlet.ServletConfig 作用域Page

page 页面对象类型https://www.360docs.net/doc/fd17907908.html,ng.Object 作用域Page

exception 例外对象类型https://www.360docs.net/doc/fd17907908.html,ng.Throwable 作用域page

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

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

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

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

jsp:setProperty:设置JavaBean的属性。

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

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

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

3、JSP中动态INCLUDE与静态INCLUDE的区别?

答:

动态INCLUDE用jsp:include动作实现

它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数

静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.htm" %>

4, 跳转有两种方法:RequestDispatcher.forward()方法和HttpServletResponse.sendRedirect()方法.

区别是:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址,他是不会改变Request的值。后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用Request

Dispatcher.forward()方法,这样也有助于隐藏实际的链接。

5, 说一说Servlet的生命周期?

1,初始化阶段调用init()方法

2,响应客户请求阶段调用service()方法,根据请求参数的不同调用doGet()或者doPost()方法

3,终止阶段调用destroy()方法

6.说出在JSP页面里是怎么分页的?

页面需要保存以下参数:

总行数:根据sql语句得到总行数

每页显示行数:设定值

当前页数:请求参数

页面根据当前页数和每页行数计算出当前页第一行行数,定位结果集到此行,对结果集取出每页显示行数的行即可。

7,get和post的区别?

1、Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。

2、Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post是将表单中的数据放在form 的数据体中,按照变量和值相对应的方式,传递到action所指向URL。

3、Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。Post的所有操作对用户来说都是不可见的。

4、Get传输的数据量小,这主要是因为受URL长度限制;而Post可以传输大量的数据,所以在上传文件只能使用Post(当然还有一个原因,将在后面的提到)。

5、Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。

6、Get是Form的默认方法。

8、如何现实servlet的单线程模式?

<%@ page isThreadSafe=”false”%>

9,JSP四种会话跟踪技术。

page 是代表与一个页面相关的对象和属性。一个页面由一个编译好的Java servlet 类(可以带有任何的include 指令,但是没有include 动作)表示。

request 是代表与Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个Web 组件(由于forward 指令和include 动作的关系)。

session 是代表与用于某个Web 客户机的一个用户体验相关的对象和属性。一个Web 会话可以也经常会跨越多个客户机请求。

application 是代表与整个Web 应用程序相关的对象和属性。这实质上是跨越整个Web 应用程序,包括多个页面、请求和会话的一个全局作用域。

10, JSP和Servlet的区别、共同点、各自应用的范围?

尽管JSP在本质上就是SERVLET,但是两者的创建方式不一样.Servlet完全是JA V A程序代码构成擅长于流程控制和事物处理而通过Servlet来生成动态网页很不直观;

JSP由HTML代码和JSP标签构成可以方便地编写动态网页因此在实际应用中采用Servlet来控制业务流程,而采用JSP来生成动态网页。

11.描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理。

cookie记录在客户端,session记录在服务器端;cookie因为保存在客户端,所以不是很安全,保存在服务器端会更安全。

cookie有长度限制,session没有。每一个session在服务端有一个sessionID作一个标识。存储的数据量大;浏览器的Cookies 不能超过300

个,并且每个不能超过4KB,因此总Cookie 文件大小限制在1200KB 之内。

Cookie是在客户端开辟的一块可长期存储用户信息的地方;Session是在服务器内存中开辟的一块存储用户信息的地方;当客户第一次访问服务器时,

服务器在内存创建对应的Session给访问客户,当客户离开或时间过期时;服务器自动销毁Session;Session是由容器管理的。

12. 列出Jsp中包含外部文件的方式,两者有何区别。

1: 2: <%@ include file="b.jsp">

区别1:(先执行,后包含)此标签表示法:能动态区别加进来的是动态页面还是静态页面,对于静态页面则直接将资源包含(仅取其文本)。

<%@ include file="b.jsp">此指令表示:静态地包含页面,不管其内容如何,不过是静态页面还是动态页面都首先将页面的内容先加进来。

区别2:可以分开写成:这样就可以传递参数。

13. 说明Jsp中errorPage的作用,应用范围。

表示错误页的操作,在一般的站点中,只要一个程序出现了错误,就是产生了异常,则可以统一跳转到一个页面进行显示,那么这种操作就属于错误页的处理,

要想进行错误页的设置,需要满足以下两个条件:

1、在错误能够处理的页上的page指令中,增加:isErrorPage="true",表示可以处理错误

2、在每一个页面指定errorPage,指向isErrorPage为true的页面。

如果希望配置一种全局的错误处理,则可以在web.xml中进行配置

404

/error.jsp

https://www.360docs.net/doc/fd17907908.html,ng.NullPointException

/error.jsp

一旦发生错误就会跳转到指定页面,此方法属于服务器跳转

14.Jsp和Servlet中的请求转发分别如何实现。

jsp request.getRequestDispatcher("/*.jsp").forward(request,response);

servlet sendRedirect(); forward();

15,servlet 如何得到服务器的name,port,info?

ServletRequest.getServletName();

ServletRequest.getServletPort();

ServletRequest.getServletInfo();

16,servlet如何得到客户端信息?

ServletRequest.getRemoteAddr();

ServletRequest.getRemoteHost();

17, filter的作用是什么?主要实现什么方法?doFilter()方法中参数request,response的全称是什么?

filter使用户可以改变一个request和修改一个response,它并不是一个servlet,不能产生一个response。它能在一个request到达servlet之前预处理request,也可以在离开servlet时处理

response.换句话说,filter其实是一个“servlet chaining”(servlet链)。一个filter包括:在servlet调用之前截获

在servlet调用之前检查servlet request

根据需要修改request头和request 数据

根据需要修改response头和response数据

在servlet调用之后截获

Filter接口定义了三个方法:

1,void setFilterConfig(FilterConfig config); //设置filter的配置对象

2,FilterConfig getFilterConfig();//返回filter的配置对象

3,doFilter(ServletRequest req,ServletResponse res,FilterChain chain);//执行filer工作。

request 全称:HttpServletRequest response 全称:HttpServletResponse

18,当容器调用servlet 的destory()方法的时候,servlet 会马上销毁么?如果当时这个servlet 正在执行其他任务或者线程呢?

是的,当容器调用servlet 的destory()方法的时候,servlet 会马上销毁,但是容器在调用destory()

方法之前,会等servlet 的service()方法结束剩余的任务。

19,我们没有写servlet的构造方法,那么容器是怎么创建servlet的实例呢?

容器会自动为servlet写一个无参的构造方法,并通过Class.forName(className).newInstance()来创建servlet实例

20,页面间对象传递的方法?

request,session,application,cookie

相关主题
相关文档
最新文档