步骤
开发一个servlet需要如下几个步骤
创建web应用项目
编写servlet代码
部署到tomcat中
创建一个java项目j2ee
File->New->Other->Java->Java Project
输入名称j2ee
这样就创建一个单纯的基于java的项目
导入必须的servlet-api.jar包
右键点击项目 -> properties -> Java Build Path ->Libraries -> Add External JARs
编写HelloServlet
创建 HelloServlet(在Eclipse中创建一个普通类的方式:菜单->File->New->Class)
注意:eclipse创建的时候会自带一个包名j2ee,不要使用这个包名,让包名置空
HelloServlet继承了 HttpServlet
并且提供了一个doGet方法
后续测试该类的时候,会直接在浏览器输入地址
http://127.0.01/hello
在浏览器中输入地址提交数据的方式是GET (参考GET和POST的区别)
所以该Servlet需要提供一个对应的doGet方法
在doGet中,输出html
分别是 标题元素h1 和 当前时间的字符串
import java.io.IOException;
import java.util.Date;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloServlet extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response){
try {
response.getWriter().println("<h1>Hello Servlet!</h1>");
response.getWriter().println(new Date().toLocaleString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
配置web.xml
首先在j2ee下创建目录web
接着再创建目录web/WEB-INF
然后在WEB-INF目录中创建 web.xml
web.xml提供路径与servlet的映射关系
把/hello这个路径,映射到 HelloServlet这个类上
标签下的
与 标签下的 必须一样
<web-app>
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
指定项目输出到classes目录
首先在WEB-INF下创建classes目录
把项目的class文件输出由原来的 j2ee/bin 设置到 j2ee/web/WEB-INF/classes下
步骤:
项目右键->properties->Java Build Path->Source->右下角的 Brower-> 指定位置是 j2ee/web/WEB-INF/classes。
为什么要有这一步? 在ecilpse中默认输出的class是在bin目录下,但是tomcat启动之后,在默认情况下,不会去bin目录找这些class文件,而是到WEB-INF/classes这个目录下去寻找。 所以通过这一步的配置,使得eclipse的class文件输出到WEB-INF/classes目录下,那么这样就和tomcat兼容了
配置tomcat的server.xml 中的<context
为了把 j2ee/web 这个目录部署到tomcat中,进行如下操作:
打开tomcat/conf/sever.xml
在 <Host name=“localhost” 。。。 下面加一句
path="/" 就表示直接通过 http://127.0.0.1/hello 就可以访问网页了。