作者:tcj
最近刚把J2SE的主要知识点看完,现在准备系统的学习一下Servlet。主要学习资料是尚学堂的视频。写的绝大部分内容都参考了其中的视频。我觉得这个资料还是非常好的。下面介绍一下一个Servlet的HelloWorld程序。(本人觉得学习任何东西先从HelloWorld开始是一个很好的习惯,符合人们的认知规律)。
1.HelloWorldServlet.java
import java.io.IOException;
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloWorldServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest req, HttpServletResponse resp)//Tomcat帮忙调用,不是自己调用
throws ServletException, IOException {
PrintWriter out = resp.getWriter();
out.println("<html><head><title></title><body>hello world!</body></head></html>");
out.flush();
out.close();
}
}
1)首先要把servlet-api.jar导入进去(右键工程名->Build Path ->Configure Build Path -> Add External Jars)。
2)这个程序没有main()方法,必须部署到Servlet容器中(这里是Tomcat)才能执行,doGet()方法是Tomcat帮助你调用,其中的两个参数HttpServletRequest req,HttpServletResponse resp,如果你查J2EE 6.0 AP的话就可以知道HttpServletRequest、HttpServletResponse是两个接口,这里父类引用指向子类对象,实际上传的两个参数应该是
Tomcat帮你封装好的实现了这两个接口的对象--包装好的客户端请求对象(包括客户端的IP地址、form表单的参数)和到客户端的应答对象。(应该是有多态的存在)。PrintWriter流在前面的IO总结中已经提到,这里不做说明。
3)怎么部署到Tomcat?
先说明一下不用IDE自己在Tomcat下新建一个工程。
a.在Tomcat下的webapps文件夹下新建一个文件夹,改为你的工程名,这里我的是“myproject”.
b.在myproject文件下新建WEB-INF文件夹(必须全大写,规定),然后在WEB-INF文件夹下新建一个web.xml,一个classes文件夹(存放编译好的servlet,即.class文件)和一个lib文件夹(存放工程用到的jar包)。
c.配置你的web.xml,典型配置如下:
刚开始的话<servlet></servlet>等标签不是必须的,有一个<web-app>即可。
说明这个之后,再来介绍将Servlet部署到Tomcat下。
第一步.我们把这个程序编译好的HelloWorldServlet.class文件复制到我们的工程中的classes文件夹下
第二步,还要告诉Tomcat什么时候调用doGet()方法。配置web.xml如上图。
<servlet>和<servlet-mapping>中<servlet-name>可以任意,但必须一致。
<servlet-class>应该写类的全名(包名+类名),这里是裸体类,如果放在包中也要写包名。
<url-pattern>必须以“/"开头,代表web应用程序的访问路径,这里是”localhost:8080/myproject/“
(一个小技巧:在Tomcat的config文件夹下配置context.xml为<context reloading = "true">,会帮你监控WEB-INF下的文件,如果改变了就自动reloading)
最后,打开Tomcat,浏览器中输入localhost:8080/myproject/tcj就可以了。
补充说明(重要):
Servlet接口及其子类GenericServlet没有考虑到Http这个协议相关
的细节
我们如果要写响应客户端HTTP请求的程序,就必须继承
HttpServlet这个类,并且重写里面的方法(一般为doGet()或者
doPost()方法)。
其实,这个过程比较繁琐,在IDE中部署项目是非常简单方便的。但是,对于新手来说,作为一种方法,以及了解Tomcat的目录结构有一定的帮助,所以记录了下来,与大家分享。