servlet面试题及答案
servlet面试题及答案(一)
  1.Servlet执行时一般实现哪几个方法?
  Public void init(ServletConfig config)
  public ServletConfig getServletConfig()
  public String getServletInfo()
  public void service(ServletRequest request,ServletResponse response) public void destroy()
  2. url重写有几种方式?
  由于cookie可以被人为的禁止,必须有其他机制以便在cookie被禁止时仍然能够把session id传递回
  服务器。经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面,附加方式也有两种,一种是作为URL路径的附加信息,表现形式为
  ...../xxx;jsessionid=
  ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764
  另一种是作为查询字符串附加在URL后面,表现形式为...../xxx?jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764
  这两种方式对于用户来说是没有区别的,只是服务器在解析的时候处理的方式不同,采用第一种方式也有利于把session id的信息和正常程序参数区分开来。为了在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个session id。
  3.在jsp中引用使用jsp:useBean id=" " ...scope=" "/来引用javabean.
  Ⅰscope的值有哪些,这些值的区别是什么?不同的jsp页面中引用javabean时,id能否相同,如果能相同,对scope的值有什么要求?
  scope可以为:application|page|session|requeat这个东西就是指定ID的有效范围。如果scope=page,那么useBean的有用范围就只能在page内有效,到了session|application|requeat就无效了。可以指定scope属性,使得Bean不只是与当前页面建立单关联。如果共享了Bean,获取对现有Bean的引用就很有用,因此jsp;useBean操作表示公当不存在具有相同id和scope的对象时才实例化一个新对象。这样就可以节约资源。
  4.JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
  JSP技术构建在Servlet技术之上,是Servlet技术的扩展,本质上是Servlet的简易方式,JSP能做到的,Servlet都能做到,但是它们却各有所长。JSP更强调应用的外表表达。JSP编译后是"类servlet"。Servlet比较适合作为控制类组件,比如视图控制器等。另外,Servlet还可以作为过滤器、等。Servlet不仅可以动态生成HTML内容,还可以动态生成图形。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。总而言之,Servlet在项目中作为控制类的组件,并且处理一些后台业务,JSP则作为显示组件。JSP侧重于视图,Servlet主要用于控制逻辑。
 
servlet面试题及答案(二)
  1、 Servlet与JSP有什么区别?
  Servlet和JSP完成的功能是相同的,都可以接收用户的请求,可以对用户进行响应,可以调用业务方法。 不同点在于JSP是在html或者xml中嵌入了Java代码或者JSP的标记,在制作页面方面具有优势,可以使用网页编辑工具来制作网页,然后嵌入Java或者JSP的标记。Servlet是纯Java代码,通常用于控制,不用于输出。在MVC模式中,JSP通常充当视图,Servlet通常充当控制器。另外,JSP在运行的时候还要转换成类似于Servlet的Java代码。
  2、 Servelt通常有哪些方法
  init方法,完成初始化
  service方法,包括doGet和doPost,用于接收用户的请求,调用后台的JavaBean或者EJB,选择界面对用户响应。
  destroy方法,用于释放资源
  3、 谈谈Servlet的生命周期
  当接收到请求的时候,容器察看对应的Servlet对象是否存在,如果不存在,需要加载Servetl,实例化Servlet,调用init方法进行初始化。如果已经存在,根据用户的请求创建request和response对象,把这两个对象作为参数调用Servlet对象的service方法,Servlet通过这个方法与用户进行交互,方法执行完之后,对请求的处理结束。Servelt对象继续等待下一个请求。当应用卸载的时候,调用destroy方法释放资源。多个请求共享Servelt对象。
  4、 编写Servlet通常需要实现的两个方法是什么?
  doGet方法和doPost方法
  5、 doGet方法和doPost方法中的两个参数是什么?
  HttpServletRequest和HttpServletResponse,前者封装了与请求相关的信息,后者封装了
与响应相关的信息。要获取请求信息,从第一个参数获取,要对用户响应,通过第二个参数。
  6、 要获取用户信息,如何获取
  request的getParameter方法和getParameterValues方法,前者用于获取单值表单元素的值,或者用于获取多值的情况,典型的复选框。前者返回的是一个字符串,后者返回的是字符串数组。如果参数指定的表单元素不存在,返回null。
 
servlet面试题及答案(三)
  1.forward 和redirect的区别
  forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。
  redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。
  2.说出Servlet的生命周期,并说出Servlet和CGI的区别
  Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
  与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
  3.JSP中动态INCLUDE与静态INCLUDE的区别?
  动态INCLUDE用jsp:include动作实现 jsp:include page="included.jsp" flush="true" /它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。
  静态INCLUDE用include伪码实现,并不会检查所含文件的变化,适用于包含静态页面%@ include file="included.htm" %
  4.什么情况下调用doGet()和doPost()?
  Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()。
  5.servlet的生命周期
  web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。通过调用service()方法,根据请求的不同调用不同的do***()方法。结束服务,web容器调用servlet的destroy()方法。
  6.如何现实servlet的单线程模式
  %@ page isThreadSafe="false"%
  7.页面间对象传递的方法
  request,session,application,cookie等
java和jsp
 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。