一:开发Servlet的步骤:

     1.编写一个类,实现Servlet接口

     2.将编写好的类部署到Servlet容器中

二:编写Servlet

一个Servlet必须要求实现javax.servlet.Servlet接口(直接实现或者间接实现),文档中建议我们继承javax.servlet.GenericServlet或者javax.servlet.http.HttpServlet,这两个类都实现了Servlet接口,因此我们所写的Servlet类如果继承了这两个类中的一个,也就间接的实现了Servlet接口。

GenericServlet:跟协议无关,通用的Servlet

HttpServlet:与Http协议有关

三:编写第一个HelloServlet,向客户端输出"Hello Servlet"

1.按照javaweb应用的规范要求建立目录

2.在classes目录下编写一个Servlet,继承GenericServlet,代码如下:

  package cn.lycasa

//引入包

import javax.servlet.*;

import java.io.*;

public class HelloServlet extends GenericServlet

{

   //代码写到service方法中

public void service(ServletRequest req,ServletResponse res) throws ServletException,java.io.IOException{

//输出字符串Hello Servlet

String data="Hello Servlet";

res.getOutputStream().write(data.getBytes());

}

}

3.编写java源文件,此处用到servlet-api.jar(不属于jdk),因此在编译时候需要指定servlet-api.jar的位置到classpath中,执行以下命令

set classpath=%classpath%;C:\Tomcat6.0\lib\servlet-api.jar;

执行 javac -d HelloServlet.java

4.配置Servlet映射

修改web.xml文件,在根元素下增加以下内容:

<servlet>

<!--为Servlet指定一个名称-->

<servlet-name>HelloServlet</servlet-name>

<!--Servlet 类的全名-->

<servlet-class>cn.lycasa.HelloServlet</servlet-class>

</serlet>

<!--Servlet映射-->

<servlet-mapping>

<servlet-name>HelloServlet</servlet-name>

<url-pattern>/hello</url-pattern>

</servlet-mapping>

5.如何访问:http://localhost:8080/FirstServlet/hello

四:编写Servlet,通过继承HttpServlet的方式,注意事项:

1.不应该覆盖掉service方法

2.应该覆盖掉doGet(),doPost()方法

五:修改MyEclipse的Servlet的模版代码

1.6.6:找到MyEclipse的安装目录,搜索Servlet.java的文件,该文件即为模版文件,把其中不需要的删除掉,注意修改前先备份。

2.8.5:搜索com.genuitec.eclipse.wizards_8.5.0*.jar,找到templates文件夹中的Servlet.java

六:Servlet的生命周期

初始化方法init()和销毁方法destory方法只会被调用一次,针对每次客户的请求,都会执行service方法,init方法只有在第一次访问的时候才会调用。

七:问题:我想在容器启动时候就初始化指定的Servlet

   解决:在<servlet>元素中增加<load-on-startup>1</load-on-startup>,1表示Servlet的初始化顺序,是一个自然整数。

八:解决Servlet中的线程安全问题:尽量将你的变量定义为局部变量

九:在web.xml中的<servlet>元素中,可以针对Servlet配置参数,配置如下:

<servlet>

<servlet-name>ServletDemo</servlet-name>

<servlet-class>cn.lycasa.servlet.ServletDemo</servlet-class>

<init-param>

<description>示例</description>

<param-name>paramName1</param-name>

<param-value>paramValue1<param-value>

</init-param>

<init-param>

<description>示例</description>

<param-name>paramName2</param-name>

<param-value>paramValue2<param-value>

</init-param>

</servlet>

在实例化Servlet时,Servlet容器会自动创建一个ServletConfig对象,可以通过该对象来获取web.xml配置参数的值。