概念:
一、通用网关接口(CGI):接收客户端浏览器发送的请求,主要用来处理网页提交的数据,比如form提交的数据,比如ajax的一些数据。不是专门为网页编程设计的,c,java,vb都可以编写
二、什么是servlet
a)servlet是一个CGI程序,使用java语言开发
b)servlet技术是使用java servlet应用程序设计接口(API)及相关类和方法的jaava程序。java script API定义servlet和java服务器之间的一个标准接口,这使得servlet具有了跨服务器平台的特性
C)servlet通过创建一个框架来扩展服务器的功能,以提供在web上进行请求和响应的服务
d)当客户端发送请求到服务器时,服务器可以将请求信息转发给servlet,并使用servlet建立返回给客户端的响应(有跳转的重定向转发,无跳转的ajax)当启动web服务器或客户端第一次向服务器提出请求时,可以自动装入servlet,装入后,servlet将继续进行运行直到其他客户机发出请求,servlet给出响应为止。
三、servlet的作用
a)创建并返回一个包含基于客户端请求性质的动态内容的完整的HTML页面
b)创建可嵌入到现有HTML页面中的一部分HTML页面(HTML片段)
c)与其他服务器资源(包括数据库和基于java的应用程序)进行通信
d)使用多个服务端进行连接,接收多个客户端的输入,并将结果广播到多个客户端上。例如,Servlet可以为多参与者的游戏服务器服务
e)对特殊的处理采用MIME类型过滤数据,例如图像转换或者Word文档转换等
f)将定制的处理提供给所有服务器的标准例行程序。例如,Servlet可以修改如何认值用户等
四、servlet的生命周期
Servlet的生命周期:装载、初始化(创建、初始化)、服务和销毁
1.装载:在服务器启动时装载web.xml中配置的所有Servlet,所以tomcat也叫Servlet容器
2.初始化:第一次请求当前ServletURL时执行,并只执行一次
3.服务:每一次请求都会执行的内容,调用此方法时会传递request和response对象
4.销毁:服务器关闭时,执行的操作,一般销毁进行一些关闭操作
五、servlet的技术特点
a)采用servlet技术,服务器可以完全授权对本地资源的访问(如数据库),并且servlet自身将会控制外部用户的访问数量及访问性质
b)servlet可以是其他服务的客户端程序。例如,它们可以是用于分布式开发的应用系统中
c)可以从本地硬盘,或者通过网络远程控制硬盘激活servlet
d)servlet可被链接(chain),及一个servlet可以调用激活另一个或一系列servlet
e)采用servlet tag即使,可以在web页面中动态调用
f)servlet api 与协议无关
六、servlet的技术实现
三种创建方式 xml和注解
七、servlet的调用方式
八、Servlet三大域对象:
ServletContext:范围最大,应用范围!
HttpSession :会话范围!
HttpServletRequest:请求范围!
Servlet的实现方法
第一种servlet实现方法:
i>在servlet包下创建一个servletFirst类
ii>实现Servlet接口
package servlet;
import javax.servlet.*;
import java.io.IOException;
//Servlet:Service Applet
/*
其实servlet就是jsp翻译之后的那个类
但是。。。
Servlet是一个类,而页面之间的跳转通过路径(Url)来走的
它就需要具备类的基本特质,而且还需绑定一个网址(url)来调用这个类
*/
//第一种Servlet的实现方式
public class FirstServlet implements Servlet {
//第一次请求时执行
public FirstServlet(){
System.out.println("First构造器");
}
//初始化方法
//第一次请求时执行
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("firstInit");
}
//获取config对象方法
public ServletConfig getServletConfig() {
return null;
}
//关键方法,服务方法
//请求一次,执行一次
public void service(ServletRequest req, ServletResponse resp)
throws ServletException, IOException {
System.out.println("firstService");
}
//获取到servlet信息方法
public String getServletInfo() {
return "first";
}
//销毁方法
//服务器关闭时执行
public void destroy() {
System.out.println("firstDestroy");
}
}
在web.xml下进行配置
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<!-- 配置servlet:给每个servlet起一个URL-->
<servlet>
<servlet-name>first</servlet-name><!--名字 -->
<servlet-class>servlet.FirstServlet</servlet-class> <!-- 包下的类-->
</servlet>
<servlet-mapping>
<servlet-name>first</servlet-name> <!-- 进行绑定,将类与url绑定-->
<url-pattern>/first</url-pattern> <!-- /代表根目录,first网络路径,通过/first网址找到servlet.FirstServlet的类-->
</servlet-mapping>
</web-app>
第二种servlet的实现方法:
继承Genericservlet类
package servlet;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;
//第二种Servlet实现方式
public class SecondServlet extends GenericServlet {
@Override
public void service(ServletRequest req, ServletResponse resp)
throws ServletException, IOException {
System.out.println("第二种servlet的实现方法");
}
}
在web.xml下进行配置
注意:servlet写在一起,servler-mapping写在一起
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<!-- 配置servlet:给每个servlet起一个URL-->
<servlet>
<servlet-name>first</servlet-name><!--名字 -->
<servlet-class>servlet.FirstServlet</servlet-class> <!-- 包下的类-->
</servlet>
<servlet>
<servlet-name>second</servlet-name><!--名字 -->
<servlet-class>servlet.SecondServlet</servlet-class> <!-- 包下的类-->
</servlet>
<servlet-mapping>
<servlet-name>first</servlet-name> <!-- 进行绑定,将类与url绑定-->
<url-pattern>/first</url-pattern> <!-- /代表根目录,first网络路径,通过/first网址找到servlet.FirstServlet的类-->
</servlet-mapping>
<servlet-mapping>
<servlet-name>second</servlet-name> <!-- 进行绑定,将类与url绑定-->
<url-pattern>/second</url-pattern> <!-- /代表根目录,first网络路径,通过/first网址找到servlet.FirstServlet的类-->
</servlet-mapping>
</web-app>
第三种servlet的实现方法:
继承HttpServlet类
package servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//第三种,最常用的servlet实现方式
public class ThreeServlet extends HttpServlet {
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("servlet的post");
}
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("servlet的get");
}
}
在web.xml下进行配置
Servlet的生命周期
Servlet的生命周期:装载、初始化(创建、初始化)、服务和销毁
1.装载:在服务器启动时装载web.xml中配置的所有Servlet,所以tomcat也叫Servlet容器
2.初始化:第一次请求当前ServletURL时执行,并只执行一次
3.服务:每一次请求都会执行的内容,调用此方法时会传递request和response对象
4.销毁:服务器关闭时,执行的操作,一般销毁进行一些关闭操作