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:
区别1:
<%@ include file="b.jsp">此指令表示:静态地包含页面,不管其内容如何,不过是静态页面还是动态页面都首先将页面的内容先加进来。
区别2:
13. 说明Jsp中errorPage的作用,应用范围。
表示错误页的操作,在一般的站点中,只要一个程序出现了错误,就是产生了异常,则可以统一跳转到一个页面进行显示,那么这种操作就属于错误页的处理,
要想进行错误页的设置,需要满足以下两个条件:
1、在错误能够处理的页上的page指令中,增加:isErrorPage="true",表示可以处理错误
2、在每一个页面指定errorPage,指向isErrorPage为true的页面。
如果希望配置一种全局的错误处理,则可以在web.xml中进行配置
一旦发生错误就会跳转到指定页面,此方法属于服务器跳转
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