一:开发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_
六: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配置参数的值。
















