Backend | Servlet
by Botao Xiao
Servlet
Servlet的优势
服务器上需要一些程序,常常是根据用户输入访问数据库的程序。这些通常是使用公共网关接口(Common Gateway Interface,CGI)应用程序完成的。然而,在服务器上运行 Java,这种程序可使用 Java 编程语言实现。在通信量大的服务器上,JavaServlet 的优点在于它们的执行速度更快于 CGI 程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程,这意味着服务器端处理请求的系统开销将明显降低。
实现过程
- 服务端发送请求到服务器端。
- 服务器端将请求解析,并通过解析的内容装配成Servlet对象。
- 服务器根据Servlet对象进行响应。
- 服务器将响应返回给客户端。
生命周期
- 调用init方法,加载配置环境,生成request, response对象。
- 调用service方法,会解析http报文,判断method方法,调用内部的doPost,doGet…等方法。执行具体的业务。
- 调用destroy方法,释放资源,完成生命周期。
步骤
- Web Client向Servlet容器(tomcat)发出Http请求
- Servlet容器接收Web Client的请求
- Servlet容器创建一个HttpRequest对象,将Web Client请求的信息封装到这个对象中。
- Servlet容器创建一个HttpResponse对象
- Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResponse对象作为参数传递给HttpServlet对象。
- HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息
- HttpServlet调用HttpResponse对象的有关方法,生成响应数据
- Servlet容器把HttpServlet的响应结果传入Web Client。
Servlet的配置
- 通过xml配置
<servlet>
<!-- 定义servlet的名字,并指向了该servlet对应的是哪个类,servlet容器会通过反射生成一个servlet的实例对象, 通过load-on-startup定义加载顺序。 -->
<servlet-name>ServletDemo1</servlet-name>
<servlet-class>gacl.servlet.study.ServletDemo1</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ServletDemo1</servlet-name>
<!-- 配置url和servlet实例的映射。 -->
<url-pattern>/servlet/ServletDemo1</url-pattern>
</servlet-mapping>
- 通过注解配置
@WebServlet(description = "a enter for wechat", urlPatterns = { "/aaa"},loadOnStartup=1)
Reference
Subscribe via RSS