什么是Servlet?
Servlet是Tomcat上提供的一组API。
基于Servlet开发的基本流程
- 初始化:允许程序员注册一个类到Tomcat中,让这个类和HTTP中的一个特定的请求相关联。
- 进入循环(处理很多请求)
· 读取HTTP请求,Servlet解析这个请求字符串,生成一个HttpServletRequest对象
· 根据请求对象生成一个HttpServletResponse对象(表示响应)。根据请求生成响应,这个过程,就是初始化阶段注册的类里面的代码完成的
· 把HttpServletResponse对象转换成HTTP响应,返回给浏览器
Servlet项目简单示例
一:创建一个Maven项目
创建Maven项目的目的就是为了方便依赖的管理和打包
二:引入依赖(Servlet api的jar包)
从Maven中央仓库中下载。
这里我们选择的版本是3.1.0【注意:Servlet的版本需要和Tomcat的版本配套,Tomcat的版本是Tomcat8】
将选中的代码复制到Maven项目的pom.xml文件中的 dependencies 标签里面。
三:编写代码
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/*
* @WebServlet是Servlet中提供的注解
* 功能就是把类和HTTP特定请求进行关联
* 根据HTTP请求URL的路径来进行关联的
*
* 如果Tomcat收到一个路径为/helloServlet的请求,就会调用到HelloServlet的代码
* 如果请求是GET请求,就会调用HelloServlet。doGet方法
* 如果请求是POST请求,就会调用HelloServlet.doPost方法
* */
@WebServlet("/helloServlet")
// 创建的代码,需要继承自HttpServlet类,然后才能让这个类被Tomcat给调用到
public class HelloServlet extends HttpServlet {
// 重写doGet方法之后,就不需要手动调用doGet,而是由Tomcat自动调用
// 也不需要手动创建HelloServlet实例,也是由Tomcat自动创建实例
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//super.doGet(req, resp);
resp.getWriter().write("Hello Servlet");
}
}
四:创建一些必要的目录和文件
在main文件夹下创建以下文件夹和文件
在web.xml文件里放入以下代码
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
</web-app>
五:打包程序
这里的打包操作比较简单,直接基于Maven来打包
双击package进行打包
打包成功
打出来的包
但是,由于Tomcat不能识别jar格式的包,jar包一般是使用java -jar命令来运行。而应该打成一个war格式的包。在pom.xml修改配置,修改打包类型为war。
<packaging>war</packaging>
修改war包的命名
<build>
<finalName>helloServlet</finalName>
</build>
六:部署程序
将war包放在Tomcat的webapps目录中。
七:验证程序是否正确工作
通过浏览器构造一个特定的请求,访问Tomcat,触发HelloServlet的代码。