Servlet

一、什么是Servlet

sun公司指定的一种用来拓展web服务器功能的组件规范

1. 拓展web服务器功能

  • web服务器只能处理静态资源的请求 (需要事先将html文件写好),不能够处理动态资源的请求(需要计算,生成动态的html),所以需要拓展。
  • 可以使用Servlet来拓展web服务器功能,当web服务器收到请求之后,如果需要计算,则交给Servlet来处理。

常见的web服务器:apacheiisnginx

2. 组件规范

  1. 什么是组件:符合规范,实现部分功能,并且需要部署到相应的容器里面才能运行的软件模块。

    Servlet就是一个组件,需要部署到Servlet容器里面才能运行。

  2. 什么是容器:符合规范,提供组件运行环境的程序

    Tomcat就是一个Servlet容器,为Servlet提供运行环境(提供网络相关的服务)

JAVAWEB学习(1) — Servlet

二、如何写一个Servlet

  1. 写一个java类,实现Servlet接口或者继承HttpServlet类

    通常我们选择继承HttpServlet类

  2. 编译

  3. 打包,即创建一个具有如下结构的文件夹

    |---- appname(应用名)

    ​ |---- WEB-INF

    ​ |---- classes(放.class文件)

    ​ |---- lib(放.jar文件 该文件夹可选)

    ​ |---- web.xml(部署描述文件)

  4. 部署:将创建好的整个文件夹拷贝到容器相应的位置

    可以将整个文件夹使用jar命令先压缩成.war为后缀的文件,然后再拷贝

  5. 启动容器,访问Servlet

    http://ip:port/appname/url-pattern

    :url-pattern在web-xml当中设置

三、Servlet是如何运行的

比如,在浏览器地址栏输入 http://ip:port/day01/hello

  1. 浏览器依据ip和port建立连接
  2. 浏览器将相关数据放到请求数据包里面,然后发送给服务器
  3. 服务器解析请求数据包,将解析到的数据添加到request对象,同时创建一个response对象
  4. 服务器创建Servlet对象,然后调用该对象的service方法
    • 服务器会将request和response对象作为参数传递过来,开发人员只需要调用这两个方法的对象就可以了,不用考虑网络相关的问题。
    • 比如要读取请求数据包中的内容,只需要调用request对象的方法就可以了。类似的,要向浏览器发送处理结果,只需要调用response对象的方法就可以了
  5. 服务器从response对象中获的处理结果,然后创建响应数据包并发送给浏览器
  6. 浏览器解析响应数据包,生成相应的页面

JAVAWEB学习(1) — Servlet

四、常见的问题

  • 404

    1. 含义:服务器依据请求路径找不到对应的资源

      404是一个状态码,状态码是一个三位数字,表示服务器处理请求的一种状态

    2. 产生的原因:

      • 请求路径写错

        要按照 http://ip:port/appname/url-pattern 来写

      • 应用没有部署或者部署失败

  • 500

    1. 含义:系统出错

    2. 产生的原因

      • 没有严格的按照规范来写代码(包括部署描述文件写错)

      • 代码不严谨

        比如,对请求参数不做检查,直接做类型转换

  • 405

    1. 含义:找不到处理方法
    2. 产生的原因
      • 没有正确override HttpServlet的service()方法

相关文章: