tomcat的配置:从官网上面下载任一个版本解压即可,想将tomcat配置到eclipse里面方便使用只需要把tomcat解压的路径加进来即可。
servlset:
1、Servlet 简介
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
2、Servlet 任务
读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单,或者也可以是来自 applet 或自定义的 HTTP 客户端程序的表单。
读取客户端(浏览器)发送的隐式的 HTTP 请求数据。这包括 cookies、媒体类型和浏览器能理解的压缩格式等等。
处理数据并生成结果。这个过程可能需要访问数据库,执行 RMI 或 CORBA 调用,调用 Web 服务,或者直接计算得出对应的响应。
发送显式的数据(即文档)到客户端(浏览器)。该文档的格式可以是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等。
发送隐式的 HTTP 响应到客户端(浏览器)。这包括告诉浏览器或其他客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数,以及其他类似的任务。
3、Servlet 架构
4、Servlet 包
javax.servlet 和 javax.servlet.http
5、Servlet 生命周期:Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:
(1、)Servlet 通过调用 init () 方法进行初始化。Servlet是单实例的,是在第一次被请求的时候,创建servlet对象。
(2、)Servlet 调用 service() 方法来处理客户端的请求,每次请求的时候都会执行
(3、)Servlet 通过调用 destroy() 方法终止(结束)。项目重新部署的时候执行(会销毁servlet对象)。Servlet容器关闭的时候会销毁对象
最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
5、主要方法:
(1、)service() 方法
service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。
每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。
下面是该方法的特征:
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException{
}
service() 方法由容器调用,service 方法在适当的时候调用 doGet、doPost、doPut、doDelete 等方法。所以,您不用对 service() 方法做任何动作,您只需要根据来自客户端的请求类型来重写 doGet() 或 doPost() 即可。
(2、)doGet() 和 doPost() 方法是每次服务请求中最常用的方法。下面是这两种方法的特征。
Servlet 客户端 HTTP 请求
当浏览器请求网页时,它会向 Web 服务器发送特定信息,这些信息不能被直接读取,因为这些信息是作为 HTTP 请求的头的一部分进行传输的。
附:创建servlet过程:
1、 创建一个动态的web工程test,注意:把web.xml勾选上
2, 创建servlet
(1、)让自定义的类继承HttpServlet
(2、)重写doGet或者doPost方法
(3、)给servlet配置访问的地址(URL)
这里有两种方法:
方法一:在web.xml中声明servlet的位置和名称
通过urlpattern给servlet配置地址(地址必须是绝对路径)
<servlet>
<servlet-name>HelloServlet(类名)</servlet-name>
<servlet-class>com.iflytek.servlet.HelloServlet(具体包.类名称)</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet(类名)</servlet-name>
<url-pattern>/hello.do(或者/hello就可以了,但一定要以/开头,表示相对根目录)</url-pattern>
</servlet-mapping>
方法二:
注解:通过在类前面加上一句注解的方式:
@WebServlet(name="HelloServlet",urlPatterns="/hello.do") (同样,这里/hello就可以了,一定要以/开头,表示相对根目录)
现在就可以在浏览器里访问这个servlet了:
http://localhost:8080/test/hello (前面配置带了.do的话则访问http://localhost:8080/test/hello.do)。
现在关于servlet的生命周期举例验证一下:
<span style="color:#000099">package com.test;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(name = "Test", urlPatterns = "/mytest")
public class Test extends HttpServlet {
int i=100;
@Override
public void init() throws ServletException {
// TODO Auto-generated method stub
System.out.println("这是init");
System.out.println("init"+" "+i);
}
@Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("这是service");
i++;
System.out.println("service"+i);
}
@Override
public void destroy() {
// TODO Auto-generated method stub
System.out.println("这是destory");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("这是doGet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("这是doPost");
}
}
</span>
现在通过不同的浏览器去访问http://localhost:8080/test/mytest,并多次访问,控制台打印结果如下:

证实了init只调用一次,即servlet是单例的,在tomcat第一次访问到即创建对象且只初始化一次,要想重新初始化,只有项目重新部署(即项目有改动后重新保存)或Servlet容器关闭(tomcat关闭)的时候会销毁对象即下次会重新初始化。很多网站也利用servlet的这个特性把数据保存到数据库中来记录访问量。同时本例也说明了service方法和doGet(或doPost方法)是等效的,只会调用一个,所以写了service就没必要写doPost(或doGet),写了也不会执行,除非在service方法体里手动调用doPost()(或doGet());而写了doPost(或doGet)也就没必要写service方法了,否则doPost(或doGet)方法就被覆盖了。
本文介绍了如何在Eclipse中配置Tomcat,并详细解析Servlet的工作原理、架构、生命周期及其核心方法,如service(), doGet() 和 doPost() 方法。此外,还提供了创建Servlet的具体步骤和示例代码。
860

被折叠的 条评论
为什么被折叠?



