servletjsp面试题目.docx
- 文档编号:28496481
- 上传时间:2023-07-15
- 格式:DOCX
- 页数:12
- 大小:22.90KB
servletjsp面试题目.docx
《servletjsp面试题目.docx》由会员分享,可在线阅读,更多相关《servletjsp面试题目.docx(12页珍藏版)》请在冰豆网上搜索。
servletjsp面试题目
1、说一说Servlet的生命周期?
答:
servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。
这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
2、JAVASERVLETAPI中forward()与redirect()的区别?
答:
前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。
这样,从浏览器的地址栏中可以看到跳转后的链接地址。
所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。
在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。
3、Servlet的基本架构
答:
publicclassServletNameextendsHttpServlet{publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{}
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{}}
4、什么情况下调用doGet()和doPost()?
答:
Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()。
2、servlet的生命周期答:
web容器加载servlet,生命周期开始。
通过调用servlet的init()方法进行servlet的初始化。
通过调用service()方法实现,根据请求的不同调用不同的do***()方法。
结束服务,web容器调用servlet的destroy()方法。
5、如何现实servlet的单线程模式
答:
<%@pageisThreadSafe="false"%>
6、页面间对象传递的方法
答:
request,session,application,cookie等
7、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
答:
JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。
JSP编译后是"类servlet"。
Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。
而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。
JSP侧重于视图,Servlet主要用于控制逻辑。
8、jsp6种常用的标签?
一、Include指令
include>标签表示包含一个静态的或者动态的文件。 语法: includepage="path"flush="true"/> or includepage="path"flush="true"> paramname="paramName"value="paramValue"/> include> 注: 1、page="path"为相对路径,或者代表相对路径的表达式。 2、flush="true"必须使用flush为true,它默认值是false。 3、 param>子句能让你传递一个或多个参数给动态文件,也可在一个页面中 使用多个 param>来传递多个参数给动态文件。 二、Forward指令 forward>标签表示重定向一个静态html/jsp的文件,或者是一个程序段。 语法: forwardpage="path"}/> or forwardpage="path"}> paramname="paramName"value="paramValue"/>…… forward> 注: 1、page="path"为一个表达式,或者一个字符串。 2、 param>name指定参数名,value指定参数值。 参数被发送到一个动态 文件,参数可以是一个或多个值,而这个文件却必须是动态文件。 要传递多个参 数,则可以在一个JSP文件中使用多个 param>将多个参数发送到一个动态 文件中。 三、UseBean指令 useBean>标签表示用来在JSP页面中创建一个BEAN实例并指定它的名字以 及作用范围。 语法: useBeanid="name"scope="page|request|session|application"typeSpec/> 其中typeSpec有以下几种可能的情况: class="className"|class="className"type="typeName"| beanName="beanName"type="typeName"|type="typeName"| 注: 你必须使用class或type,而不能同时使用class和beanName。 beanName表示 Bean的名字,其形式为“a.b.c”。 四、GetProperty指令 getProperty>标签表示获取BEAN的属性的值并将之转化为一个字符串,然 后将其插入到输出的页面中。 语法: getPropertyname="name"property="propertyName"/> 注: 1、在使用 getProperty>之前,必须用 useBean>来创建它。 2、不能使用 getProperty>来检索一个已经被索引了的属性。 3、能够和JavaBeans组件一起使用 getProperty>,但是不能与Enterprise JavaBean一起使用。 五、SetProperty指令 setProperty>标签表示用来设置Bean中的属性值。 语法: setPropertyname="beanName"prop_expr/> 其中prop_expr有以下几种可能的情形: property="*"|property="propertyName"|property="propertyName" param="parameterName"|property="propertyName"value="propertyValue" 注: 使用jsp: setProperty来为一个Bean的属性赋值;可以使用两种方式来实现。 1、在jsp: useBean后使用jsp: setProperty: useBeanid="myUser"…/> … setPropertyname="user"property="user"…/> 在这种方式中,jsp: setProperty将被执行。 2、jsp: setProperty出现在jsp: useBean标签内: useBeanid="myUser"…>… setPropertyname="user"property="user"…/> useBean> 在这种方式中,jsp: setProperty只会在新的对象被实例化时才将被执行。 *在 setProperty>中的name值应当和 useBean>中的id值相同。 六、Plugin指令 plugin>标签表示执行一个applet或Bean,有可能的话还要下载一个Java 插件用于执行它。 语法: plugin type="bean|applet" code="classFileName" codebase="classFileDirectoryName" [name="instanceName"] [archive="URIToArchive,..."] [align="bottom|top|middle|left|right"] [height="displayPixels"] [width="displayPixels"] [hspace="leftRightPixels"] [vspace="topBottomPixels"] [jreversion="JREVersionNumber|1.1"] [nspluginurl="URLToPlugin"] [iepluginurl="URLToPlugin"]> [ params> [ paramname="parameterName"value="{parameterValue|<%= expression%>}"/>]+ params>] [ fallback>textmessageforuser fallback>] plugin> 注: plugin>元素用于在浏览器中播放或显示一个对象(典型的就是applet和 Bean),而这种显示需要在浏览器的java插件。 当Jsp文件被编译,送往浏览器时, plugin>元素将会根据浏览器的版本替 换成 注意, 于HTML3.2。 一般来说, plugin>元素会指定对象是Applet还是Bean,同样也会指定 class的名字,还有位置,另外还会指定将从哪里下载这个Java插件。 8、四种会话跟踪技术 答: 会话作用域ServletsJSP页面描述page否是代表与一个页面相关的对象和属性。 一个页面由一个编译好的Javaservlet类(可以带有任何的include指令,但是没有include动作)表示。 这既包括servlet又包括被编译成servlet的JSP页面request是是代表与Web客户机发出的一个请求相关的对象和属性。 一个请求可能跨越多个页面,涉及多个Web组件(由于forward指令和include动作的关系)session是是代表与用于某个Web客户机的一个用户体验相关的对象和属性。 一个Web会话可以也经常会跨越多个客户机请求application是是代表与整个Web应用程序相关的对象和属性。 这实质上是跨越整个Web应用程序,包括多个页面、请求和会话的一个全局作用域 9、Request对象的主要方法 答: setAttribute(Stringname,Object): 设置名字为name的request的参数值getAttribute(Stringname): 返回由name指定的属性值getAttributeNames(): 返回request对象所有属性的名字集合,结果是一个枚举的实例getCookies(): 返回客户端的所有Cookie对象,结果是一个Cookie数组getCharacterEncoding(): 返回请求中的字符编码方式getContentLength(): 返回请求的Body的长度getHeader(Stringname): 获得HTTP协议定义的文件头信息getHeaders(Stringname): 返回指定名字的requestHeader的所有值,结果是一个枚举的实例getHeaderNames(): 返回所以requestHeader的名字,结果是一个枚举的实例getInputStream(): 返回请求的输入流,用于获得请求中的数据getMethod(): 获得客户端向服务器端传送数据的方法getParameter(Stringname): 获得客户端传送给服务器端的有name指定的参数值getParameterNames(): 获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例getParameterValues(Stringname): 获得有name指定的参数的所有值getProtocol(): 获取客户端向服务器端传送数据所依据的协议名称getQueryString(): 获得查询字符串getRequestURI(): 获取发出请求字符串的客户端地址getRemoteAddr(): 获取客户端的IP地址getRemoteHost(): 获取客户端的名字getSession([Booleancreate]): 返回和请求相关SessiongetServerName(): 获取服务器的名字getServletPath(): 获取客户端所请求的脚本文件的路径getServerPort(): 获取服务器的端口号removeAttribute(Stringname): 删除请求中的一个属性 10、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 答: PublicStringtranslate(Stringstr){StringtempStr="";try{tempStr=newString(str.getBytes("ISO-8859-1"),"GBK");tempStr=tempStr.trim();}catch(Exceptione){System.err.println(e.getMessage());}returntempStr;} 11、Servlet执行时一般实现哪几个方法? 答: publicvoidinit(ServletConfigconfig)publicServletConfiggetServletConfig()publicStringgetServletInfo()publicvoidservice(ServletRequestrequest,ServletResponse 12、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 答: JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。 JSP编译后是"类servlet"。 Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。 而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。 JSP侧重于视图,Servlet主要用于控制逻辑。 24、abstractclass和interface有什么区别? 1、抽象类可以有构造方法,接口不能有构造方法; 2、抽象类可以有普通的成员变量,接口中没有普通的成员变量; 3、抽象类中的抽象方法的访问类型可以是public,protect,但接口中只能是public类型,并且默认为publicabstract类型; 4、抽象类中可以包含静态方法,接口中不能包含静态方法; 1、Ajax的优点与缺点? 优点: (1)无刷新页面用户体验非常好。 (2)使用异步方式与服务器通讯,具有更加迅速的响应能力。 缺点: (1)ajax不支持浏览器back按钮。 (2)对搜索引擎的支持比较弱。 (3)破坏了程序的异常机制。 (4)不容易调试。 (5)Ajax暴露了与服务器交互的细节。 1、数据连接池的工作机制是什么? J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接,客户端程序需要启动时,池驱动程序会返回一个为使用的池连接并标记为忙,如果当前没有空闲连接,池启动程序会新建一定数量的连接,新建连接的数量有配置参数决定,当使用的池连接调用完成后,池驱动程序将此即为空闲,其它调用就可以使用这个连接。 43、说出一些常用的类,包,接口,请各举5个 常用的类: BufferedReader、BufferedWriter、FileReader、FileWirter、StringInteger; 常用的包: java.lang、java.awt、java.io、java.util、java.sql; 常用的接口: Remote、ListMap、Document、NodeList 13.Servlet中Session与Cookie有什么区别? Cookie: ①存在于客户端(可被阻止) ②只能是文本文档 ③如果设置了期限值,则写入客户端的文件; 如果没有,它只对本窗口或其子窗口有效,其它窗口不能访问该Cookie ④在Servlet/JSP中设置的Cookie可以被同路径下或其子路径的Servlet/JSP访问,父路径不可以 ○注: 这里的路径是指URL,而不是Web文件的目录 Session: 存在于服务器端 ②每个Session对应一个窗口,用SessionID标识,这个Session为该窗口及其子窗口共享 ③有两种实现方式: a.使用Cookie(在Cookie可用时)b.URL重写(在Cookie被禁用时) ④没有访问路径的问题。 同一个WebApplication下的Servlet/JSP设置的Session可以被互相访问 前提是: 同一个浏览器窗口或其子窗口 14.Jsp的内置对象有哪些? request对象、response对象、session对象、out对象、page对象、application对象、PageContext对象、exception对象 request对象 客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。 它是HttpServletRequest类的实例 response对象 response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。 它是HttpServletResponse类的实例。 session对象 session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。 它是HttpSession类的实例. out对象 out对象是JspWriter类的实例,是向客户端输出内容常用的对象 page对象 page对象就是指向当前JSP页面本身,有点象类中的this指针,它是java.lang.Object类的实例 application对象 application对象实现了用户间数据的共享,可存放全局变量。 它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。 服务器的启动和关闭决定了application对象的生命。 它是ServletContext类的实例。 exception对象 exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。 如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。 他实际上是java.lang.Throwable的对象 pageContext对象 pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本类名也叫pageContext。 15.什么是动态包含和静态包含? 有什么区别? 指令元素<%@include…%>与动作组件<%jsp: include…%>之间有何区别? 指令元素是在编译时就将子文件载入,将静态嵌入文件作为主体文件的一部分,所以主文件和子文件其实是一体的。 动作组件是动态嵌入文件,在运行时才将子文件载入;子文件不必考虑主文件的属性。 因此JSP页面和它所包含的文件在逻辑上和语法上是独立的,如果对包含的文件进行了修改,那么运行时可以看到所包含文件修改后的结果。 而静态的include指令包含的文件如果发生变化,必须重新将JSP页面转译成java文件,否则只能看到所包含的修改前的文件内容。 16.forword与sendredirect有什么区别? forward执行后,地址栏链接不变 sendRedirect()执行后,地址栏链接会更换 由此可知forward的执行是在服务器完成的,重定向到其他文件取出内容输出到页面 而sendRedirect,可以认为是客户端完成,相当于客户端又重新发了一个get请求,要服务器传输另一个文件过来。 17.简述JSP几种内置对象的用途及其作用范围。 ①request对象: 来自客户端的请求,此请求包括GET/POST请求方法的参数。 作用范围: request. ②response对象: 对客户端的响应。 作用范围: page。 ③session对象: 与请求有关的会话。 作用范围: session。 ④application对象: 代码段的运行环境。 作用范围: application。 ⑤out对象: 传送响应的输出信息流。 作用范围: page。 ⑥pageContext对象: 页面的管理属性。 作用范围: page。 ⑦config对象: 代码段的配置对象。 作用范围: page。 ⑧page对象: JSP页面本身。 作用范围: page。 ⑨exception对象: JSP页面运行时抛出的异常。 作用范围: page 18.jsp有哪些动作作用分别是什么 答: JSP共有以下6种基本动作 jsp: include: 在页面被请求的时候引入一个文件。 jsp: useBean: 寻找或者实例化一个JavaBean。 jsp: setProperty: 设置JavaBean的属性。 jsp: getProperty: 输出某个JavaBean的属性。 jsp: forward: 把请求转到一个新的页面。 jsp: plugin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- servletjsp 面试 题目