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。
http隧道是利用http或者https把多种网络协议封装起来进行通信的技术,因此,http协议扮演了一个打通用于通信的网络协议的管道的包装器,把其它协议的请求掩盖成http的请求就是http隧道。
14.sendRedirect()和forword()方法的区别?
sendRedirect()方法会创建一个新的请求,而forword()方法只是把请求转发到一个新的目标,重定向(redirect)后,之前请求作用域范围以内的对象就失效了,因为它会产生一个新的请求,而转发(forword)后,之前请求作用域范围以内的对象还是能访问的,在服务器内部进行的,重定向要比转发慢。
15.什么是url编码和url解码?
url编码是负责把url里面的空格和其它的特殊字符替换成对应的16进制表示,反之就是解码。
就是http隧道。