1.关于CGI:CGI脚本是用C,C++,或perl等编程语言编写的,在应用服务器使用CGI脚本处理客户机请求的情况下,服务器创建单独的CGI的脚本实力来处理请求。因此,多个请求并发时会影响服务器的效率。
2.Servlet工作原理:
(1)客户机发送请求给Web容器
(2)Web容器查找并加载Servlet类
(3)创建并初始化该servlet实例
(4)处理请求
(5)生成响应给客户机
3.Servlet的类层次接口
Servlet接口是servlet类层次结构的根接口。所有servlet都需要直接或间接地实现
GenericServlet 类还实现Servlet API 的 ServletConfig接口和标准java.io包中的Serializable接口。Web容器用ServeletConfig接口的对象在配置信息初始化是将配置信息传送给Servlet。
HttpServlet:HttpServlet类扩展了GenericServlet类,提供了能够处理特定HTTP方法收到的客户机请求的方法。
4.javax.servlet.Servlet 接口
提供的方法如下
(1)public void destroy() Web容器在将servlet实例从服务器中删除之前调用destroy方法
(2)public ServletConfig getServletConfig() 此方法返回包含初始化参数等配置信息的ServletConfig对象,一遍初始化servlet
(3)public String getServletInfo() 此方法返回包含作者,版本,版权等servlet相关信息的字符串
(4)public void init(ServletConfig config) throes ServletException Web容器穿件servlet实例后调用此方法
5.javax.servlet.ServletConfig 接口
在Servlet初始化初期,通过Web容器实现javax.servlet.ServletConfig接口,以便将配置信息传送给servlet,Web容器通过将ServletConfig类的对象那个传送至servlet的init()方法来初始化该servlet
6.service()方法
只有在servlet初始化完成后层能调用service()方法。Web容器调用service方法时传送ServletRequest接口的对象和ServletResponse接口的对象。
在发生干扰servlet正常运行的宜昌市,service()方法会引发ServletException异常。发生输入或输出异常时,service()方法会引发IOException.
service()方法将客户机请求分给HttpServlet接口的其中一个请求处理程序方法,如doGet(),doPost(),doHead(),doPut().
7.关于get请求和post请求
Get 默认都是发型Get请求,请求可以将参数附加到URL上
Post 数据量大,不可见,安全性高,将数据作为Http请求主体的一部分发出。
8.如何创建,注册和运行一个Servlet
注册一个servlet(以web.xml形式注册一个Servlet)
<web-app>中的version:次属性指定模式的版本
xmlns:次属性制定部署描述符模式的名称空间
<displayname>标记制定需要部署的Web模块的名称
<servlet>标记中包含servlet的信息
<display-name> 显示servlet 的名称
<servlet-name> servlet的名称,可通过该名称访问servlet
<servlet-class> servlet类的名称。
<welcome-file-list>
<welcome-file>
filename(访问servlet的首页)
</welcome-file>
</welcome-file-list>
9.文件目录
根目录存放静态资源,Html,Jsp等
在根目录下创建WEB-INF目录,web.xml直接放在里面
classes 与 lib 目录位于WEB-INF目录中
10.javax.servlet 包
创建Servlet时需要直接或通过扩展实现Servlet接口的类实现Servlet接口。Servlet 接口定义了各种Servlet生命周期的方法.javax.serverlet保重其他经常使用接口有ServletRequest接口,ServletResponse接口,ServletContent接口
11.ServletRequest接口
调用servlet时,Web容器将用于实现ServletRequest 和 SerletResponse 接口的对象传送给 servlet 的service() 方法
(1)public String getParameter(String ParameterName) 返回制定请求参数值得String对象
(2)public String[] getParamterValues(String paramterName) 返回包含所有请求参数值的String 对象的数组
(3)public Enumeration getParameterNames() 返回Enumeration对象,该Enumeration对象包含servlet请求包含的String对象作为参数名
(4)public String getRemoeHost 返回制定了发送请求的计算机的完全限定名称
(5)publice String getRemoteAddr() 返回制定了发送请求的计算机的IP地址的String
12.ServletResponse 接口
(1)public ServletOutputStream getOutputStream() throws IOException 返回ServletOutputStream 类的对象,表示输出流发送二进制数据作为响应。
(2)public PrintWriter getWriter() throws IOException 返回PrintWriter 类的对象,servlet使用该对象发送字符数据作为相应
(3)publice void setContentType(String type) 位servlet相应设置MINE类型,部分MIME类型有 text/html
13.ServletContext 接口
ServletContext常用于设置其他应用程序或Servlet可以访问的属性
(1)public void setAttribute(String , Object)
(2)public Oject getAttribute(String attrname)
(3)public Enumeration getAttributeNames() 返回包含所有上下文属性名称的string对象枚举
(4)在部署描述符中(即web.xml)中创建上下文初始化参数
<context-param>
<param-name></param-name>
<param-value></param-value>
</context-param>
14.javax.servlet.http 包
javax.servlet.http 包时对javax.servlet 包的扩展。该包的类和接口处理使用HTTP进行servlet。javax.servlet.http包经常使用的接口包括
HttpServletRequest 接口
重要的请求标头如下:
Accept:制定客户机优先接受MIME类型
Accept-Language:制定客户机优先接受请求的语言。
User-Agent:指定发送请求的浏览器的名称和版本
HttpServletResponse 接口
重要的相应标头:
Content-type:指定Servlet所发送数据的MIME类型,如text/Html
Cache-control:指定缓存servlet的信息
Expires:指定servlet的内容变化的时间或因其他信息无效而浏览器需要重新加载以显示最新数据的 时间
void sendredirect(String url) 将请求重定向到指定URL
HttpSession 接口
15.servlet的事件类型
分为:servlet请求事件,Servlet 上下文事件 , HTTP 会话事件
(1)于关于Web应用程序请求对象中的变化有关的事件称为servlet请求事件。一下两个接口表示servlet请求事件:
javax.servlet.ServletRequestEvent
c1:初始化请求对象和删除请求对象时调用此参数
javax.servlet.ServletRequestAttributeEvent
c2:向请求的属性进行增删改时触发事件
16.侦听器的类型
分为 Servlet请求监听器,servlet上下文监听器,HTTP会话监听器
(1)Servlet请求监听器
javax.servlet.ServletRequestListener
javax.servlet.ServletReqyestAttributeListener