Featured image of post java工具之Servlet

java工具之Servlet

本文阅读量

Servlet

什么是Servlet

Servlet 是运行在Web服务器中的小型java程序,是Java提供的一门动态web资源开发技术。通常通过HTTP协议接收和响应来自于客户端的请求。

Servlet 是JavaEE规范之一,其实就是一个接口(定义Servlet需实现Servlet接口 或 继承HttpServlet) ,并由web服务器运行Servlet。

入门程序

**需求:**使用Servlet开发一个Web应用,浏览器发起请求 /hello 之后,给浏览器返回一个字符串 “Hello Xxx”。

步骤:

1). 准备:创建maven项目(设置打包方式为war),导入Servlet坐标(provided)

1
2
3
4
5
6
7
8
<!--设置打包方式为war包,默认是jar包-->
<packaging>war</packaging>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <scope>provided</scope> <!--主程序、测试程序使用,不参与打包-->
</dependency>

2). 定义一个类,实现Servlet接口(继承HttpServlet),并实现所有方法。在Servlet类上使用@WebServlet注解,配置该Servlet的访问路径。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
@WebServlet(urlPatterns = "/hello")
public class HelloServlet2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //接收请求参数
        String name = request.getParameter("name");
        //响应结果
        String respMsg = "<h1>Hello, " + name + " ~</h1>";
        response.getWriter().write(respMsg);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

3). 将开发好的Servlet部署在外部的Tomcat服务器中运行。

选择 Edit Configurations

选择 Tomcat Server

点击 Deployment 选择要部署的项目。

点击上方的小三角 ,启动Tomcat 服务。

启动完毕,会看到Tomcat输出的日志。

4). 打开浏览器,访问测试 http://localhost:9000/demo01/hello

注意事项

  1. Servlet项目打包方式需要设置为 war。

    1
    
    <packaging>war</packaging>
    
  2. servlet-api 依赖的作用范围 <scope>必须设置为 provided

    1
    
    <scope>provided</scope>
    

执行流程

Servlet的入门程序我们都已经完成了,并将其部署到了Tomcat服务器中进行测试,可以正常访问到Servlet程序。 那接下来,我们就来研究一下Servlet的执行流程。

研究Servlet的执行流程,主要就是研究,我们在浏览器地址栏访问 http://localhost:8080/servlet-demo/hello?name=Tomcat,是如何访问到我们的服务中部署的servlet-demo这个应用的。

1). 定位服务器

通过url地址中的ip/主机 与 端口号 http://localhost:8080,首先会定位到我们要访问的Web服务器。

而在一个web服务器中,是可以部署多个应用程序的。那我们具体要访问到那个项目呢 ? 接下来,我们再来看如何定位到要访问的应用程序的。

2). 定位项目

通过端口号之后的 servlet-demo,就可以定位到Web服务器中部署的应用。

而我们知道在一个应用中呢,是可以有多个Servlet程序的,那如何定位到要访问的是哪一个Servlet呢 ?

3). 定位Servlet

那么通过请求路径中的最后一个部分 /hello 就可以知道我们要访问的Servlet程序是 HelloServlet,因为 HelloServlet 的请求路径是 /hello

4). 执行Servlet

定位到Servlet程序后,那接下来,就会指定这个Servlet程序,那具体调用Servlet程序中的哪个方法呢 (doGetdoPost) ?

由于我们再浏览器地址栏发起的请求,请求方式都是Get,所以Web服务器会自动调用Servlet的 doGet 方法。

  • Servlet 对象是由谁创建的,Servlet的doGet方法是由谁调用的?
    • Servlet对象由Web服务器(Tomcat)创建,Servlet方法由Web服务器(Tomcat)调用。
  • HttpServletRequest:用于封装所有的请求数据。
  • HttpServletResponse:用于封装所有的响应数据。
使用 Hugo 构建
主题 StackJimmy 设计