Servlet

来源:互联网 发布:怎么给淘宝供货 编辑:程序博客网 时间:2024/06/06 02:06

1.什么是servlet?

Servlet是用来处理客户端请求并产生动态网页内容的java类。主要用来处理或者存储html表单提交的数据,产生的动态内容,在无状态的http协议下管理状态信息。

2.Servlet的体系结构?

所有的Servlet都必须实现核心接口javax.servlet.Servlet。每一个Servlet都必须要直接或间接实现这个接口,或者是继承javax.servlet.GenericServlet或者javax.servlet.http.HTTPServlet。Servlet使用多线程可以并行的为多个请求服务。

3.Applet和Servlet的区别?

Applet是运行在客户端主机的浏览器上的客户端java程序,Servlet是运行在web服务器上的服务端的组件,applet可以使用用户界面类,而Servlet没有用户界面,Servlet是等待客户端的http请求,然后为请求产生响应。

4.GenericServlet和HttpServlet有什么区别?
GenericServlet是一个通用的协议无关的servlet,它实现了servlet和servletConfig接口,继承自GenericServlet的Servlet应该覆盖service()方法,为了一个网页上服务使用http协议请求的servlet,你的servlet必须继承HttpServlet。

5.Servlet的生命周期?

Servlet接口中的方法  

init()  何时执行:servlet对象创建的时候执行。
service(request,response) 何时执行:每次请求都会执行,request代表请求,内部封装的是http请求的信息,response代表响应,封装的是响应的信息。

destroy()  何时执行:servlet销毁的时候执行。

(生命周期)

Servlet何时创建?默认第一次访问servlet时创建该对象。init()

Servlet何时销毁?服务器关闭servlet就销毁了。destroy()

每次访问必然执行的方法?service(Servletrequest request,ServletResponse response)方法。


6.doGet()和doPost()方法有什么区别?

doGet:Get方法会把名值对追加到请求的url后面,因为url对字符数目有限制,进而限制了用在客户端请求参数值的数目,并且请求中的参数值是可见的,因此敏感信息不能使用这种方式传递。

doPost:Post方法通过把请求参数值放在请求体中来可克服GET方法的限制,因此可以发送的参数的数目是没有限制的,并且通过POST提交请求的参数是隐藏的。

7.什么是web应用程序?

Web应用程序是对web或者是应用服务器的动态扩展。有两种类型的web应用:面向表现和面向服务,面向表现的web应用程序会产生包含很多中标记语言和动态内容交互的web页面作为对请求的响应,而面向服务的web应用实现了web服务的端点(endpoint)。一般来说,一个web应用可以看成是一组安装在服务器url名称空间的特定子集下面的Servlet集合。

8.什么是服务端包含(Server Side Include)?

服务端包含(SSI)是一种简单的解释型服务端脚本语言,大多数时候仅用于在web上,用servlet标签嵌入进来。SSI常用的场景是把一个或多个文件包含到web服务器的一个web页面中。当浏览器访问web页面的时候,Web服务器会用对应的servlet产生的文本来替代web页面中servlet标签。

9.什么是servlet链(Servlet Chaining)?

Servlet链是把一个servlet的输出发送给另一个Servlet的方法,第二个Servlet的输出可以发送给第三个Servlet,依次类推,链条上最后一个servlet负责把响应的发送给客户端。

10.如何知道哪一个客户端的机器正在请求你的Servlet?

ServletRequest类可以找出客户端的Ip地址或者是主机名,getRemoteAddr()方法获取客户端的ip地址,getRemoteHost()可以获取主机名。

11.HTTP的响应结构?

浏览器和Servlet通信使用http协议。


12.什么是cookie?session和cookie的区别?

cookie:数据存储在客户端本地,减轻服务器的存储压力,安全性不好,客户端可以清除cookie,cookie只能存储非中文的字符串。

session:将数据存储到服务器端,安全性相对好,增加服务器压力,session可以存储任意的java对象。

 Session技术是将数据存储在服务器端的技术,会为每个客户端都创建一块内存空间存储客户的数据,但客户端需要每次都携带一个表示ID去服务器中寻找属于自己的内存空间,所以Session的实现是基于cookie,Session需要借助Cookie存储客户的唯一性标识JSEEION。

Session的生命周期:(面试或笔试)
  创建:第一次执行request.getSession()时创建
  销毁:
      1)服务器(非正常)关闭时
      2)session过期/失效(默认30分钟)
          问题:时间的起算点 从何时开始计算30分钟
           从不操作服务器端的资源开始计时
        可以在工程中web.xml进行配置
         <session-config>
               <session-timeout>30 </session-timeout>
         </session-config>

    3)手动销毁
        session.invalidate();
    作用范围:
        默认在一次会话中,也就是说在,一次会话中任何资源公用一个session对象

    面试题:浏览器关闭,session就销毁了码?
        不对,session销毁有三种方式,默认30分钟
13.什么是http隧道?

http隧道是利用http或者https把多种网络协议封装起来进行通信的技术,因此,http协议扮演了一个打通用于通信的网络协议的管道的包装器,把其它协议的请求掩盖成http的请求就是http隧道。

14.sendRedirect()和forword()方法的区别?

sendRedirect()方法会创建一个新的请求,而forword()方法只是把请求转发到一个新的目标,重定向(redirect)后,之前请求作用域范围以内的对象就失效了,因为它会产生一个新的请求,而转发(forword)后,之前请求作用域范围以内的对象还是能访问的,在服务器内部进行的,重定向要比转发慢。

15.什么是url编码和url解码?

url编码是负责把url里面的空格和其它的特殊字符替换成对应的16进制表示,反之就是解码。

就是http隧道。

么是)方法的区别?13.什么是http隧道?http隧道?

求你http隧道?的Servlet?

求11你的Servlet?

rvlet负

,链条上

序?

7.1313什么是web应用程序?