之前对Servlet一直都是云云雾雾的,这里再根据项目做到的程度,再进行Servlet巩固加深。
Servlet本身不能独立运行,需要在一个web应用中运行,而一个web应用是部署在Tomcat中的。
所以开发一个servlet需要如下几个步骤:
- 创建web应用项目
- 编写servlet代码
- 部署到tomcat中
1. 创建一个Java项目j2ee
File->New->Other->Java->Java Project
输入名称j2ee
选择eclipse ee 创建项目的方式,把各种Tomcat、相关配置文件的生成都自动做掉了。
2. 导入必须的servlet-api.jar 包
开发servlet需要用到servlet-api.jar这个包里的相关类,包位于\apache-tomcat-8.5.42\lib文件夹下。
右键点击项目 -> properties -> Java Build Path ->Libraries -> Add External JARs
3. 编写HelloServlet
创建HelloServlet类,继承了HTTPServlet,并提供了一个doGet方法。
在浏览器中输入地址提交数据的方式是GET,所以该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) {
e.printStackTrace();
}
}
}
4. 配置web.xml
- 首先在j2ee下创建目录web
- 接着再创建目录web/WEB-INF
- 然后在WEB-INF目录中创建web.xml
web.xml提供路径与servlet的映射关系,把/hello这个路径映射到HelloServlet这个类上
<servlet>标签下的<servlet-name>与<servlet-mappping>标签下的<servlet-name>必须一样。
<servlet-name>与<servlet-class>可以不一样,但是为了便于理解与维护,一般都会写的一样。一目了然。
<?xml version="1.0" encoding="UTF-8"?>
<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>
5. 指定项目输出到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兼容了。
6. 配置tomcat的server.xml中的<context>
为了把 j2ee/web 这个目录部署到tomcat中,进行如下操作:
打开tomcat/conf/sever.xml
在 <Host name="localhost" 。。。 下面加一句
<Context path="/" docBase="e:\\project\\j2ee\\web" debug="0" reloadable="false" />
path="/" 就表示直接通过 http://127.0.0.1/hello 就可以访问网页了。
如果设置为
<Context path="/j2ee" docBase="e:\\project\\j2ee\\web" debug="0" reloadable="false" />
那么表示需要通过 http://127.0.0.1/j2ee/hello才能访问。
7. 删除tomcat webapps下的根目录
在上一步部署web的时候server.xml中的path 配置为 "/" 与 webapps下的ROOT目录冲突了
所以要删除ROOT目录,如果没有就不用删除了。
由于我个人将上一步的path="/j2ee",故没有删除root目录。
8. 重启tomcat,访问http://127.0.0.1/j2ee/hello