介绍和编写Servlet
1:在程序的开头必须引入程序需要的类和包,在这个例子中要引入三个类,过程如下:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
2:扩展javax.servlet.http.HttpServlet.如:
public class HelloWorldServlet extends HttpServlet
3:编写主程序service()方法;
Servlet的主要功能是接收Web浏览器的Http请求,并返回Httpresponse。接收和返回的工作由Servlet的Service()方法调用。它包括使用request对象接收从客户端提交的数据和response 对象创建输出结果到客户端。
你可能在看到一些servlet例子使用doPost()或doGetO方法来接收和执行请求。但是这些方法只回应POST或GET请求。如果你想使用一个方法接收来自客户端的各种类型的请求,你就可以使用service()方法。(如果你已经使用了service()方法,你就不能使用doPost()和doGet方法。http servlet规范描述了对应各种类型请求的方法,所有的这些类型都能用service方法。)
所有的service方法有一样的变量参数,HttpServletRequest接收请求的信息,HttpServletResponse返回客户端信息。例子如下:
public void service(HttpServletRequest req, HttpServletResponseres)
throws IOException {
设置输出类型:
res.setContentType("text/html");
使用java.io.PrintWriter对象定义一个输出对象;
PrintWriter out = res.getWriter();
用out.println()方法打印输出结果;
out.println("<html><head><title>HelloWorld!</title></head>");
out.println("<body>");
out.println("<h1>HelloWorld!</h1></body></html>");
这样一个完整的servlet就完成了,经过编译和配置就可以通过浏览器访问。完整的例子HelloWorldServlet.java如下:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class HelloWorldServlet extends HttpServlet {
public void service(HttpServletRequest req, HttpServletResponseres)
throws IOException
{
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<html><head><title>HelloWorld!</title></head>");
out.println("<body>");
out.println("<h1>HelloWorld!</h1></body></html>");
}
}
二、配置Http Servlet
所有的servlet都放在web-infclasses目录下,jsp,html,jpg,gif文件放在webApplicationRoot的根目录下。
除了设置相应的目录,Servlet还必须经过配置才能被Java和服务器识别和运行。第一个配置文件是web.xml,它是SunJavaServlet规范定义的配置文件,描述web应用。
配置过程如下:
1:按照Servlet的目录要求,建立相应的目录WEB-INF,classes,lib。
2:编译刚才编写的HelloWorldServlet.java,输出到WEB-INFclasses目录下,生成HelloWorldServlet.class;
3::在WEB-INF目录下的web.xml中说明刚才编写的servlet,内容如下:
<?xml version="1.0" ?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems,Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
<servlet>
<servlet-name> HelloWorldServlet</servlet-name>
<servlet-class> HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name> HelloWorldServlet</servlet-name>
<url-pattern> quickStartServlet</url-pattern>
</servlet-mapping>
</web-app>
web.xml中的<servlet></servlet>和<servlet-mapping></servlet-mapping>对servlet的说明必不可少,否则系统会找不到servlet。